Ann*_*ova 103 c# msbuild continuous-integration roslyn c#-6.0
我想在我的项目中使用C#6(空传播,其他功能).
我在我的电脑上安装了VS 2015,它的工作非常出色并构建了测试代码
var user = new SingleUserModel(); //all model fields are null
var test = user.User?.Avatar?["blah"];
Run Code Online (Sandbox Code Playgroud)
但是当我将我的项目推送到repo并且CI开始构建它时,由于不支持,构建失败?.
我已经在CI服务器上安装了VS2015,但是喜欢它不使用它.我能做什么?
CI - CruiseControl .NET构建 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
jes*_*ing 162
请务必致电:
C:\Program Files (x86)\MSBuild\14.0\Bin\MsBuild.exe
Run Code Online (Sandbox Code Playgroud)
这是随Visual Studio 2015一起提供的MsBuild版本,并调用了解这一点的C#编译器.您可以通过安装任何版本的Visual Studio 2015或安装独立的Microsoft Build Tools 2015在您的系统上获得此版本的MsBuild .
添加对以下NuGet包的引用也将强制使用新的编译器:
Install-Package Microsoft.Net.Compilers
Run Code Online (Sandbox Code Playgroud)
Muh*_*Kuh 60
顺便说一下,您还可以在构建服务器上安装"Microsoft Build Tools 2015"而不是VS2015.
https://www.microsoft.com/en-us/download/details.aspx?id=48159
它将MSBuild安装到相同的路径:
C:\Program Files (x86)\MSBuild\14.0\Bin\MsBuild.exe
Run Code Online (Sandbox Code Playgroud)
use*_*903 10
你可能已经有了这个工作,但这可能会在将来帮助其他人.我最近遇到了这个问题,它让我朝着正确的方向前进,最终找到了解决方案.
另一种可能的解决方案是手动更新项目文件,以定位您希望构建项目的MSBuild版本.
我最近经历了TeamCity构建服务器更新,我已经安装了Microsoft Build Tools 2015.我以为我在构建服务器上安装了所有内容,我的解决方案针对的是C#6.0,我的每个项目都针对.net 4.6.1.和你一样,C#6.0专用代码在我的本地环境中构建得很好,但我的TeamCity构建服务器并不喜欢它.
正如其他人所说,我尝试使用Microsoft.Net.Compilers NuGet包.它的最新版本允许构建在我的构建服务器上工作,但它不允许我在本地发布我的代码(我的要求).该NuGet包的早期版本会让我发布,但构建不起作用.
我发现我必须做的是最终修改我的解决方案中的每个项目文件,专门针对可以处理C#6.0代码的MSBuild版本.在我的每个项目文件中,我找到了类似于以下行的行:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Run Code Online (Sandbox Code Playgroud)
该行的关键组件是其中的ToolsVersion部分.我只是在我的项目文件中更改了这一行,以阅读以下内容:
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Run Code Online (Sandbox Code Playgroud)
这里的不同之处在于我的目标是版本14,而不是4.版本14.0与Build Tools 2015相对应.通过更改它,我的TeamCity构建服务器使用了正确的MSBuild版本,并且能够构建我的C#6.0代码.
我还必须手动更新这个的TargetFrameworkVersion xml节点以使用4.6.1,因为VS2015没有做正确的事情并搞砸了我的本地构建,但这与此无关.
如果我错了,请有人纠正我,但仅供参考,我认为版本号是这样的:
4.0 = VS2012
12.0 = VS2013
14.0 = VS2015
15.0 = VS2017
我相信如果你想使用.net 4.7,你必须安装Build Tools 2017并让你的项目定位15.0而不是14.0,但我还没有验证这一点.
| 归档时间: |
|
| 查看次数: |
51973 次 |
| 最近记录: |