У меня есть пользовательская задача MsBuild, которая отправляет электронное письмо (выполняет некоторые особые действия при отправке содержимого, похожего на письмо).
Фон
Использование TFS 2008
Сервер сборки - это отдельная машина, использующая TeamBuild 2008.
Это пользовательское задание работало нормально до тех пор, пока я не установил .Net 4.0 на сборочный компьютер и не настроил службу сборки на использование новой версии MSBuild (Настроил Team Build 2008 для использования MSBuild 4.0 вместо MSBuild 3.5, задав MSBuildPath свойство для c: \ Windows \ Microsoft.NET \ Framework \ v4.0.21006)
Я получаю ошибку:
"...\TFSBuild.proj" (EndToEndIteration target) (1) -> (EmailResults target) -> ...\BuildType\TFSBuild.proj(386,5): error : SendEmailTask failed: ActiveX control '8856f961-340a-11d0-a96b-00c04fd705a2' cannot be instantiated because the current thread is not in a single-threaded apartment.
SendEmailTask
использует SmtpClient
для отправки электронного письма. (я подозреваю, что SmtpClient
использует какой-то базовый объект ActiveX, который выдает эту ошибку).
Как заставить MsBuild вызывать пользовательскую задачу в среде STA?