【问题标题】:MSBuild command-line error - Silverlight 4 SDK is not installedMSBuild 命令行错误 - Silverlight 4 SDK 未安装
【发布时间】:2011-03-01 08:58:51
【问题描述】:

我的MSBuild命令行如下:

msbuild e:\code\myProject.csproj /p:Configuration=Debug /p:OutputPath=bin/Debug /p:Platform=x86 /p:PlatformTarget=x86

该项目在我的 VS2010 开发机器上构建良好,但不能使用上面的命令。我正在运行 Win 7 64 - 位。我收到一条错误消息,提示我没有安装 Silverlight 4 SDK,但我安装了。我已经阅读了一些您必须设置 Platform=x86 但无济于事的帖子。这是完整的错误消息:

Microsoft (R) Build Engine 版本 4.0.30319.1 [Microsoft .NET 框架,版本 4.0.30319.1] 版权所有 (C) Microsoft Corporation 2007。保留所有权利。 构建于 2010 年 6 月 8 日下午 4:03:38 开始。 项目“E:\code\dashboards\MyProject2010\MyProject2010.Web\MyProject2010 .web.csproj”在节点 1 上(默认目标)。 GenerateTargetFrameworkMonikerAttribute: 跳过目标“GenerateTargetFrameworkMonikerAttribute”,因为所有输出 fi 文件相对于输入文件是最新的。 核心编译: 跳过目标“CoreCompile”,因为所有输出文件都是最新的 resp 等到输入文件。 复制文件到输出目录: 将文件从“obj\Debug\MyProject.Web.dll”复制到“bin\Debug\MyProject.Web .dll”。 MyProject2010.web -> E:\code\dashboards\MyProject2010\MyProject2010.Web \bin\Debug\MyProject.Web.dll 将文件从“obj\Debug\MyProject.Web.pdb”复制到“bin\Debug\MyProject.Web” .pdb”。 项目“E:\code\dashboards\MyProject2010\MyProject2010.Web\MyProject2010 .web.csproj” (1) 正在构建“E:\code\dashboards\MyProject2010\MyProject20 10.Client\MyProject2010.Client.csproj" (2) 在节点 1 上(GetXapOutputFile 目标( s))。 C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlight .Common.targets(104,9): 错误:未安装 Silverlight 4 SDK。 [E:\鳕鱼 e\dashboards\MyProject2010\MyProject2010.Client\MyProject2010.Client.cspr oj] 完成构建项目“E:\code\dashboards\MyProject2010\MyProject2010.Clie nt\MyProject2010.Client.csproj”(GetXapOutputFile 目标)——失败。 完成构建项目“E:\code\dashboards\MyProject2010\MyProject2010.Web\ MyProject2010.web.csproj”(默认目标)——失败。 构建失败。 "E:\code\dashboards\MyProject2010\MyProject2010.Web\MyProject2010.web.csp roj" (默认目标) (1) -> "E:\code\dashboards\MyProject2010\MyProject2010.Client\MyProject2010.Clie nt.csproj" (GetXapOutputFile 目标) (2) -> (GetFrameworkPaths 目标)-> C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlig ht.Common.targets(104,9):错误:未安装 Silverlight 4 SDK。 [E:\c ode\dashboards\MyProject2010\MyProject2010.Client\MyProject2010.Client.cs 项目] 0 个警告 1 个错误 经过时间 00:00:00.39

感谢任何人的帮助。谢谢。

【问题讨论】:

  • 那么您安装了 Silverlight 4 SDK 吗?
  • 是的,这是我的开发机器。我有 Visual Studio 2010 和 Silverlight Tools for 2010,其中包括 SDK。我还在此目录中看到了 SDK 文件:C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0.
  • 通过从 c:\Windows\Microsoft.NET\Framework\v4.0.30319 目录而不是从 c:\ 运行 MSBuild,我能够在我的 Win7 64 位开发机器上成功构建Windows\Microsoft.NET\Framework64\v4.0.30319。但是,我在构建服务器上仍然遇到同样的错误,即从该目录运行 MSBuild 的 Windows Server 2008 64 位。
  • 显然安装 SL 4 Toolkit 是不够的,即使它包含 SL 4 SDK。一旦我运行了独立的 SDK 安装程序 (go.microsoft.com/fwlink/?LinkId=188043),MSBuild 就可以正常工作了。

