从历史上看,这已经使用Microsoft Build Tools完成.但似乎构建工具可能不适用于2015年之后的版本.替换似乎是Visual Studio构建工具,它似乎还没有真正的主页.
我下载了VS2017 Professional安装程序,然后转到Individual Components选项卡.然后,摘要告诉我Visual Studio核心编辑器在那里,占用753MB.我不想要编辑.只是msbuild.没有办法取消选择编辑器.
有没有办法安装最新版本的msbuild而不安装Visual Studio IDE?
我正在尝试将我们的构建服务器(jenkins)从Visual Studio 2015升级到2017年.我们正在通过MS-Build构建.我已按照此答案中的说明下载并安装了MS-Buld工具.如果我编译我的项目,我会收到一个Microsoft.WebApplication.targets未找到的错误.
详细错误:
error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets"
Run Code Online (Sandbox Code Playgroud)
我在MS-Build目录中执行了一个find:
PS C:\Program Files (x86)\MSBuild> dir -Recurse -Filter "Microsoft.WebApplication.targets"
Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 11.01.2012 00:23 19654 Microsoft.WebApplication.targets
Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 22.07.2013 01:25 19995 Microsoft.WebApplication.targets
Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 06.07.2015 21:55 20118 Microsoft.WebApplication.targets
Directory: C:\Program …Run Code Online (Sandbox Code Playgroud)我刚刚在源代码控制中添加了一个UWP应用程序.但是,我的CI服务器(Jenkins)似乎不喜欢这样:
错误MSB4019:找不到导入的项目"C:\ Program Files(x86)\ MSBuild\Microsoft\WindowsXaml\v14.0\Microsoft.Windows.UI.Xaml.CSharp.targets".确认声明中的路径是否正确,以及该文件是否存在于磁盘上.
这源于以下UWP项目文件导入:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
Run Code Online (Sandbox Code Playgroud)
在我的本地计算机上,我可以看到此文件位于:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.CSharp.Targets
Run Code Online (Sandbox Code Playgroud)
显然,这是由于我本地安装的Visual Studio 2017.但是,CI服务器没有安装Visual Studio.我想这就是MSBuildExtensionsPath解决错误中提到的路径的原因.
CI服务器上已安装以下项目:
我假设这些将包括必要的依赖项,但我找不到Microsoft.Windows.UI.Xaml.CSharp.targets任何地方.
复制本地计算机上的目录
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\WindowsXaml\v15.0
Run Code Online (Sandbox Code Playgroud)
到CI服务器
C:\Program Files (x86)\MSBuild\Microsoft\WindowsXaml\v14.0
Run Code Online (Sandbox Code Playgroud)
似乎解决了错误,但感觉非常hacky.
有没有办法解决这个问题,而无需在CI服务器上安装Visual Studio 2017或手动复制/重命名文件?
对于最新版本的VSBT,这仍然是一个问题.唯一要报告的是错误从v14更改为v15.将同一目录复制到v15后,错误再次消失.但是,出现了另一个看似无关的错误:
C:\ Program Files(x86)\ Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1124,5):错误MSB3644:框架的参考程序集".NETCore,Version = v5.0"未被发现.要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本.请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集.因此,您的程序集可能无法正确定位到您想要的框架.
.NETCore,Version=v5.0 通过将以下目录从本地计算机复制到构建服务器来解决错误:
C:\Program …Run Code Online (Sandbox Code Playgroud)