c# - 警告 MSB4056 : The MSBuild engine must be called on a single-threaded-apartment

标签 c# msbuild

我在尝试使用 C# 控制台应用程序构建我的 ASP.Net 解决方案时遇到此错误:

MSBUILD : warning MSB4056: The MSBuild engine must be called on a single-threaded-apartment. Current threading model is "MTA". Proceeding, but some tasks may not function correctly.

这是我的代码:

Engine engine = new Engine();
engine.BinPath = @"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319";

FileLogger logger = new FileLogger();
logger.Parameters = @"logfile=C:\temp\build.log";
engine.RegisterLogger(logger);

bool success = engine.BuildProjectFile(ConfigurationSettings.AppSettings["ProjectPath"]);

engine.UnregisterAllLoggers();
if (success)
    Console.WriteLine("Build succeeded.");
else
    Console.WriteLine(@"Build failed. View C:\temp\build.log for details");

最佳答案

只需用 [STAThread] 修饰 main 方法。

也就是说,如果您可以执行调用 COM 方法的任务,则可能会导致唯一的问题。换句话说,忽略它通常是安全的。

关于c# - 警告 MSB4056 : The MSBuild engine must be called on a single-threaded-apartment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15239507/

相关文章:

c#,获取当前T在List<T>中的索引

c# - 从 WP7 中的网站解析数据

c# - Webdriver - Webdriver MoveToElement 在 IE 和 Firefox 中无法获取文本工具提示

msbuild - 从 TeamCity 复制 msbuild 命令

msbuild - 是否有编写自定义 NAnt、Ant 或 MSBuild 任务的最佳实践?

c# - 将定义常量传递给 dotnet build 会杀死目标框架符号

c# - MSBuild v14 在极少数情况下会编译语义不正确的程序集

c# - 从另一个应用程序中运行的 FarPoint Spread 控件获取数据

c# - ASP.NET Core 中的模拟 IHttpConnectionFeature

sql-server - 存储过程 ENCRYPTION 选项取决于构建模式