如何防止发布模式构build的XML文档文件的副本?

我有一个Visual Studio 2010项目引用一些第三方组件。 他们的程序集伴随着XML文档文件,这对我们(也是唯一的)开发人员非常有用。 无论何时build立项目(无论是在debugging还是发行模式下),这些XML文件都被复制到构build目录。

我似乎无法find一个设置或切换到禁用这些XML文件复制到生成目录,在Visual Studio或MSBuild。 后期构build脚本可能是一个选项,但臭的一个。 有任何想法吗? 谢谢。

在生成项目时,通过ResolveAssemblyReference任务收集.xml / .pdb文件。 当调用ResolveAssemblyReference时,会传递相关文件的文件扩展名列表。 该文件扩展名列表捕获在MSBuild属性AllowedReferenceRelatedFileExtensions中 。 默认情况下,该列表将包含“.pdb; .xml”。

如果你想排除所有相关的参考文件被拿起,那么只需重写属性的值,以使相关文件不会有扩展名。 例如,您可以将AllowedReferenceRelatedFileExtensions设置为“ – ”。

您也可以自定义返回的文件列表。 如果只想查找.pdb文件,则需要传入AllowedReferenceRelatedFileExtensions=".pdb" 。 在这种情况下,在.dll / .exe旁边有.pdb文件的任何引用也将被复制。 您也可以使用它复制其他相关文件,这些文件可能不以.pdb / .xml结尾。 例如,如果您有一个名为MyAssembly.dll的引用程序集,并且在同一个文件夹中,则存在MyAssembly.pdb和MyAssembly.foo。如果您设置了AllowedReferenceRelatedFileExtensions=".pdb;.foo"则.pdb和.foo文件都将复制到输出目录。

Visual Studio项目文件具有与任何msbuild文件相同的格式。 因此,如果configuration名称为“Release”,则可以手动将条件添加到相应的部分以不复制您的xml文件。

它应该改变

 <ItemGroup> 

 <ItemGroup Condition="'$(CONFIG)'=='RELEASE'"> 

或者类似的东西

如果.xml / .pdb被标记为构build动作“内容”(等),您可以将它们更改为“无”。 你也应该确保他们的复制到输出是错误的

这两个都设置?

将XML文件复制到发布版本的文件夹中是什么问题? 在我看来,这是好的,真正的问题是代码挑选文件将其放置在安装程序中。 在我看来,从您自己的bin \ release文件夹中拾取第三方dll并不是一个好的做法。 我会让我的安装程序从我的源代码树中的自己的文件夹中选取第三方DLL。

该设置位于正在讨论的项目的“属性”中,在“生成”选项卡下,取消选中“XML文档文件”。 它也是在。* proj文件中用于构buildconfiguration的适用的<PropertyGroup>下的一个名为<DocumentationFile>的MSBuild属性。