我正在使用 MSBuild 引擎在 Team Server 数据库项目上运行部署:
var propertyGroup = new BuildPropertyGroup();
propertyGroup .SetProperty("Configuration", "Release");
propertyGroup .SetProperty("TargetDatabase", <databasename>);
propertyGroup .SetProperty("UseSandboxSettings", "false");
propertyGroup .SetProperty("DeployToDatabase", "true");
propertyGroup .SetProperty("TargetConnectionString", LocalHostConnectionString);
new Engine().BuildProjectFile(<DBProjFile>, new[] { "Rebuild", "Deploy" }, propertyGroup);
这是在一套单元测试的设置夹具中运行的。当使用 Resharper 运行时,设置会在合理的时间内运行,但是如果我调试测试,我会在调试输出中得到大量的跟踪噪音。大多数消息都以详细级别记录。
我回顾了一些涉及的程序集,发现在静态类 Microsoft.Data.Schema.Common.Diagnostics.TSDTrace、Microsoft.Data.Schema.Utilities 中创建了一个名为“TSData”的 TraceSource。
我尝试将以下内容应用于 app.config,它已停止出现在“调试”窗口中的任何输出,但运行时间不受影响:
<system.diagnostics>
<sources>
<source name="TSData" switchName="foo" />
</sources>
<switches>
<add name="foo" value="Off"/>
</switches>
</system.diagnostics>
在日志记录类中有这个小宝石:
if (TSDTrace.Settings._traceIfDebuggerAttached && Debugger.IsAttached)
{
TSDTrace.Settings._traceToDebugOutput = true;
TSDTrace.Settings._traceLevel = TraceLevel.Verbose;
}
其中 _traceIfDebuggerAttached 始终为真。我在跳,我错过了一些东西。最终我想从代码中禁用它,但我会接受涉及应用程序配置的解决方案。
编辑
我犯了一个错误,跟踪源实际上是我在上面修改过的“TSData”。我在 app.config 中将日志级别设置为 Off,这阻止了输出出现在 Debug 输出中,但速度仍然相同。看来这个问题更具体到我正在尝试做的事情,所以我在原始问题中添加了更多细节。