C# 如何区分VS build和csc.exe build?
我们有两种方法对产品进行测试。一个是使用MsTest和VS的本地,另一个是使用远程机器(我们称之为M)。将代码上载到M时,M使用批处理脚本从保存在M中的xml文件生成配置类,并使用csc.exe构建产品。当从本地计算机运行测试时,不使用xml文件,而是从内存类中获取配置。这意味着我们每次都必须根据运行测试的位置对代码进行更改—从内存配置类或外部配置类中的不同配置类继承C# 如何区分VS build和csc.exe build?,c#,C#,我们有两种方法对产品进行测试。一个是使用MsTest和VS的本地,另一个是使用远程机器(我们称之为M)。将代码上载到M时,M使用批处理脚本从保存在M中的xml文件生成配置类,并使用csc.exe构建产品。当从本地计算机运行测试时,不使用xml文件,而是从内存类中获取配置。这意味着我们每次都必须根据运行测试的位置对代码进行更改—从内存配置类或外部配置类中的不同配置类继承 因此,有没有办法在运行时知道软件是使用VS还是.cmd脚本构建的?您可以使用不同于VS和脚本的构建配置,因此您可以从代码中执行以
因此,有没有办法在运行时知道软件是使用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当然最好指定M提前退休。尤其是如果做这件事的人已经不在了,或者没有人能理解他的手艺。请改用MSBuild.exe。