Я пытаюсь создать стандартный пакет содержимого Nuget для файлов .NET (без управляемых сборок), который будет использоваться сборками .NET Framework. Моя цель - вывести эту папку с файлами в папку bin потребляющей сборки.
Этот вопрос похож на Добавить собственные файлы из пакета NuGet в выходную директорию проекта (и использует этот пакет nuget http://www.nuget.org/packages/Baseclass.Contrib.Nuget.Output/),, но мне требуется, чтобы мой пакет nuget был .NET Standard
Я добавил файлы в сборку в разделе contentfiles \ any \ any \ myfiles и добавил следующее в раздел метаданных файла nuspec:
<contentFiles>
<files include="any/any/myfiles/*" buildAction="None" copyToOutput="true" />
</contentFiles>
Когда я пытаюсь добавить это в сборку .NET Framework, я получаю сообщение об ошибке
Could not install package 'myPackage 1.0.0'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.6.2', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.
Я также попытался добавить файлы в корень проекта и добавить следующее под элементом метаданных в файле nuspec:
<files>
<file src="myfiles\**\*" target="myfiles" />
Полный файл nuspec:
<?xml version="1.0"?>
<package>
<metadata>
<id>myPackage</id>
<version>1.0.0</version>
<title>myPackage</title>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>my files/description>
<releaseNotes></releaseNotes>
<tags></tags>
<contentFiles>
<files include="any/any/myfiles/*" buildAction="None" copyToOutput="true" />
</contentFiles>
</metadata>
<files>
<file src="myfiles\**\*" target="myfiles" />
</files>
</package>
Кроме того, в csproj я также изменил элемент TargetFramework на
<TargetFrameworks>netstandard1.3;netstandard2.0;net40;net45;net46</TargetFrameworks>
РЕШЕНИЕ:
В конце концов, это решение. «myFiles» - это папка, которая находится в корне проекта и содержит множество различных файлов и подкаталогов.
файл nuspec:
<?xml version="1.0"?>
<package >
<metadata>
<id>myPackage</id>
<version>1.0.0</version>
<title>My Package</title>
<tags></tags>
<dependencies>
<group targetFramework=".NETStandard2.0" />
<group targetFramework=".NETFramework4.6.2" />
</dependencies>
<contentFiles>
<!-- this sets "CopyIfNewer" on all files in the project that references this package -->
<files include="**/*" buildAction="None" copyToOutput="true"/>
</contentFiles>
</metadata>
<files>
<file src="myFiles\**\*" target="contentFiles\any\any\myFiles"/>
</files>
</package>
Похоже, что в проекте, который ссылается на пакет nuget, есть папка с именем "myfiles" (со значком ссылки на все файлы), которая будет скопирована в папку bin при сборке.