在msbuild中定义编译常量时,Windows Azure上的跟踪诊断不起作用

时间:2014-02-19 18:46:20

标签: azure msbuild

我在Windows Azure上有一个Cloud Service项目,该项目在运行诊断程序时运行良好。今天我需要在构建中添加一个编译常量。

#if INCLUDE_LICENSE_MANAGER

#endif

我这样做是通过给msbuild提供参数/ p:DefineConstants = INCLUDE_LICENSE_MANAGER但这导致写入诊断的Trace停止工作。 (使用azure跟踪侦听器记录blob存储等)

那么我对Compile Constants有什么误解,因为它导致我的跟踪停止工作?

1 个答案:

答案 0 :(得分:1)

您的问题实际上与 MSBuild DefineConstants 参数有关。

使用/p:DefineConstants=INCLUDE_LICENSE_MANAGER时,MSBuild会覆盖已在.csproj文件中定义的条件编译符号(如上所述here,但在简单的控制台应用程序中很容易重现)。 默认情况下定义的TRACE条件编译符号(创建新项目时的Debug和Release配置)都不再定义,从而阻止执行System.Diagnostics.Trace的大多数方法。

在您的情况下,您应该使用/p:DefineConstants="INCLUDE_LICENSE_MANAGER;TRACE"在MSBuild命令中手动定义 TRACE 常量。