我在BuildAgent上运行持续集成构建,但我无法正常工作.我最近将代码库更改为C#6.0,并将项目更改为ToolsVersion 14.
我在Build Server(TFS 2012)上安装了Visual Studio 2015.如果我现在检查C#6.0代码,则构建在第一个项目上失败("$"是意外的或"某事")
BuildTemplate是"DefaultTemplate.11.1"如果我检查日志文件,构建调用错误的csc.exe(C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Csc.exe)
如果我使用没有任何开关的项目启动MSBuild/14.0/Bin/MSBuild可执行文件,则构建成功.为什么TFS BuildAgent不使用ToolsVersion,如何让TFS 2012构建我的Visual Studio 2015解决方案
如果我添加MSBuildArgument /tv:14.0它仍然失败.因为它称为MSBuild的第12版,它是Visual Studio 2015附带的.NET 4.6 RC Framework的一部分.
如果我尝试运行我的UnitTest,更改MSBuild Activity的ToolsPath确实可以使Build工作但是吐出子弹.我得到了一个Missing dll"Microsoft.VisualStudio.TestPlatform.Utilities.dll"异常.(VS2012也在Build Server上安装).
更新:我现在在单元测试中遇到了不同的错误:
TF900548: An error occurred publishing the Visual Studio test results.
Details: 'Method not found:
'System.Collections.Generic.IEnumerable<System.String>
Microsoft.VisualStudio.TestPlatform.Utilities.InferSettingsHelper.MergeRunSettingsAndFindCompatibleSources(Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture
ByRef,
Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion
ByRef, System.String, System.String,
System.Collections.Generic.IDictionary`2<System.String,System.Collections.Generic.KeyValuePair`2<Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture,Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion>>,
System.Xml.XPath.IXPathNavigable, System.String ByRef)'.'
Run Code Online (Sandbox Code Playgroud) 如何在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) 我刚刚开始nameof()在我的项目中使用C#6.0 的运算符.现在(在办理登机手续时,呃...)我(或更好:构建代理)拒绝构建项目(本地编译就好了),因为它无法找到nameof()表达式.
我开始在构建控制器和TFS服务器本身上安装VS 2015,但无济于事.如何让我的TFS 2013 Update 5构建具有C#6.0功能的项目?
我已经考虑过编辑BuildProcessTemplate,但我们在所有构建定义中一直使用默认模板,我甚至不知道这是否是正确的方法.
我正在尝试在Visual Studio 2015 CTP中使用C#6.0的新功能,而我的项目无法在TFS 2013和Visual Studio Online中构建.
我知道Visual Studio使用新的Roslyn编译器,它取代了原生的.NET编译器,因此TFS构建代理无法编译.
我的问题是如何在构建代理上(以及在Visual Studio Online中)安装Roslyn并告诉构建代理使用此编译器而不是本机?
这是场景:
我们使用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版本?
我有一个包含大量项目(C ++和C#)的解决方案。我已将该解决方案升级到VS2015,因此大多数工具集的工具集版本现在都设置为V140,但是少数项目仍需要保留在V110中(第三方库等)。当我在Visual Studio 2015中构建解决方案时,它可以很好地构建,但是在TeamFoundationServer尝试构建它时,它失败并显示以下错误:
C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.Cpp.Platform.targets(44):找不到v140的构建工具(Platform Toolset ='v140')。要使用v140构建工具进行构建,请单击“项目”菜单或右键单击解决方案,然后选择“更新VC ++项目...”。安装v140以使用v140构建工具进行构建。
我试图将VisualStudioVersion或正确的MSBuild版本的路径指定为构建参数,但由于其余项目(V110中的项目)会遇到麻烦,因此无法正常工作。
任何帮助将不胜感激。
我$在我的代码中使用字符串插值.它编译得很好但是当我签入我的代码时,构建服务器会抛出错误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中编译.
我们使用TeamCity(9.0.1)作为构建服务器,但最近升级了我们的ASP.NET MVC解决方案以使用VS2015和C#6语法,现在我在构建服务器上收到以下错误消息:
无法启动构建运行器
更具体地说:
C:\ TeamCity\buildAgent\work\86ee61c6c333dc3d\MyApplication\MyApplication.csproj.metaproj:错误MSB4025:无法加载项目文件.找不到文件'C:\ TeamCity\buildAgent\work\86ee61c6c333dc3d\MyApplication\MyApplication.csproj.metaproj'.
我在几个不同的帖子中遵循了建议(尽管这些主要是TFS专注而不是TeamCity,并且不直接引用缺少的".metaproj"文件):
总而言之,我对Build Server进行了以下更改:
来自:
msbuild'..\MyApplication.sln'/ t:Build/p:Configuration = Release/p:RunCodeAnalysis = Always /p:VisualStudioVersion=12.0
致:
msbuild'..\MyApplication.sln'/ t:Build /tv:14.0/p:GenerateBuildInfoConfigFile = false/p:Configuration = Release/p:RunCodeAnalysis = Always/p:VisualStudioVersion = 14 .0
注意:
如果我登录构建服务器并尝试使用VisualStudio 2015编译解决方案,那么这很好.
在上面提到的一个帖子中,它讨论了从"TfvsTemplate.11.1.xaml"升级到"TfvsTemplate.12.xaml".但据我所知,我不会使用或参考这个.也许我在这里弄错了,在这种情况下,我们将非常感激地接受下一步该做什么的白痴指南.
我正在尝试使用TFS2013为VS2015解决方案做一个计划.在buildserver VS2015上安装并更改了buildtemplate,因此msbuild有一个参数\ tv:14.0,但是当一个开始构建时我收到以下错误:
C:\ Program Files(x86)\ MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(96):无效的静态方法调用语法:"[Microsoft.Build.Utilities.ToolLocationHelper] :: GetPlatformSDKDisplayName($(TargetPlatformIdentifier) ,$(TargetPlatformVersion))".找不到方法'Microsoft.Build.Utilities.ToolLocationHelper.GetPlatformSDKDisplayName'.静态方法调用应采用以下形式:$([FullTypeName] :: Method()),例如$([System.IO.Path] :: Combine(
a,b)).
buildserver已重新启动但我仍然收到错误.我还检查了这个帖子:在TFS中构建失败但没有给出真正的答案.有没有人知道如何解决这个问题.
我们最近从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语法,我们需要做些什么?