Как избежать, чтобы мой собственный пакет nuget перезаписывал целевой проект web.config и файл global.aspx при установке моего пакета
Я создал один пакет nuget, используя следующий шаг.
- Сначала я создал одно приложение Asp.net Mvc
- Я создал spec-файл, используя команду nuget spec
- Затем я отредактировал $id$,$version$,$author$,$description$ ect..
- Затем я создал пакет, используя следующую команду.
- пакет nuget myproject.csproj -Build -Properties Configuration=Release
- Был создан один myproject.1.0.0.0.nupkg
- Затем я копирую файл А в C:\LocalNuGetFeed\myproject.1.0.0.0.nupkg
- Я уже настраиваю локальный репозиторий в моем 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.