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 以编程方式在 Windows2019 VM 中安装 UWP 工作负载(使用此软件包其他软件包;而不是Windows10SDK一个,因为它在尝试安装时会出错):

- 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(以及它的其他版本在这个下面的子文件夹中)。有关更多详细信息,请查看我的答案。

4

2 回答 2

3

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

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

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

于 2019-10-06T16:19:28.463 回答
1

如果 Chocolatey 似乎没有按预期工作,您可以尝试使用 CLI 修改 Visual Studio。例如,下面将通用平台工作负载添加到 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中。

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

您可以在 Visual Studio 文档中找到一组用于 Visual Studio 安装和Visual Studio 工作负载和组件 ID的命令行参数示例,以及如何使用命令行参数安装 Visual Studio 。

于 2019-10-04T10:20:26.540 回答