Я генерирую пакет nuget из проекта с этой командой в событии post-build. переменная %conf%
установлена в правильную конфигурацию (отладка или выпуск), а %1
- это имя проекта (например, "MyCompany.MyProject" ).
nuget pack -Prop Configuration=%conf% "%1.csproj" -exclude *.sql -IncludeReferencedProjects
Этот пакет предназначен только для нашего собственного использования, он никогда не будет опубликован в nuget. Он заканчивается в нашем частном репозитории.
В проекте есть файл, который установлен на generate action : content
и copy local : always
. (Моя визуальная студия на французском языке, так что я не уверен на 100% в результате трюка). Назовите его importantfile.xml
.
В сгенерированном пакете я получаю следующую структуру:
- content
- importantfile.xml
- lib
-net45 (.NetFramework,Version=v4.5)
-MyCompany.MyProject.dll
Что хорошо, я хочу, чтобы importantfile.xml
был развернут в пакете, потому что, ну, этот файл важен!
Когда я устанавливаю пакет в другой проект, importantfile.xml
развертывается в корне проекта. Это нормально. Но он не установлен в copy local : always
.
Мне нужно importantfile.xml
быть copy local : always
в этом проекте, где я устанавливаю свой пакет.
Как я могу это достичь?
Примечания:
Я могу установить copy local : always
в файл сразу после установки пакета, что не имеет большого значения. Я бы жил с ним, если последующие обновления пакета позволят это свойство как есть, чего не происходит. При обновлении пакета copy local
сбрасывается на never
(как указано здесь).
В папке проекта есть файл nuspec, вот он:
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<copyright>Copyright 2014</copyright>
<tags>some random tags</tags>
</metadata>
</package>