在MSBuild中扩充项目输出文件集

时间:2014-12-24 05:10:41

标签: msbuild msbuild-4.0

是否可以在MSBuild 4.0和/或4.5中指定其他文件,通过其依赖项将其视为项目的清单输出,并在复制时使用二进制项目输出进行复制?理想情况下,我想在构建期间在.dll旁边创建一些文件,并且希望这些文件在根据它复制到项目目录时保留在与.dll相同的文件夹中。

如果不清楚,我想的是.pdb和C#编译器创建的文档.xml文件。这些文件专门处理:每当另一个项目请求将.dll本地复制到其二进制目录中时,这些文件都与.dll一起使用。我可以使用自己的特殊文件来扩充此集吗?

1 个答案:

答案 0 :(得分:0)

这是不可能的,这就是原因。实际上,没有项目输出的概念可以在 MSBuild项目之间外部访问。相反,当添加对项目的引用时,SDK提供的构建框架(基于MSBuild脚本)查找与引用的DLL的名称匹配的一些特定文件,并将这些文件与DLL本身复制到当前项目输出中目录(假设CopyLocal已设置,这对于引用的项目可能是正确的。)

在框架v4.0中,这是由任务ResolveAssemblyReference完成的,该任务是从文件%windir%\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets中的同名目标调用的。该任务查找放置在目标DLL旁边的特殊命名文件,包括其matchin PDB文件和XML文档文件。其他文件也被发现,正如我从反编译源推断的那样。

因此,给定项目中的任何内容都不会以某种方式将这些文件标记为"导出"从项目。这种魔力发生在拉动方面。