Есть ли альтернатива контентным файлам с проектами, которые используют packages.config?
У меня есть пакет nuget с содержимым, которое я хочу скопировать в вывод сборки, когда пользователи установят мой пакет. Для этого есть поддержка: NuGet ContentFiles, демистифицированные в NuGet v3.3. Тем не менее, это работает только в проектах, которые используют project.json
, Файлы содержимого не копируются в выходные данные моей сборки, когда у меня есть проект, который использует packages.config
,
Есть ли альтернатива или обходной путь, который я мог бы использовать, чтобы заставить мой пакет NuGet работать над проектами, которые используют project.json
или же packages.config
?
1 ответ
Быстрый поиск в Stackru показывает следующий вопрос, который, я думаю, охватывает то, что вы просите:
Установите для файлов содержимого значение "copy local: always" в пакете nuget
Вы можете поместить свои файлы в каталог Content внутри пакета NuGet.
В вашем файле.nuspec:
<file src="css\mobile\*.css" target="content\css\mobile" />
Когда вы установите его в свой проект, он добавит каталог css\mobile в ваш проект и файлы в этом каталоге.
Однако это только добавляет файлы в проект. Чтобы их можно было скопировать в выходной каталог, вам потребуется использовать сценарий PowerShell, чтобы изменить локальную информацию о копировании элемента проекта.
Альтернативой, возможно, лучшим способом будет использование пользовательского файла MSBuild .targets. Это будет добавлено в качестве импорта в ваш проект, а затем внутри вашего файла.targets вы можете добавить нужные файлы и указать копию для вывода информации напрямую, как если бы она была частью вашего проекта. Содержимое файла NuGet .nupkg:
\build
\Net45
\MyPackage.targets
\Foo.txt
MyPackage является идентификатором пакета NuGet выше.
Внутри файла.targets вы указываете файлы (например, Foo.txt).
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="Foo.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>