【问题标题】:NuGet package: Copy DLLs to subdirectories in buildoutputNuGet 包:将 DLL 复制到构建输出中的子目录
【发布时间】:2020-06-22 13:14:36
【问题描述】:

我想创建一个 NuGet 包,将 DLL 复制到输出目录的子目录中。

这是我的包的文件夹结构:

  • 包根
      • net48
        • x64
          • First.dll
          • Second.dll
        • x86
          • First.dll
          • Second.dll

应将 DLL 复制到输出文件夹中的相应子目录,如下所示:

  • 输出目录
    • x64
      • First.dll
      • Second.dll
    • x86
      • First.dll
      • Second.dll

我试过nuspec文件中的files属性:

<files>    
  <file src="lib\net48\amd64\*.dll" target="amd64\" />
  <file src="lib\net48\x86\*.dll" target="x86\" />
</files>

在构建包时,我使用的每个 DLL 都会出现以下警告:

警告:NU5100:程序集“amd64\First.dll”不在内部 'lib' 文件夹,因此它不会被添加为参考 包被安装到一个项目中。如果将其移动到“lib”文件夹中 它需要被引用。

还原所有包后,既没有创建子文件夹,也没有将 DLL 复制到输出文件夹中。

如何配置 nuspec 文件以便将 DLL 复制到子文件夹中?我需要 install.ps1 脚本吗?

【问题讨论】:

    标签: nuget


    【解决方案1】:

    我正在使用 .NET Core(和 .NET 5) 项目。并将一个组件与多个项目 DLL 打包在一起。可以通过修改项目文件来做到这一点。

    因此,如果您还有 .NET Core 项目,请将以下部分添加到您的 .csproj 文件(应打包的项目中)以打包 DLL,根据需要更改 DLL 名称和路径强>。

    <ItemGroup>
      <_PackageFiles Include="$(OutputPath)\First.dll">
        <BuildAction>None</BuildAction>
        <PackagePath>x64</PackagePath>
      </_PackageFiles>
      <_PackageFiles Include="$(OutputPath)\First.dll">
        <BuildAction>None</BuildAction>
        <PackagePath>x86</PackagePath>
      </_PackageFiles>
    </ItemGroup>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 2016-05-12
      • 2016-03-01
      • 1970-01-01
      相关资源
      最近更新 更多