Как избежать, чтобы мой собственный пакет nuget перезаписывал целевой проект web.config и файл global.aspx при установке моего пакета

Я создал один пакет nuget, используя следующий шаг.

  1. Сначала я создал одно приложение Asp.net Mvc
  2. Я создал spec-файл, используя команду nuget spec
  3. Затем я отредактировал $id$,$version$,$author$,$description$ ect..
  4. Затем я создал пакет, используя следующую команду.
  5. пакет nuget myproject.csproj -Build -Properties Configuration=Release
  6. Был создан один myproject.1.0.0.0.nupkg
  7. Затем я копирую файл А в C:\LocalNuGetFeed\myproject.1.0.0.0.nupkg
  8. Я уже настраиваю локальный репозиторий в моем VS

Моя проблема: когда я устанавливаю этот пакет из любого другого проекта, он задает следующий вопрос. Но по моему требованию я не хочу перемещать этот файл в целевой проект. Предположим, что пользователь дал ему перезаписать целевой файл проекта, потому что я столкнулся с проблемой ссылки на множество.

**File Conflict
File 'Web.config' already exists in project 'CRM'. Do you want to overwrite it?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "N"): 

File Conflict
File 'Global.asax' already exists in project 'CRM'. Do you want to overwrite it?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "N"):** 

Но в моем пакете я не хочу перемещать эти два файла из пакета в целевой проект.

Есть ли способ избежать трансформации Global.asax и Web.config при переходе от пакета к целевому проекту.

В моем файле.nuspec я добавил следующую строку

<files>  
     <file src="Web.config" target = "" exclude="Web.config"/> 
    <file src="*.asax" target = "" exclude="*.asax"/>
    <file src="Content\*.css" target="Content\" />
    <file src="Scripts\*.js" target="Content\Scripts\" />
  </files>

Но он включает в себя файл web.config и файл Global.aspx в папке Content. Мой результирующий пакет выглядит следующим образом

myproject.1.0.0.0
      >> Content
           ....css
           >>Script
                ..Js file
           web.config
           Global.asax  

3 ответа

Я решил эту проблему, используя следующую команду для упаковки пакета

nuget pack CrmHtmlController.csproj -IncludeReferencedProjects -Exclude **\*.config;**\*.asax

поэтому он исключает все файлы.congig и.asax из пакета.

Nuget включает в свой пакет файл web.config, потому что действие по сборке файла web.config - это "Content". Это по умолчанию и необходимо для классической публикации сайта asp.net.

Если вы этого не хотите, вероятно, потому что ваша сборка является только компонентом другого веб-сайта, вы можете изменить действие сборки на "Нет", и nuget больше не будет его выполнять.

Посмотрите на ваш файл.nuspec. Это просто файл XML, поэтому вы можете открыть его в любом текстовом редакторе. Посмотрите, как он определяет, какие файлы включать в <package><files>? Удалите те файлы, которые вам не нужны. Удобным инструментом, если вы хотите сделать это с помощью графического интерфейса, является NuGet Package Manager.

Другие вопросы по тегам