dotnet pack 生成一个没有应用 copyToOutput 的包

问题描述

我正在尝试使用 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>

所以文件copyToOutput="true" 属性

但是如果我们尝试将其安装到 .NET Framework 控制台应用程序项目中,我们将获得以下结构:

enter image description here

所以我们在解决方案中有 test.dlltest.dylib。看起来不错,但是让我们来看看 csproj:

<ItemGroup>
  <None Include="App.config" />
  <None Include="packages.config" />
  <None Include="test.dylib" />
</ItemGroup>
<ItemGroup>
  <Content Include="test.dll" />
</ItemGroup>

嗯... test.dylib 添加Nonetest.dll 添加Content 并且...没有任何项目设置了 copyToOutputDirectory。如果我们构建项目,我们显然不会将库复制到输出目录。

也许我做错了什么?

我已经创建了 the issue on dotnet/sdk 存储库,但它似乎不会很快得到解决,所以我在这里问。也许有人知道一个黑客或秘密魔法来强制 dotnet pack 按预期工作。

是的,我可以创建具有所需属性.targets 文件并将其打包到一个包中,一切都会起作用。但我想 dotnet pack 应该依靠上面显示属性为我们做这件事。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...