Есть ли альтернатива контентным файлам с проектами, которые используют 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>
Другие вопросы по тегам