我正在开发一个依赖于非托管 DLL 的 .NET Core 2.1 库。我还想将非托管 DLL 包含在 NuGet 包中。我遇到的问题是,如果我尝试指定中的所有信息.csproj
文件,该dotnet build
进程抛出以下警告:
warning NU5100: The assembly 'content\lib\subdir\somedll.dll' is not
inside the 'lib' folder and hence it won't be added as a reference
when the package is installed into a project. Move it into the
'lib' folder if it needs to be referenced.
我知道我可以通过编写一个来嵌入非托管DLL.nuspec https://stackoverflow.com/questions/47400472/include-unmanaged-dll-from-nuget-package-to-web-deploy-package(事实上,我有)。然而,似乎我不需要用最新的来写一个.csproj
文件格式。
问题:我怎样才能使用.csproj
文件以将非托管 DLL 嵌入 NuGet 包中?
- 指定
<ItemGroup><None>
in the .csproj
file 似乎包含输出目录中的文件,但它们不会将其放入 NuGet 包中。
- 指定
<ItemGroup><Content>
在里面.csproj
file 会将它们添加到 NuGet 包中,但位于 Content 目录而不是 Lib 目录中。
如果我真的必须同时拥有.csproj
文件和一个.nuspec
文件中,放置元数据的最佳实践是什么?在里面.csproj
文件?在里面.nuspec
文件?维护并同步两者?工具链中有什么东西可以为我做到这一点吗?
我正在使用 Visual Studio Code V1.24 和 .NET Core/dotnet V2.1。
您需要在元素上指定显式包路径元数据,以便 dll/so/dylib 文件最终位于包中的正确位置,以便将其识别为运行时特定的本机 DLL:
<ItemGroup>
<None Include="unmanaged.dll" Pack="true" PackagePath="runtimes\win-x64\native" />
</ItemGroup>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)