我在Windows Azure上有一个Cloud Service项目,该项目在运行诊断程序时运行良好。今天我需要在构建中添加一个编译常量。
#if INCLUDE_LICENSE_MANAGER
#endif
我这样做是通过给msbuild提供参数/ p:DefineConstants = INCLUDE_LICENSE_MANAGER但这导致写入诊断的Trace停止工作。 (使用azure跟踪侦听器记录blob存储等)
那么我对Compile Constants有什么误解,因为它导致我的跟踪停止工作?
答案 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 常量。