我们使用TFS 2013作为构建服务器.我已经开始了一个C#6.0项目,我正在努力建立它.我正在使用新的null条件运算符和我的构建chokes.我已经尝试在TFS服务器上安装了几个东西,包括目标包和VS 2015.我已经尝试将/tv:14.0提供给MSBuild参数.
Configuration\EntityEntityConfig.cs(270):无效的表达式术语'.'
Configuration\EntityEntityConfig.cs(283):无效的表达式术语'.'
Configuration\EntityEntityConfig.cs(283):语法错误,':'预期
......等
在这一点上,我不知道还有什么可以尝试.任何建议将不胜感激.
我有一个框架所针对的项目.NET Framework 4.6.1,作为tfs上持续集成过程的一部分,我们创建了一个Build Solution任务,以确保代码正确编译.
现在TFS服务器有最新版本的.Net Famework 4.6.2.在寄存器中,这是框架的Release键的值
在所有其他操作系统版本上:394806 => .NET Framework 4.6.2
但是当构建运行时,它会出现此错误:
Error CS1056: Unexpected character '$'
Run Code Online (Sandbox Code Playgroud)
我不想用字符串插值替换string.Format来解决这个问题,请提供另一种解决方法来解决它.
我是否需要在TFS服务器上安装其他东西?
如何在TFS 2012上使用C#6.0功能构建Visual Studio 2015解决方案,而无需在构建代理上安装Visual Studio 2015(使用Microsoft Build Tools 2015 RC)
我已经安装了MSBuild工具,但我仍然有例外.如何告诉我的构建模板使用MSBuild 14(仅适用于一个项目)
为什么我的TFS 2012编译异步并等待(c#5.0)而BuildAgent只安装了Visual Studio 2012而没有任何问题?
我尝试将BuildProcessTemplate的ToolPath更改为MSBuild/14.0 /但是我遇到了构建错误:
C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.CSharp.targets(316):"csc2.exe"已退出,代码为-532462766.
安装Microsoft.Net.Compilers 1.0.0-rc2编译器会出现相同的错误.
如果我使用命令行编译项目,我会得到完全相同的错误/尽管在使用具有完全相同参数的命令行时我的开发机器上没有错误.
这是我在命令行中获得的异常:
C:\Program Files (x86)\MSBuild\14.0\bin\csc2.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:TRACE /highentro.....
Unhandled Exception: System.InvalidProgramException: Common Language Runtime detected an invalid program.
at System.Collections.Immutable.SecurePooledObject`1.Use[TCaller](TCaller& caller)
at System.Collections.Immutable.SortedInt32KeyNode`1.Enumerator.PushLeft(SortedInt32KeyNode`1 node)
at System.Collections.Immutable.SortedInt32KeyNode`1.Enumerator..ctor(SortedInt32KeyNode`1 root)
at System.Collections.Immutable.ImmutableDictionary`2.Enumerator..ctor(SortedInt32KeyNode`1 root, Builder builder)
at Microsoft.CodeAnalysis.RuleSet.GetDiagnosticOptionsFromRulesetFile(Dictionary`2 diagnosticOptions, String resolvedPath, IList`1 diagnosticsOpt, CommonMessageProvider messageProviderOpt)
at Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser.Parse(IEnumerable`1 args, String baseDirectory, String additionalReferencePaths)
at Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser.CommonParse(IEnumerable`1 args, String baseDirectory, String …Run Code Online (Sandbox Code Playgroud) 这是场景:
我们使用Visual Studio Online和我们公司网络中的内部部署构建服务器与TFS 2013在门控签入和发布后构建我们的解决方案.
现在我们从Visual Studio 2013升级到Visual Studio 2015 Enterprise并升级到新的.NET版本.我们非常渴望利用C#6的新功能,但在第一次登记后我们经历了构建失败.
(抱歉没有图片,因为我缺乏声誉)
异常消息:MSBuild错误1已结束此构建.您可以在上面的消息中找到有关此错误原因的更多具体信息.(类型BuildProcessTerminateException)异常堆栈跟踪:位于System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem的System.Activities.CodeActivity.InternalExecute(ActivityInstance实例,ActivityExecutor执行程序,BookmarkManager bookmarkManager)的System.Activities.Statements.Throw.Execute(CodeActivityContext context)处. .ExecuteBody(ActivityExecutor executor,BookmarkManager bookmarkManager,Location resultLocation)ApplicationManager.cs(33,0)意外的字符'$'ApplicationManager.cs(33,0); 预期
似乎构建代理不理解新语法并仍然使用旧版本编译.
我为解决这个问题所做的是:
在内部部署的构建服务器上安装Visual Studio 2015(仍安装旧版Visual Studio 2013)
重新启动构建控制器
按照此处的步骤操作:https://stackoverflow.com/a/28327275/4919063
这基本上是安装Visual Studio 2015和新的Microsoft Build Tools
我用其中一个模板创建了一个新的构建定义
通过Visual Studio Online的Web访问创建新的代理程序池.下载
ConfigureAgent.ps1并在构建服务器上执行它以创建新的
剂.但我无法弄清楚如何利用新创建的代理.
我的问题是:如何更新构建代理程序以便在没有失败的情况下运行
尊重新的.NET版本?
我$在我的代码中使用字符串插值.它编译得很好但是当我签入我的代码时,构建服务器会抛出错误BC30037: Character is not valid.以下是我如何使用字符串插值的示例:
dim r = New RadNode($"{acq.FormNo} - ${CInt(acq.TotalAmount)}", icon:=RadTreeIcons.RedTriangle)
Run Code Online (Sandbox Code Playgroud)
构建服务器安装了Visual Studio 2015 Entreprise版本.
如果我从命令提示符运行:
C:\Program Files (x86)\MSBuild\14.0\Bin>MSBuild /tv:14.0 "Proj.sln",代码编译文件.但是,如果我将上述参数更改为
C:\Program Files (x86)\MSBuild\14.0\Bin>MSBuild /tv:12.0 "Proj.sln", 我犯了同样的错误
我也做了这些改变:
我已将MSBuildArguments属性设置为/p:VisualStudioVersion=14.0并且还更改了TFSBuild.proj文件并将此行更改为<Project DefaultTargets="DesktopBuild" xmlns="schemas.microsoft.com/developer/msbuild/2003"; ToolsVersion="14.0">"但同样的问题正在发生.
更改了(web vbproj)文件,并将ToolSet版本从12.0更改为14.0.其他vb项目部分解决方案仍然以12.0为目标,但作为web vb项目的一部分在dll中编译.
我们最近从2010年升级到TFS 2015.由于这次升级,我们希望C# 6在我们的项目中开始使用语法,但每当我们这样做时,由于语法错误,构建失败.构建代理/控制器也来自TFS 2015安装程序(它是一组全新的服务器)
我们的构建使用TfvcTemplate.12.xamlProcess模板,它显然是TFS2013 xaml构建模板.
根据此答案,您可以修改模板以适当地设置ToolsVersion,但我们的模板没有Run MSBuild for Project项目,它有一个Run MSBuild活动,没有指定的属性.
我也尝试从这个答案的Build Definition中设置MSBuild tv:14.0和/p:VisualStudioVersion=14.0参数,但这也无法解决问题.
为了使构建接受C# 6语法,我们需要做些什么?
我们已经在本地安装了Team Foundation Server(TFS)2015。我们想使用Visual Studio 2017来利用最新的C#语言功能。我们尚未准备好升级到TFS2017。要在TFS 2015中构建最新的C#语言功能,需要执行哪些步骤?