MSBuild抛出错误:“...无法从程序集中实例化任务”

时间:2017-11-01 13:21:41

标签: c# visual-studio-2015 msbuild

编辑:没关系,事实证明该任务实际上没有实现Microsoft.Build.Framework.ITask接口。我曾做过错误的假设。 D'哦!

我使用Visual Studio 2015.

相关代码:

string solutionFilePath = args.Single();

var fileLogger = new FileLogger { Verbosity = LoggerVerbosity.Detailed, Parameters = @"logfile=C:\MSBuildResults.txt" };
var projectCollection = new ProjectCollection {DefaultToolsVersion = "14.0"};
var buildParameters = new BuildParameters(projectCollection) { Loggers = new List<ILogger> { fileLogger } };

var globalProperties = new Dictionary<string, string> { { "Configuration", "Debug" }, { "Platform", "Any CPU" } };
var buildRequestData = new BuildRequestData(solutionFilePath,
                                            globalProperties,
                                            targetsToBuild: new[] { "Build" },
                                            toolsVersion: "14.0",
                                            hostServices: null);

BuildResult buildResult = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequestData);

buildResult.OverallResultBuildResultCode.Failure,并在我的日志文件中打印了以下错误消息:

  

C:\ Workspaces \ SomeProject.csproj(67,5):错误MSB4127:“DummyTask”   无法从程序集中实例化任务   “\ networkDrive \ Dummy.dll”。请验证任务组件是否已经完成   使用相同版本的Microsoft.Build.Framework程序集构建   作为您计算机上安装的那个和您的主机应用程序   没有错过Microsoft.Build.Framework的绑定重定向。   无法将“DummyTask”类型的对象强制转换为类型   'Microsoft.Build.Framework.ITask'。

根据建议here,我在我的计划的<bindingRedirect>文件中添加了.exe.config标记。尽管如此,仍然会抛出相同的错误消息。

我没有使用Microsoft.Build库,而是决定使用MSBuild.exe(我知道not recommended)来调用Process.Start()

var processStartInfo = new ProcessStartInfo(@"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe") 
{
      Arguments = $"{solutionFilePath} /t:Build",
      RedirectStandardOutput = false,
      UseShellExecute = true,
      CreateNoWindow = false
};
var process = Process.Start(processStartInfo);

process.WaitForExit();            
process.Close();

这一次,构建成功,并且流程完成,退出代码为0。

使用Microsoft.Build库构建解决方案时,我做错了什么?当我使用BuildManager时,我应该怎么做才能确保构建成功?

如果您需要更多信息来帮助解决我的问题,请与我们联系。

0 个答案:

没有答案