如何使 MSBuild 自动将所有间接引用复制到输出(bin)文件夹

Posted

技术标签:

【中文标题】如何使 MSBuild 自动将所有间接引用复制到输出(bin)文件夹【英文标题】:How to make MSBuild to automatically copy all indirect references to output (bin) folder 【发布时间】:2010-11-28 08:42:19 【问题描述】:

主题

“自动”在这里是必不可少的。不得复制来自 GAC 的参考资料。

我见过例如VS2008.NET: Getting a referenced project’s dependencies to copy to main project’s bin folder,这对我来说并不有趣。我希望自动复制所有依赖项。

【问题讨论】:

幸运的是,我自己回答了这个问题。如果你有兴趣,the solution is here。 如果除了您的博客之外,您还可以在此处发布它作为答案并接受它,这将非常有用。 很遗憾,您的博客现在不被接受。你能在这里写出解决方案吗? @AlexeySubbota:Wayback Machine 拥有它here。 【参考方案1】:

对于 C++ 项目,即 *.vcxproj 设置 <OutDir> 属性。

对于 C# 项目,即 *.csproj 设置 <OutputPath> 属性。

确保没有任何内容会覆盖这些属性。在我为主要、大型产品构建的所有这些年中,我从来没有做过任何不同的事情。如果你必须做任何其他聪明的 hack,那你肯定做错了什么。

【讨论】:

【参考方案2】:

使用构建后事件 编辑

XCOPY c:/additionlib $(OutDir)

【讨论】:

这样的 Postbuild 事件存在很多性能问题,有更好的选择,即使用指定输入属性的自定义目标来防止 msbuild 一遍又一遍地复制文件。 对。永远不要使用构建后事件。在过去的 10 年中,我总是在找到它们时删除构建后事件,并将它们替换为真正的 msbuild 目标。

以上是关于如何使 MSBuild 自动将所有间接引用复制到输出(bin)文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MSBuild 引用不同版本的 dll

msbuild不会将引用的本机项目的输出复制到c#project out dir

如何使用命令行msbuild部署VS2012网站项目而不进行预编译?

Visual Studio/MSBuild 将引用的类库的 app.config 作为 *.dll.config 复制到当前项目的 bin 文件夹

MSBuild + Visual Studio:为解决方案中的所有项目自定义默认“复制本地”

NuGet 自动包还原不适用于 MSBuild