CI服务器上缺少Microsoft.Windows.UI.Xaml.CSharp.targets

时间:2017-07-11 18:21:41

标签: msbuild uwp continuous-integration

问题

我刚刚在源代码管理中添加了一个UWP应用程序。但是,我的CI服务器(Jenkins)似乎并不喜欢这样:

  

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

这源于以下UWP项目文件导入:

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

在我的本地计算机上,我可以看到此文件位于:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.CSharp.Targets

显然,这是由于我本地安装的Visual Studio 2017.但是,CI服务器没有安装Visual Studio。我想这就是MSBuildExtensionsPath正在解决错误中提到的路径的原因。

依赖关系

CI服务器上已安装以下项目:

  • Visual Studio Build Tools 2017(download
  • Windows 10 SDK 10.0.15063.468(download
  • Xamarin.VisualStudio 4.5.0.476(download
  • .NET Framework 4.5.1-4.7 SDK

我认为这些将包含必要的依赖项,但我无法在任何地方找到Microsoft.Windows.UI.Xaml.CSharp.targets

解决方法

复制本地计算机上的目录

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\WindowsXaml\v15.0

的CI服务器
C:\Program Files (x86)\MSBuild\Microsoft\WindowsXaml\v14.0

似乎解决了这个错误,但感觉非常黑客。

问题

如果没有在CI服务器上安装Visual Studio 2017或手动复制/重命名文件,有没有办法解决这个问题?

更新2018-01-12:

最新版本的VSBT仍然是一个问题。唯一要报告的是错误从v14更改为v15。将同一目录复制到v15后,错误再次消失。然而,另一个看似无关的错误出现了:

  

C:\ Program Files(x86)\ Microsoft Visual   工作室\ 2017年\编译工具\的MSBuild \ 15.0 \斌\ Microsoft.Common.CurrentVersion.targets(1124,5):   错误MSB3644:框架的引用程序集   &#34; .NETCore,版本= 5.0版&#34;没找到。要解决此问题,请安装   适用于此框架版本的SDK或Targeting Pack,或重新定位您的   应用程序到您拥有SDK的框架版本   或安装了Targeting Pack。请注意,程序集将被解析   来自全球大会缓存(GAC)并将用于代替   参考组件。因此您的装配可能不正确   针对您想要的框架。

更新2018-01-15

通过将以下目录从本地计算机复制到构建服务器来解决

.NETCore,Version=v5.0错误:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v5.0

虽然UWP构建成功,但不会生成appxbundle。这似乎表明VSBT缺少另一种依赖。

0 个答案:

没有答案