问题描述
我正在尝试使用 dotnet pack
打包几个本机库来创建 NuGet 包,这些库应该在构建包安装到的项目时放置在输出目录中。我在 csproj 中有这些行:
<ItemGroup>
<Content Include="native\*">
<Pack>true</Pack>
<PackagecopyToOutput>true</PackagecopyToOutput>
<PackageFlatten>true</PackageFlatten>
<PackagePath>contentFiles;content</PackagePath>
</Content>
</ItemGroup>
打包后,我在包中有此元数据:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<Metadata>
<id>DualLibClassLibrary</id>
<version>1.0.0</version>
<authors>melanchall</authors>
<owners></owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Dual-lib class library</description>
<copyright>copyright © Melanchall 2021</copyright>
<dependencies>
<group targetFramework=".NETFramework4.5" />
<group targetFramework=".NETStandard2.0" />
</dependencies>
<contentFiles>
<files include="test.dll" buildAction="Content" copyToOutput="true" flatten="true" />
<files include="test.dylib" buildAction="Content" copyToOutput="true" flatten="true" />
</contentFiles>
</Metadata>
</package>
但是如果我们尝试将其安装到 .NET Framework 控制台应用程序项目中,我们将获得以下结构:
所以我们在解决方案中有 test.dll
和 test.dylib
。看起来不错,但是让我们来看看 csproj:
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
<None Include="test.dylib" />
</ItemGroup>
<ItemGroup>
<Content Include="test.dll" />
</ItemGroup>
嗯... test.dylib
添加为 None
,test.dll
添加为 Content
并且...没有任何项目设置了 copyToOutputDirectory
。如果我们构建项目,我们显然不会将库复制到输出目录。
也许我做错了什么?
我已经创建了 the issue on dotnet/sdk 存储库,但它似乎不会很快得到解决,所以我在这里问。也许有人知道一个黑客或秘密魔法来强制 dotnet pack
按预期工作。
是的,我可以创建具有所需属性的 .targets
文件并将其打包到一个包中,一切都会起作用。但我想 dotnet pack
应该依靠上面显示的属性为我们做这件事。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)