从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.NETC: ' 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?
您必须在"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();