【问题标题】:Install SDK for UWP development in GithubActions CI?在 GithubActions CI 中安装用于 UWP 开发的 SDK?
【发布时间】:2020-01-27 22:23:47
【问题描述】:

我正在尝试构建一些 UWP 库并收到此错误:

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

.csproj 文件中的导入子句如下所示:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />

所以我尝试通过 Chocolatey(this packagethis other;不是 Windows10SDK 一个,因为它在尝试安装时出错)以编程方式在 Windows2019 VM 中安装 UWP 工作负载:

- run: |
  choco install visualstudio2019-workload-universal
  choco install visualstudio2019-workload-universalbuildtools

但这似乎并没有解决问题(显然,软件包已成功安装),因为我仍然不断收到该编译错误。

还尝试了包含可选包,但无济于事:

choco install visualstudio2019-workload-universal --package-parameters "--includeOptional"

更新:原来我的 CI VM 已经有文件 Microsoft.Windows.UI.Xaml.CSharp.targets,但它位于 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\WindowsXaml\v16.0(以及该文件下的子文件夹中的其他版本)。更多详情,请看我的回答。

【问题讨论】:

  • 您是否检查过您的项目在没有 ZXing 和其他第三方库的情况下是否能正常运行?
  • 我的项目没有使用ZXing,是ZXing! (这是一个叉子)
  • 那么当您检查 Microsoft.Windows.UI.Xaml.CSharp.targets 文件的位置时,它是否存在于错误日志提到的路径中?
  • 当然不是 :) 但我发现它在不同的地方,很快就会更新我的问题
  • 巧克力似乎不能正常工作。我建议您使用 Visual Studio Installer 下载工作负载。

标签: uwp windows-10-universal chocolatey github-actions github-ci


【解决方案1】:

事实证明,安装在 GithubActions VM 中的 VS2019 版本确实已经包含 UWP 组件(以及其他,例如 Xamarin.iOS、Xamarin.Android、Xamarin.Mac 等);问题是我的构建不知何故默认使用旧版本的 MSBuild(位于 C:/windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe 的那个),它不知道这些扩展。

一旦我确定我使用了与 VS2019 捆绑的 MSBuild 版本(%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe 中的那个),一切就又开始工作了。

要在我的特定版本中修复它,我必须修改 build.cake 文件(IMO 实际上可能是 CAKE 中的一个错误,默认情况下无法检测到正确版本的 MSBuild...)。如果您想查看确切的修复(使用vswhere 来定位MSBuild),它是this

【讨论】:

    【解决方案2】:

    如果巧克力似乎没有按预期工作,您可以尝试使用 CLI 修改 Visual Studio。例如,下面将 Universal Platform 工作负载添加到 VS,当从 powershell 运行时没有提示。

    & "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" modify `
      --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" `
      --add Microsoft.VisualStudio.Workload.Universal --passive --norestart
    

    Visual Studio Enterprise 2019 包含在 Windows Server 2019 环境中,Visual Studio Enterprise 2017 包含在所有环境中 Windows Server 2016 R2

    我在这里创建了一个示例 repo:https://github.com/adam7/modify-visual-studio-install

    您可以在 Visual Studio 文档中找到一组 Command-line parameter examples for Visual Studio installationVisual Studio workload and component IDs 以及如何使用 Use command-line parameters to install Visual Studio

    【讨论】:

    • 谢谢!我会试试这个,但是vs_enterprise.exe 在哪里?如果没有安装VS,是否有官方网址可以在某处获取vs_community.exe
    • 我找不到 wget vs_enterprise 的任何地方,所以我下载了它并将其添加到我的存储库中。
    • vs_enterprise是企业版,不是免费的,所以一定不能定位?
    • VS Enterprise 安装在所有 Windows GitHub Action VM 上,我应该多考虑一下,因为安装程序在 VS Installer 目录中可用。我已经更新了我的答案,所以现在不需要下载任何东西了。
    • 你说得对,它不是免费的,但它似乎安装在虚拟机上,这非常好,意味着你可以在使用 Action 构建时做各种好事情。
    猜你喜欢
    • 2017-07-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 2021-02-13
    相关资源
    最近更新 更多