我有一个Visual Studio 2010项目,该项目引用了一些第三方组件。它们的程序集附带了XML文档文件,这对我们(也是唯一的我们)开发人员很有用。无论何时构建项目(在调试或发布模式下),这些XML文件都将复制到构建目录。
我似乎找不到设置或开关来禁用这些XML文件的副本到构建目录,无论是在Visual Studio中还是通过MSBuild。构建后的脚本可能是一个选项,但却是一个有臭味的选项。有任何想法吗?谢谢。
答案 0 :(得分:106)
构建项目时,将通过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文件都将被复制到输出。目录
答案 1 :(得分:0)
Visual Studio项目文件与任何msbuild文件具有相同的格式。因此,如果配置名称为“Release”,则可以手动将条件添加到相应的部分中,以便不复制xml文件。
应该改变
<ItemGroup>
到
<ItemGroup Condition="'$(CONFIG)'=='RELEASE'">
或类似的东西。
答案 2 :(得分:-3)
如果.xml / .pdb被标记为构建操作“内容”(等),则可以将它们更改为“无”。您还应确保复制到构建输出 false 。
这两个都设置了吗?
答案 3 :(得分:-4)
将XML文件复制到发布版本的文件夹中会出现什么问题?在我看来,这很好,而真正的问题是代码选择文件将它们放在安装程序中。在我看来,从你自己的bin \ release文件夹中获取第三方dll并不是一个好习惯。我的安装程序会从源代码树中的自己的文件夹中选择第三方dll。
答案 4 :(得分:-5)
该设置位于相关项目的属性中,在“构建”选项卡下,取消选中“XML文档文件”。对于。* proj文件中的构建配置,它也是适用的<DocumentationFile>
下的名为<PropertyGroup>
的MSBuild属性。