【问题标题】:Compiling Silverlight solution from C# fails with error "The Silverlight 4 SDK is not installed"从 C# 编译 Silverlight 解决方案失败并出现错误“未安装 Silverlight 4 SDK”
【发布时间】:2014-03-20 09:28:48
【问题描述】:

我正在尝试以编程方式编译 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\Framework\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..

有没有办法从 C# 代码中使用 x86 MsBuild 编译而不包装 MsBuild.exe?

【问题讨论】:

  • 您是否尝试在项目选项中将目标平台设置为“x86”(我不确定这是否有帮助,但可能值得一试)?

标签: c# silverlight .net-4.0 msbuild silverlight-5.0


【解决方案1】:

您必须在“构建”项目的项目选项中将目标平台设置为“x86”。

【讨论】:

  • 为这个答案提供赏金。我必须创建一个针对 x86 的新项目。然后使用我上面包含的确切代码在“任何 CPU”中构建目标项目时工作。
【解决方案2】:

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

或者你的解决方案的任何路径。

【讨论】:

  • 这是我之前的做法。不幸的是,这不再符合我的要求,因为我需要传入一个定制的记录器来以特定方式提取警告/错误。
  • 以及如何使用 /fileLogger 选项并从文件中获取日志记录输出。你看看这个msdn.microsoft.com/en-us/library/ms164311.aspx
  • 我需要获取实时日志输出。我不想写入文件然后解析,因为在构建完成之前我将无法以所需的格式输出。
猜你喜欢
  • 2011-08-05
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
  • 2017-08-28
相关资源
最近更新 更多