我正在尝试从Jenkins安装程序的命令行构建UWP应用程序(目标为16299)。 该系统仅具有VS构建工具2017。 使用此命令构建
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\msbuild.exe" /t:Rebuild /p:Configuration=Release;AppxBundle=Always;AppxBundlePlatforms="x86\x64\ARM" /p:BuildAppxUploadPackageForUap=true SOLUTION_FILE.sln
错误MSB4226:导入的项目" C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ WindowsXaml \ v15.0 \ Microsoft.Windows.UI.Xaml.CSharp。目标"没找到。此外,试图找到" Microsoft \ WindowsXaml \ v15.0 \ Microsoft.Windows.UI.Xaml.CSharp.targets"在$(MSBuildExtensionsPath) - " C:\ Program Files(x86)\ MSBuild"的后备搜索路径中。这些搜索路径在" C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ 15.0 \ Bin \ MSBuild.exe.Config"中定义。确认声明中的路径是正确的,并且该文件存在于其中一个搜索路径的磁盘上。
发现的另一个问题是nuget没有恢复任何包,所以更新了nuget到4.4.1然后我收到了错误
MSBuild自动检测:使用msbuild版本' 15.5.180.51428'来自' C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ 15.0 \ bin'。 没事做。此解决方案中的所有项目都没有指定任何要恢复的NuGet包。
与nuget 4.6.0相同的问题
我尝试在项目文件中添加以下内容
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle> </PropertyGroup>
与msbuild和nuget相同的问题,是否有人成功在Jenkins中构建UWP?
更新05-01-2015
所有这些变化在构建中没有更多问题, 但appx包不存在。可能是x86 / x64 / ARM的个人appx必须创建,然后需要某种合并。
所以需要进一步调查
答案 0 :(得分:0)
从MSBuild的目录路径中,我看到您可能已经安装了MSBuildTools安装程序而不是社区,专业版......版本。
我之前尝试过,发现它不完整,并且没有构建Uwp工具的所有依赖项,请查看有关问题的一些评论here。
第一种解决方法:您可以从VS Community or Professional安装Uwp Workload,因为它具有所有依赖关系,直到Microsoft修复BuildTools安装程序中的问题。
Bonus:如果要从命令行运行安装程序,可以像这样编写命令行:
vs_installer.exe --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools" ^
--add Microsoft.VisualStudio.Workload.Universal ^
--add Microsoft.VisualStudio.Component.Windows10SDK.14393 ^
--add Microsoft.Component.MSBuild ^
--passive --wait --norestart
更长的解决方法,我设法安装了其他依赖项,但我相信如果你自动化这个安装会有点麻烦,来自article
的代码片段从安装了VS2017的计算机上复制Sdks文件夹: c:\ Program Files(x86)\ Visual Studio \ 2017 \ Professional \ Build MSBuild \ Sdks 到您的构建机器: c:\ Program Files(x86)\ Visual Studio \ 2017 \ Build Tools \ MSBuild \ Sdks
对于掘金问题:
复制NuGet导入文件将从机器再次执行tr 使用VS2017,复制以下文件夹:C:\ Program Files (x86)\ Microsoft Visual 工作室\ 2017年\专业\ Common7 \ IDE \ CommonExtensions \微软\的NuGet 到你的构建机器:C:\ Program Files(x86)\ Microsoft Visual 工作室\ 2017 \编译工具\ Common7 \ IDE \ CommonExtensions \微软\的NuGet
注意:如果您稍后再来,并发现Microsoft修复了MSBuildTools安装程序中与Uwp相关的问题,请在此答案中对其进行评论以进行更新。