标签: silverlight msbuild silverlight-4.0


【解决方案1】:

我想通了 - MSBuild 中有一个设置,您可以在其中为 MSBuild 选择 x64 或 x86 环境(在您设置 MSBuild 标志的同一页面中) - 将其设置为 x86 一切都会工作。

【讨论】:

  • 这可行,但我还必须卸载并重新安装 Silverlight 4 SDK。非常令人沮丧。
【解决方案2】:

如果您是因为 构建问题而导致上述错误(即使您已经安装了 Silverlight 4 SDK),那么为了实现相同的修复,您必须编辑您的构建过程模板:

转到“进程”选项卡,展开“3.Advanced”部分并找到倒数第二个设置(“MSBuild Platform”)并将其设置为 X86,这将指示构建代理使用 x86 变体MSBuild。

结合上面 Paul Betts 的回答,这解决了我的问题。

【讨论】:

  • 我在 tfs 上遇到了这个问题,这解决了它!谢谢
  • 也适用于 tfs2013(也适用于 Silverlight 5 项目)
【解决方案3】:

我在运行的时候也遇到了同样的问题:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe

只需运行:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe

【讨论】:

    【解决方案4】:

    开始的帖子说您必须将目标平台设置为 X86,但这不是构建服务器的解决方案。

    在您的构建配置文件中,有一个选项可将 MSBuild 平台设置为 X86。 您可以通过以下方式找到此设置:Process -> 3.Advanced -> MSBuild Platform(默认设置为自动)

    潜在的问题是 Silverlight 不支持 64 位。

    我在http://social.msdn.microsoft.com/Forums/en/msbuild/thread/20a742a1-b99c-4638-8590-9a9d6a95fb69找到了这个对我有用的解决方案

    【讨论】:

      【解决方案5】:

      在尝试设置 Windows 7 Phone SDK 时,我在 Windows 7 Ultimate 64 位版本上遇到了这个问题。 SDK/Toolkit 安装/修复的组合对我来说没有效果,所以我决定进一步调查。

      通过在我的 Microsoft.Silverlight.Common.targets 文件中放置多个 <Message /> 构建任务,我发现我在 Software\Microsoft\Silverlight\4.0 中没有注册表项。 32 位部分和 Wow6432Node 部分都是如此。

      因此,发现框架存储位置的几个构建目标的输出返回空白,随后使许多其他目标失败。具体来说,_FullFrameworkReferenceAssemblyPaths 和 TargetFrameworkDirectory 属性设置不正确。

      尽管对所有建议完全不屑一顾,但我通过手动将值硬编码到 .targets 文件中来规避了该问题,如下所示:

      <PropertyGroup>
          <_FullFrameworkReferenceAssemblyPaths>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0</_FullFrameworkReferenceAssemblyPaths>
          <TargetFrameworkDirectory>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone</TargetFrameworkDirectory>
      </PropertyGroup>
      

      这不是我特别引以为豪的事情,但如果我要在开发方面取得任何进展,就必须这样做。我希望这对其他人有帮助。

      【讨论】:

      • 我正在基于 Hudson 的持续集成服务器上配置一个新项目。该项目依赖于 Silverlight 4 SDK,我也遇到了这个错误。我们希望保持我们的构建自包含,并将所有依赖项检查到源代码控制中,以允许多个版本的依赖项而不会发生冲突。在构建服务器上安装东西是不好的做法。您的调查工作有助于诊断 Silverlight SDK 的问题。
      • 如果 (a) 您在注册表中准确指出缺少的键应该是,(b) 在 Microsoft.Silverlight.Common.targets 文件中您添加 以强制路径。
      【解决方案6】:

      如果将 build 设置为 X86 并重新安装 Silverlight SDK 4 没有帮助: 如果您在构建服务器上使用 VS2013,请检查是否安装了 Windows Phone SDK。我必须运行 VS2013 安装程序,单击更改按钮并安装 windows phone sdk。

      或者尝试安装 windows phone sdk 以便能够构建 windows phone 解决方案。

      【讨论】:

        【解决方案7】:

        我在使用 TeamCity 时遇到了同样的问题。我的构建步骤是一个设置为 x64 的 MSBuild 操作。一旦我将其更改为 x86,它就可以工作了。 :)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-16
          • 1970-01-01
          相关资源
          最近更新 更多