#c #dll #visual-studio-2015 #nuget #nuspec
#c #dll — файл #visual-studio-2015 #нагет #nuspec #dll #nuget
Вопрос:
У меня есть проект Visual Studio C , который создает DLL для архитектур x86 и x64 в режимах отладки и выпуска. Я должен опубликовать этот пакет как пакет nuget в соответствии с этими спецификациями. Итак, у меня должно быть 4 библиотеки DLL в моем пакете. Мой вопрос заключается в том, как указать x86, x64 в моем файле nuspec. Я думал, следует ли указывать это в поле target каждого файла, но я не могу найти никакой документации о том, как точно указать эти спецификации. Мой файл nuspec выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- Required elements-->
<id>counterpartylookup</id>
<version>0.0.0</version>
<description>counterpartylookup/v140/win32/x86/x64</description>
<authors>***</authors>
<!-- Optional elements -->
<!-- ... -->
<owners>...</owners>
<licenseUrl>***</licenseUrl>
<projectUrl>***</projectUrl>
<dependencies>
***
</dependencies>
<tags> {vc140, win32, x64, x86, dynamic, C , native}</tags>
</metadata>
<files>
<file src="..sharedv140binx64ReleaseCounterPartyLookup.dll" target="lib" />
<file src="..sharedv140binx64DebugCounterPartyLookup.dll" target="lib" />
<file src="..sharedv140binx86ReleaseCounterPartyLookup.dll" target="lib" />
<file src="..sharedv140binx86DebugCounterPartyLookup.dll" target="lib" />
</files>
<!-- Optional 'files' node -->
</package>
Комментарии:
1. Вы хотели сослаться на этот пакет c nuget, основанный на конкретной платформе net project?
Ответ №1:
Мой вопрос в том, как указать x86, x64 в моем файле nuspec.
Вам необходимо поместить библиотеки DLL в папку с именем runtimes в подпапках с именем {platform}-{architecture}lib{framework} или {platform}-{architecture}native.
Структура папок:
runtimes
x86
Debug
Release
x64
Debug
Release
Файл nuspec имеет вид:
<files>
<file src="..sharedv140binx64ReleaseCounterPartyLookup.dll" target="runtimes x64Release " />
<file src="..sharedv140binx64DebugCounterPartyLookup.dll" target=" runtimes x64Debug " />
<file src="..sharedv140binx86ReleaseCounterPartyLookup.dll" target=" runtimes x86Release " />
<file src="..sharedv140binx86DebugCounterPartyLookup.dll" target=" runtimes x86Debug " />
</files>
Связанные документы: папки для конкретной архитектуры и добавление собственных библиотек реализации.
Ответ №2:
Или вы могли бы попробовать другой:
1) создайте файл с именем <package_id>.targets
file в папке вашего проекта. На вашей стороне вы должны назвать его как counterpartylookup.targets
:
запишите их под ним:
<Project>
<ItemGroup Condition="'$(Platform)'=='x64' and '$(Cofiguration)'=='Debug'">
<Reference Include="$(MSBuildThisFileDirectory)..Referencex64DebugCounterPartyLookup.dll"></Reference>
</ItemGroup>
<ItemGroup Condition="'$(Platform)'=='x86' and '$(Cofiguration)'=='Debug'">
<Reference Include="$(MSBuildThisFileDirectory)..Referencex86DebugCounterPartyLookup.dll"></Reference>
</ItemGroup>
<ItemGroup Condition="'$(Platform)'=='x64' and '$(Cofiguration)'=='Release'">
<Reference Include="$(MSBuildThisFileDirectory)..Referencex64ReleaseCounterPartyLookup.dll"></Reference>
</ItemGroup>
<ItemGroup Condition="'$(Platform)'=='x86' and '$(Cofiguration)'=='Release'">
<Reference Include="$(MSBuildThisFileDirectory)..Referencex86ReleaseCounterPartyLookup.dll"></Reference>
</ItemGroup>
</Project>
2) измените свой файл nuspec:
<files>
<file src="..sharedv140binx64ReleaseCounterPartyLookup.dll" target="Referencex64Release" />
<file src="..sharedv140binx64DebugCounterPartyLookup.dll" target="Referencex64Debug" />
<file src="..sharedv140binx86ReleaseCounterPartyLookup.dll" target="Referencex86Release" />
<file src="..sharedv140binx86DebugCounterPartyLookup.dll" target="Referencex86Debug" />
<file src="counterpartylookup.targets" target="build"/>
</files>
3) повторно упакуйте свой проект c , а затем перед установкой нового вы должны удалить все кэши nuget в разделе C:Usersxxx(current user).nugetpackages