繁体   English   中英

如何区分VS版本和csc.exe版本?

[英]How to distinguish between VS build and csc.exe build?

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

因此,有什么方法可以在运行时知道SW是使用VS还是.cmd脚本构建的?

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

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

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

我不知道一种“自动”的方式来区分内部版本,因​​为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM