我正在尝试构建一些 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 以编程方式在 Windows2019 VM 中安装 UWP 工作负载(均使用这个包 https://chocolatey.org/packages/visualstudio2019-workload-universal and 这个其他 https://chocolatey.org/packages/visualstudio2019-workload-universalbuildtools;不是Windows 10 SDK https://chocolatey.org/packages/windows-sdk-10.1一个是因为它在尝试安装时出现错误):
- 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
(以及此版本下子文件夹中的其他版本)。更详细的可以看我的回答。
事实证明,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
文件(在我看来,这实际上可能是 CAKE 中的一个错误,默认情况下无法检测到 MSBuild 的正确版本......)。如果您想查看确切的修复(使用vswhere
找到 MSBuild),它是this https://github.com/nblockchain/ZXing.Net.Xamarin/commit/1a95f0e4fc439a5c091ee2ea0ae052925627d686.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)