Я использую механизм 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 установка выполняется за разумное время, однако, если я отлаживаю тесты, я получаю много шума трассировки в выводе отладки. Большинство сообщений регистрируются на подробном уровне.
Я проанализировал некоторые задействованные сборки и обнаружил, что существует TraceSource с именем «TSData», созданный в статическом классе Microsoft.Data.Schema.Common.Diagnostics.TSDTrace, Microsoft.Data.Schema.Utilities.
Я попытался применить следующее к 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, что предотвратило появление вывода в выводе отладки, но скорость осталась прежней. Похоже, эта проблема более специфична для того, что я пытаюсь сделать, поэтому я добавил больше деталей к исходному вопросу.