#nuget-package
#nuget-package
Вопрос:
Я создал пакет nuget с такой структурой:
NugetName/lib/net/*.dll
NugetName/contentFiles/A/*.dll
NugetName/contentFiles/B/*.dll
> <?xml version="1.0" encoding="utf-8"?> <package
> xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
> <metadata>
> <id>..</id>
> <version>1.0.0.22</version>
> <title>...</title>
> <authors>...</authors>
> <owners>..</owners>
> <requireLicenseAcceptance>false</requireLicenseAcceptance>
> <description>...</description>
> <contentFiles>
> <files include="contentFilesA" buildAction="content" copyToOutput="true" flatten="true" />
> <files include="contentFilesB" buildAction="content" copyToOutput="true" flatten="true" />
> </contentFiles>
> </metadata>
> <files>
> <file src="BuildDebug*.dll" target="libnet" />
> <file src="BuildDebugA*.dll" target="contentFilesA" />
> <file src="BuildDebugB*.dll" target="contentFilesB" />
> </files>
> </package>
И теперь мне нужно скопировать папки A и B в выходную папку проекта, но это не так!
После установки пакета nuget копируются только файлы NugetName/lib/net/* .dll, а файлы A и B — нет!
Ответ №1:
После тестирования различных способов я пришел к этому решению. Сначала я отправил файлы dll в Buildпапку вместо папки содержимого.
<files>
<file src="BuildDebug*.*" target="libnet" />
<file src="BuildDebugA*.dll" target="buildA" />
<file src="BuildDebugB*.dll" target="buildB" />
<file src="MyTargetFile.targets" target="buildMyTargetFile.targets" />
</files>
Затем я создал целевой файл в Buildпапке.
Это новая структура моего пакета nuget:
•Build
•A
•*.dll
•B
•*.dll
•MyTargetFile.target
•lib
• net
•*.dll
В целевом файле я определил, как скопировать папку с помощью MSBuild:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<NativeLibs Include="$(MSBuildThisFileDirectory)***.dll" />
<None Include="@(NativeLibs)">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
Наконец, я создал новый пакет nuget и установил его, и когда я создал проект, папки A и B копируются в выходную папку.