代码之家  ›  专栏  ›  技术社区  ›  Humberto

如何防止在发布模式构建中复制XML文档文件?

  •  79
  • Humberto  · 技术社区  · 15 年前

    我有一个Visual Studio 2010项目,它引用了一些第三方组件。它们的程序集附带有XML文档文件,这些文件对我们(并且只有我们)的开发人员很有用。每当构建项目时(在调试或发布模式下),这些XML文件都会复制到构建目录中。

    无论是在Visual Studio中还是通过msbuild,似乎都找不到设置或开关来禁用将这些XML文件复制到生成目录。后期构建脚本可能是一个选项,但很难闻。有什么想法吗?谢谢您。

    5 回复  |  直到 14 年前
        1
  •  105
  •   Sayed Ibrahim Hashimi    14 年前

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

    如果要排除所有相关引用文件,则只需将属性值重写为相关文件不具有扩展名的内容。例如,您可以设置 允许的引用相关文件扩展名 “-”。

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

        2
  •  0
  •   Alex    15 年前

    Visual Studio项目文件与任何msbuild文件的格式相同。因此,如果配置名称为“release”,则可以手动将条件添加到相应的节中,以不复制XML文件。

    它应该在改变

    <ItemGroup>
    

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

    或者类似的。

        3
  •  -3
  •   Marc Gravell    15 年前

    如果.xml/.pdb标记为构建操作“content”(等等),则可以将其更改为“none”。您还应该确保它们复制到生成输出是 .

    这两套都是吗?

        4
  •  -4
  •   Russell McClure    15 年前

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

        5
  •  -5
  •   bkaid    15 年前

    该设置位于相关项目的属性中,在“构建”选项卡下,取消选中“XML文档文件”。它也是一个名为 <DocumentationFile> 在适用的 <PropertyGroup> 用于您在*.proj文件中的构建配置。