【问题标题】:How to build Windows Store 8.1 app without Visual Studio?如何在没有 Visual Studio 的情况下构建 Windows Store 8.1 应用程序?
【发布时间】:2014-01-28 18:19:57
【问题描述】:

我需要这个用于构建服务器 - 我想避免在那里安装完整的 Visual Studio。

我使用最新的 v12 MSBuild 来构建应用程序的解决方案。安装 .NET Framework 4.5.1 和 Windows 8.1 SDK 让我遇到了几个编译错误。安装完所有这些,现在,我得到了这个:

错误 MSB4019:导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\WindowsXaml\v12.0\Microsoft.Windows.UI.Xaml.CSharp.targets" 没有找到。确认声明中的路径是 正确,并且该文件存在于磁盘上。

targets 文件存在于我安装了 Visual Studio 2013 的开发机器上,所以我猜它与 VS 2013 一起出现。当我尝试将整个文件夹粘贴到构建机器时(我知道,这是一件愚蠢的事情),我得到了以下编译警告和错误:

警告 MSB3644:框架的参考程序集 未找到“.NETCore,Version=v4.5.1”。要解决此问题,请安装 此框架版本的 SDK 或 Targeting Pack 或重新定位您的 应用到您拥有 SDK 的框架版本 或已安装 Targeting Pack。

XamlCompiler 错误 WMC1006:不能 解析程序集或 Windows 元数据文件“System.Runtime.dll”

Xaml 内部错误错误 WMC9999:类型 Universe 无法解析程序集: System.Runtime,版本=4.0.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a.

显然,复制和粘贴东西不是一种方法。是否有一些适当的方法来实现我想要的?

编辑: 构建机器安装了 Windows Server 2012,而不是 Windows 8.1。会不会有问题?

编辑 2: 在比较了在开发机器和构建服务器上执行的 msbuilds 的输出后,我注意到构建机器中缺少文件夹 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5.1(只有 4.5 个文件夹) .粘贴后出现如下错误:

CompileXaml 错误 WMC9998:由于缺少 XBF 生成失败 Windows 8.1 支持,设置属性 true 在您的项目文件中 然后再试一次。

Windows 8.1 工具链中仍然缺少一些东西...

【问题讨论】:

  • 为什么这么多反对票?请分享您的想法 - 我们有什么方法可以进一步改进这个问题吗?
  • 首先,Windows Server 2012 R2相当于Windows 8.1。确保您已升级到 R2。
  • @NateDiamond 你是对的,机器确实只安装了 2012,而不是 2012R2。我会尽快升级它。
  • 在 R2 上为我工作,安装了 vs express 并安装了 sdk。

标签: c# visual-studio msbuild windows-store-apps


【解决方案1】:

由于它是一个 Windows 商店应用程序,而 Windows Server 2012 没有应用程序商店,我想说的是操作系统本身缺少编译该应用程序所需的库。我建议在 windows 8.1 机器上运行 tracer 以查看在编译期间访问了哪些文件,并将它们复制到服务器。我不确定这是否可行,但这是我能想到的最有可能的情况。您可以为此使用 Process Monitor 之类的东西 See what files/registry keys are being accessed by application in Windows 或者,您可能希望监控 .net 中的临时构建文件夹,以查看在构建期间本地复制了哪些程序集。

编辑:微软不正式支持这个http://msdn.microsoft.com/en-us/library/windows/apps/br211384.aspx

【讨论】:

  • 我将 ProcMon 的想法作为最后的手段,我真的很想避免经历成千上万的事件。至于缺乏微软官方的支持,是什么让你相信是这样的?从那个 MSDN 链接中,我能找到的最接近的是“此外,开发人员许可证不适用于 Windows Server 2012,因此您无法在该操作系统上开发 Windows 应用商店应用程序。”。但我相信这只是实际开发应用程序(例如执行和调试它们),而不是编译 - 你不需要开发许可证来编译应用程序。
  • 这篇文章是正确的,这是让我得出结论的第一件事,即编译器依赖于操作系统本身的库。他们也不支持在 Windows 7 上编译这些应用程序,这意味着他们需要开发工具中没有的东西。根据您的许可/使用,除了手动复制编译器引用的所有 dll 之外,如果您安装 Hyper-V 角色,最好的替代方法是在 VM 中运行 Windows 8。如果您至少拥有 Windows 2012 Standard,则其许可应允许在同一许可上运行它。
  • 最后,值得尝试使用 Windows 8.1 机器/Visual Studio 2013 编译一次应用程序,将所有引用的库设置为 Copy Local。
【解决方案2】:

您是否在构建服务器上下载并安装了Microsoft Build Tools 2013? MsBuild 的 v12 版本现在作为 Visual Studio 的一部分(而不是 Microsoft.NET Framework)发布,您希望使用这个单独的安装在您的构建服务器上获取 MsBuild v12 位。

【讨论】:

  • 是的,我做到了。正如我在问题中提到的,我安装了 MSBuild v12 和 Windows 8.1 SDK。
【解决方案3】:

几周前我刚刚为 Windows 8 商店应用程序执行此操作,因此对于 Windows 8.1 应该是相同的。只要构建机器运行的是 Windows 8.1,您需要做的就是在构建机器上安装最新的 Visual Studio Express for Windows Store Apps,就可以了。它应该安装你需要的一切。

【讨论】:

  • 实际上,构建机器是 Windows Server 2012(我已经编辑了问题以包含此内容)。我意识到安装 VS 可能会使其工作,但我想特别知道没有 VS 是否可能。
  • 我假设您不想在构建服务器上浪费 VS 许可证,这就是我的情况。从理论上讲,您应该能够复制所有内容,因为这是安装程序正在做的事情。
  • 我已经尝试过了,无法将 VS Express for Store Apps 安装到 Windows Server 2012。它说我需要更新版本的操作系统 - 根据visualstudio.com/products/visual-studio-express-vs,它只兼容用赢 8.1。关于复制,我不确定我还应该复制什么 - 正如我在 OP 中提到的,我已经复制了包含目标文件的文件夹,但这还不够。
猜你喜欢
  • 2010-12-16
  • 2015-11-04
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
相关资源
最近更新 更多