在GithubActions CI中安装用于UWP开发的SDK吗?

问题描述 投票:0回答:2

我正在尝试构建一些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子句看起来像这样:

<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"

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

uwp windows-10-universal chocolatey github-actions github-ci
2个回答
1
投票

如果Chocolatey似乎无法正常工作,则可以尝试使用CLI修改Visual Studio。例如,从Powershell运行时,以下内容将Universal Platform工作负载添加到VS,而没有任何提示。

& "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所有环境中。

我在此处创建了示例存储库: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


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

© www.soinside.com 2019 - 2024. All rights reserved.