【问题标题】:How to avoid having (or delete) PDB files in TFS 2012 build result如何避免在 TFS 2012 构建结果中包含(或删除)PDB 文件
【发布时间】:2013-01-18 07:12:04
【问题描述】:

使用 Visual Sturdio 2012(和 TFS 2012 服务器)的 DefaultTemplate 时,PDB 文件包含在构建目录中。我不要他们。

有没有办法在构建过程中不生成这些文件?

或者

如何删除这些文件?

found this thread 关于删除但似乎有点奇怪(没有删除活动?) 还有this answer但不涉及XAML模板。

提前感谢您的帮助。

【问题讨论】:

    标签: xaml tfsbuild


    【解决方案1】:

    PDB 文件包含有关您的代码的调试信息,不建议禁用它们,它们是有效的输出,因此部署不应该弄乱它们。 您可以在 Visual Studio 项目 Properties> Build > Advanced > Debug Info = none 中禁用它们的生成。 如果您绝对希望它们消失,请禁用它们以构建特定配置(发布等)

    【讨论】:

    • 对 MrHinsh 答案的完美补充。但只有一个官方答案可能......我必须选择。谢谢。
    【解决方案2】:

    默认情况下,构建服务器会按照解决方案 (sln) 的指示执行任何操作。默认情况下是进行“调试”构建并创建 PDB。您可以告诉 Build 进行“发布”构建,默认情况下不会创建任何 PDB...

    图:添加构建配置

    但我建议不要这样做,因为 PDB 包含您甚至在生产系统中也需要的信息。考虑一下,您在生产中有一个 DLL,而客户遇到了问题。你让他们创建一个 InteliTrace 日志,以便你可以在本地调试它(或者他们让你在他们的环境中调试),突然你试图在 Visual Studio 不了解可执行文件和源代码之间的关系的情况下进行调试。所以没有调试...

    【讨论】:

    • 请注意,配置的默认值可能会有所不同(不确定原因)正如 M.Radwan -MVP 所说,他的 VS2012 版本启用了 pdb,对于我的 VS2010 版本配置也设置了 pdb-only。跨度>
    • 在所有情况下都创建 PDB 是正确的行为,因为没有它您将无法使用 InteliTrace...
    • 如果第三方库包含您永远不会调试的臃肿 PDB 文件怎么办?
    • 只有您自己添加它们才能到达那里。构建不会为第三方 dll 创建 PDB...
    【解决方案3】:

    由于我无法找到禁用 PDB 文件生成的构建选项,因此我随后将其删除。

    没有简单的方法可以删除文件。我做到了:

    1. 使用带有通配符 *.pdb 的 FindMatchingFiles Activity,它会返回 pdb 文件的完整路径
    2. 使用 Foreach 循环
    3. call a DotNet method 在每个带有 InvokeMethod Activity 的文件的循环中, 目标类型 System.IO.File 和方法为“删除”

    【讨论】:

      【解决方案4】:

      在以前的版本中 (Visual Studio 2010) 当我们构建 /release 时,它不会生成 PDB,当我们仅使用 /debug:full/debug:pdbonly 构建时会创建 PDB 文件strong>,如果我们想为我们不想调试的发布版本生成 PDB,我们使用 /debug:pdbonly

      在 Visual Studio 2012 中并非如此,我检查了它,发现它在 /debug/release

      中都生成了 PDB

      没有适用于 Visuals Studio 2012 的文档。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-22
        • 2015-12-14
        • 2015-08-07
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多