如何设置输出子文件夹以在构建时将引用 dll 复制到

Posted

技术标签:

【中文标题】如何设置输出子文件夹以在构建时将引用 dll 复制到【英文标题】:How to set output subfolder to copy reference dll to on build 【发布时间】:2021-08-03 23:40:39 【问题描述】:

项目引用 dll 在构建时复制到输出目录的根目录(如果在 .csproj 处为此引用设置了 <Private>True</Private>,或者在 VisualStudio 的引用属性中将 Copy Local 设置为 True

我有一些第 3 方 dll 的 NuGet 包依赖项,并希望在构建时将此 dll 复制到输出目录的某个 子文件夹。如何做到这一点?

PS:我看过this 的问题。但是没有适合我的情况的答案。

【问题讨论】:

【参考方案1】:

我没有找到更好的方法,只是让它们被复制到输出根目录,然后通过将此指令添加到 .csproj 将它们移动到我的子文件夹:

  <!-- Move some dlls into /MySubfolder -->
  <PropertyGroup>
    <PrepareForRunDependsOn>$(PrepareForRunDependsOn);MyMoveDllsToOutputSubdir</PrepareForRunDependsOn>
  </PropertyGroup>
  <Target Name="MyMoveDllsToOutputSubdir">
    <Move SourceFiles="$(OutDir)\Aaa.dll;$(OutDir)\Aaa.pdb" DestinationFolder="$(OutDir)\MySubfolder" />
  </Target>

【讨论】:

以上是关于如何设置输出子文件夹以在构建时将引用 dll 复制到的主要内容,如果未能解决你的问题,请参考以下文章

如何在构建时将其他文件包含到 C# 的输出目录中?

未复制到输出目录的引用的依赖关系

如何防止引用程序集的嵌入式依赖项被复制到Visual Studio中的输出文件夹?

Qt - 如何将 Qt 运行时 DLL 复制到输出路径

让 NuGet 包输出文件

防止将引用的程序集PDB和XML文件复制到输出