开发者

MSBuild task failing - Not running in Single Thread Apartment

开发者 https://www.devze.com 2023-01-22 10:13 出处:网络
I have a custom MsBuild task that sends an email (does some special stuff while sending the email -like formatting content).

I have a custom MsBuild task that sends an email (does some special stuff while sending the email -like formatting content).

Background:

Using TFS 2008

Build server is a separate machine using TeamBuild 2008.

This custom task used to work fine until I installed .Net 4.0 on the build machine and setup the build service to use the new version of MSBuild (Configured Team Build 2008 to use MSBuild 4.0 instead of MSBuild 3.5 by setting the MSBuildPath property to c:\Windows\Microsoft.NET\Framework\v4.0.21006)

The error that I get is:

"...\TFSBuild.proj" (EndToEndIteration target) (1) -> (EmailResults target) -> ...\Buil开发者_StackOverflow社区dType\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.

The SendEmailTask uses SmtpClient to send an email. (my suspicion is that the SmtpClient is using some underlying ActiveX object which is throwing this error).

How do I get MsBuild to invoke the custom task in a STA environment?


Your build task is trying to start Internet Explorer. Yes, it needs an STA thread, and no, you can't get one out of MSBuild.exe

How you got from SmtpClient to Internet Explorer is completely unclear to me. Using an HTML body or some kind an attachment sounds all pretty remote to me. Having your build task start a program that does the job instead at least ought to give you a better diagnostic.

0

精彩评论

暂无评论...
验证码 换一张
取 消