代码之家  ›  专栏  ›  技术社区  ›  Hamish Grubijan

如何以编程方式检查vs2010的调试和发布版本是否使用完全相同的配置?

  •  1
  • Hamish Grubijan  · 技术社区  · 15 年前

    我们有一个visual studio 2010解决方案, C#/C++/VB.Net 以及其他项目。它不是基于msbuild的。

    我和我的同事大多是 Debug 建造,和 Release 很少被使用,但确实被使用(比如说有一个只发布的bug;这些bug会不时弹出)。

    夜间构建遵循它们自己的独立过程,并创建一些与开发人员将使用的发布构建有些类似的内容,但不是相同的。无论如何…不需要太多细节,

    我想添加一个单元测试来检查 调试 释放 给定解决方案平台的配置(在本例中是 Win32 )中。

    我想要一个 C# 解决方案或 Python 解决方案(因为这是我们目前用于测试的),但是 Perl PowerShell 也可以不费力地移植。

    我说的“解决方案”并不意味着我需要一个完整的单元测试,它可以按需要编译和工作(尽管完整的答案往往会随着时间的推移吸引更多的投票);一段相关的代码足以让我开始工作。

    我最大的困难是解析visual studio解决方案文件,它不是基于msbuild的(所以我被告知,我猜这意味着它不是纯xml,而是有趣的msft-ascii格式)。

    如果你有问题请告诉我。再次,我想找出 Debug+Win32 Release+Win32 是的。我不确定 32年 东西是标准的,或者是内部酿制的。

    谢谢!

    1 回复  |  直到 15 年前
        1
  •  1
  •   Ben.Vineyard    15 年前

    以确定程序集是否在调试中编译 模式,从程序集获取可调试属性。假设您有一个程序集实例,那么 它:

    // The assembly is in a variable named assembly.
    object[] attributes = assembly.GetCustomAttributes(typeof(DebuggableAttr ibute), true);
    
    // If the array is null, or has length of zero, then it is not debuggable.
    if (!(attributes == null || attributes.length == 0))
    {
        // It is debuggable, figure out the level.
        DebuggableAttribute debug = (DebuggableAttribute) attributes[0];
    
        // At this point, you can access the DebuggingFlags property to
        // determine the level of debugging.
    }