从c#编译Silverlight解决方案失败,报错“未安装Silverlight 4 SDK”

本文关键字:Silverlight 安装 未安装 SDK 报错 编译 解决方案 失败 | 更新日期: 2023-09-27 17:51:00

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

C:'Program Files (x86)'MSBuild'Microsoft'Silverlight'v5.0'Microsoft.Silverlight. common .targets(104,9): The Silverlight 4 SDK未安装。

我正在使用SilverLight 5,并安装了SilverLight 4和SilverLight 5的SDK。该解决方案在Visual Studio中可以很好地编译。在这个问题上我遵循了建议:

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

我从运行切换到

Microsoft.NET

C: ' Windows ' ' Framework64 ' v4.0.30319 ' msbuild.exe

:

C: ' Windows ' Microsoft.NET ' Framework ' v4.0.30319 ' msbuild.exe

这解决了问题,但由于需求的变化,我现在需要使用Microsoft。在不包装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: ERROR C:'Program Files (x86)'MSBuild'Microsoft' Silverlight'v5.0'Microsoft.Silverlight.Common.targets(104,9): The Silverlight 4 SDK未安装.

是否有一种方法来编译使用x86 MsBuild从c#代码没有包装MsBuild.exe?

从c#编译Silverlight解决方案失败,报错“未安装Silverlight 4 SDK”

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

我认为你必须创建一个特定的进程来为你启动特定的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();