从C#编译Silverlight解决方案失败,并显示错误"未安装Silverlight 4 SDK"

psy*_*ych 1 c# msbuild silverlight .net-4.0 silverlight-5.0

我正在尝试以编程方式编译Silverlight项目.最初我只是包装了MsBuild.exe,但是有一个错误说:

C:\ Program Files(x86)\ MSBuild\Microsoft\Silverlight\v5.0\Microsoft.Silverlight.Common.targets(104,9):未安装Silverlight 4 SDK.

我正在使用SilverLight 5并安装了Silverlight 4和Silverlight 5的SDK.该解决方案在Visual Studio中编译良好.我按照这个问题的建议:

MSBuild命令行错误 - 未安装Silverlight 4 SDK

我从跑步开始:

C:\ WINDOWS\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe

至:

C:\ WINDOWS\Microsoft.NET \框架\ v4.0.30319\msbuild.exe

这解决了这个问题,但是由于需求的变化,我现在需要使用Microsoft.Build而不包装MsBuild exe.我有以下代码:

var globalProperty = new Dictionary<string, string> { { "Configuration", "Debug"}, { "Platform", "Any CPU" } };
var buildParameters = new BuildParameters(new ProjectCollection()) { Loggers = new List<ILogger> { this.logger } };
var buildRequest = new BuildRequestData(@"C:\example\solution.sln", globalProperty, "4.0", new[] {"Build" }, null);
BuildResult buildResult = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest);
Run Code Online (Sandbox Code Playgroud)

但是,我现在再次看到:

ValidateSilverlightFrameworkPaths:ERROR C:\ Program Files(x86)\ MSBuild\Microsoft\Silverlight\v5.0\Microsoft.Silverlight.Common.targets(104,9):未安装Silverlight 4 SDK.

有没有办法在不包装MsBuild.exe的情况下使用C#代码使用x86 MsBuild进行编译?

小智 5

您必须在"Build"项目的项目选项中将目标平台设置为"x86".