Это действительно зависит от того, является ли ваш клиентский проект собственным или управляемым.
Если ваш проект является собственным, вам нужно сделать следующее:
0) Предположим, у нас есть следующее структура:
- bin
- Win32
- yourlibrary.lib
- yourlibrary.dll
- x64
- yourlibrary.lib
- yourlibrary.dll
- include
- YourPackage.nuspe c
- YourPackage.targets
1) YourPackage.nuspe c файл, который содержит что-то вроде этого:
<?xml version="1.0"?>
<package >
<metadata>
<id>YourPackage</id>
<version>1.0.0.0</version>
<title>Your Packaged Software</title>
<authors>your name</authors>
<owners>your name</owners>
<iconUrl>link to icon</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Description for your package</description>
<releaseNotes>Fixed that, added this</releaseNotes>
<copyright>Copyright by you</copyright>
<tags>native yourpackage library</tags>
</metadata>
<files>
<!-- .targets file that should be included in the dependee project automatically by Nuget -->
<file src="YourPackage.targets" target="\build\native\YourPackage.targets" />
<!-- Include header files for development -->
<file src="include\**" target="\lib\native\include" />
<!-- Binaries -->
<file src="bin\**" target="\lib\native\bin" />
</files>
</package>
2) Затем добавьте файл .target:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<ItemDefinitionGroup>
<!-- COMPILATION -->
<!-- header files (.h) that should be copied -->
<ClCompile>
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)..\..\lib\native\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<!-- This is just for the convinience, so you can check within C++ code if the package is used, i.e.: #ifdef HAS_YOUR_PACKAGE -->
<PreprocessorDefinitions>HAS_YOUR_PACKAGE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<!-- LINKING -->
<!-- Add static/import library for linking -->
<ItemDefinitionGroup>
<Link>
<AdditionalLibraryDirectories>$(MSBuildThisFileDirectory)..\..\lib\native\bin\$(Platform)\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>yourlibrary.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<!-- DEPLOYMENT -->
<!-- Copy dlls to $(OutDir) -->
<ItemGroup>
<NativeLibs Include="$(MSBuildThisFileDirectory)..\..\lib\native\bin\$(Platform)\*.dll" />
<None Include="@(NativeLibs)">
<Link>%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
3) После всего этого запустите в каталоге пакета: nuget pack YourPackage.nuspec
Это создаст новый пакет nuget, который после Потребление в нативных проектах должно работать.
Важное замечание: у меня это сработало, но иногда загрузка клиентского проекта в VS не удалась.