相关疑难解决方法(0)

BuildActivity忽略ToolsVersion

我在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)

msbuild tfs tfs2012

33
推荐指数
3
解决办法
1万
查看次数

在TFS 2012上构建c#6.0

如何在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)

c# msbuild tfs roslyn tfs2012

22
推荐指数
2
解决办法
7344
查看次数

使用C#6.0功能运行TFS Build

我刚刚开始nameof()在我的项目中使用C#6.0 的运算符.现在(在办理登机手续时,呃...)我(或更好:构建代理)拒绝构建项目(本地编译就好了),因为它无法找到nameof()表达式.

我开始在构建控制器和TFS服务器本身上安装VS 2015,但无济于事.如何让我的TFS 2013 Update 5构建具有C#6.0功能的项目?

我已经考虑过编辑BuildProcessTemplate,但我们在所有构建定义中一直使用默认模板,我甚至不知道这是否是正确的方法.

c# msbuild tfs visual-studio c#-6.0

19
推荐指数
1
解决办法
1万
查看次数

C#6.0 TFS构建

我正在尝试在Visual Studio 2015 CTP中使用C#6.0的新功能,而我的项目无法在TFS 2013和Visual Studio Online中构建.

我知道Visual Studio使用新的Roslyn编译器,它取代了原生的.NET编译器,因此TFS构建代理无法编译.

我的问题是如何在构建代理上(以及在Visual Studio Online中)安装Roslyn并告诉构建代理使用此编译器而不是本机?

tfs roslyn c#-6.0 visual-studio-2015 azure-devops

18
推荐指数
1
解决办法
7009
查看次数

更新构建控制器/代理以构建C#6 /.NET 4.6应用程序

这是场景:

我们使用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和新的Microsoft Build Tools

  • 而在步骤这里这是非常有前途的:

我用其中一个模板创建了一个新的构建定义

通过Visual Studio Online的Web访问创建新的代理程序池.下载

ConfigureAgent.ps1并在构建服务器上执行它以创建新的

剂.但我无法弄清楚如何利用新创建的代理.

我的问题是:如何更新构建代理程序以便在没有失败的情况下运行

尊重新的.NET版本?

c# tfsbuild tfs2013 visual-studio-2015

18
推荐指数
2
解决办法
1万
查看次数

MSbuild错误:找不到用于v140的构建工具(Platform Toolset ='v140')

我有一个包含大量项目(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中的项目)会遇到麻烦,因此无法正常工作。

任何帮助将不胜感激。

c++ msbuild cross-platform tfsbuild visual-studio-2015

11
推荐指数
2
解决办法
6万
查看次数

tfs构建服务器 - 字符串插值$字符无效

$在我的代码中使用字符串插值.它编译得很好但是当我签入我的代码时,构建服务器会抛出错误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中编译.

tfsbuild string-interpolation

9
推荐指数
1
解决办法
723
查看次数

TeamCity使用C#6构建

我们使用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进行了以下更改:

  1. 安装Visual Studio 2015 Update 2
  2. 更改了执行构建的PowerShell脚本

来自:

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".但据我所知,我不会使用或参考这个.也许我在这里弄错了,在这种情况下,我们将非常感激地接受下一步该做什么的白痴指南.

msbuild teamcity tfsbuild roslyn c#-6.0

7
推荐指数
1
解决办法
4683
查看次数

VS2015使用TFS2013构建

我正在尝试使用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中构建失败但没有给出真正的答案.有没有人知道如何解决这个问题.

msbuild tfs

6
推荐指数
1
解决办法
1714
查看次数

使用C#6运行构建

我们最近从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语法,我们需要做些什么?

tfsbuild c#-6.0 tfs-2015

5
推荐指数
0
解决办法
336
查看次数