如何区分VS build和csc.exe构建?

时间:2014-02-17 15:28:06

标签: c#

我们有两种方法可以对我们的产品进行测试。一个是本地的(使用MsTest和VS),另一个是使用远程机器(我们称之为M)。将代码上传到M时,M使用批处理脚本从xml文件(保存在M中)生成配置类,并使用csc.exe构建产品。从本地计算机运行测试时,不使用xml文件,而是从内存类中获取配置。这意味着我们必须每次都根据我们想要运行测试的位置对代码进行更改 - 从不同的配置类继承(在内存配置类或外部配置类中)。

因此,有没有办法在运行时知道SW是使用VS还是.cmd脚本构建的?

2 个答案:

答案 0 :(得分:0)

您可以使用VS和脚本中的其他构建配置,因此您可以从代码中执行以下操作:

public bool IsDebugBuild
{
    get
    {
    #if DEBUG
        return true;
    #else
        return false;
    #endif
    }
}

只需定义您自己的配置即可。

答案 1 :(得分:0)

我不知道"自动"在VS构建之间也可以在内部使用csc.exe来识别构建之间的方法。

但是你可以引入一个编译时常量,只有在批处理脚本中构建时才能定义,例如:

internal static class BuildInfo
{
    internal static bool BuiltByBatchScript
    {
        get
        {
#if BATCH_BUILD
            return true;
#else
            return false;
#endif
        }
    }
}

在批处理脚本中调用csc.exe时,请添加以下参数:/define:BATCH_BUILD