我正在尝试以编程方式编译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 command-line error - Silverlight 4 SDK is not installed
我从跑步开始:
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);
但是,我现在再次看到:
ValidateSilverlightFrameworkPaths:错误C:\ Program Files(x86)\ MSBuild \ Microsoft \ Silverlight \ v5.0 \ Microsoft.Silverlight.Common.targets(104,9):未安装Silverlight 4 SDK ..
有没有办法在不包装MsBuild.exe的情况下使用C#代码使用x86 MsBuild进行编译?
答案 0 :(得分:5)
您必须将目标平台设置为&#34; x86&#34;在您的&#34; Build&#34;的项目选项中项目
答案 1 :(得分:1)
我认为您必须创建一个特定的Process,它将为您启动特定的MSBuild。
var p = new Process();
p.StartInfo = new ProcessStartInfo(@"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe")
p.StartInfo.Arguments = string.Format(@"{0}\{1}.csproj", _args.ProjectPath, _args.ProjectName)
p.Start();
或者解决方案的任何路径。