向解决方案添加C ++项目时出现CS1705错误

时间:2016-08-17 07:48:51

标签: c# c++ tfs msbuild

嗨,谢谢你。 我使用TFS build 2013(团队服务,而不是内部部署)来构建我的解决方案。在解决方案中创建新的C ++项目后,我无法成功构建。 我在构建机器上遇到的错误是:

    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis\Microsoft.CodeAnalysis.targets
    (219): An error has occurred during compilation. error CS1705: Assembly 'Microsoft.Build.Utilities.Core,
    Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' uses 'Microsoft.Build.Framework,
    Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher
    version than referenced assembly 'Microsoft.Build.Framework, Version=12.0.0.0, Culture=neutral,
    PublicKeyToken=b03f5f7f11d50a3a'

    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis\Microsoft.CodeAnalysis.targets
    (219): The "SetEnvironmentVariable" task was not found. Check the following: 1.) The name of the task in the project file is the same as the name
    of the task class. 2.) The task class is "public" and implements the Microsoft.Build.Framework.ITask
    interface. 3.) The task is correctly declared with <UsingTask> in the project file, or
    in the *.tasks files located in the "C:\Program Files (x86)\MSBuild\14.0\bin\amd64" directory.

我对互联网上的错误CS1705有所了解,但我仍然不明白为什么会出现这个错误 - 该项目是一个空项目,没有任何参考,没有其他项目参考它

我在所有C#项目和我的构建定义中都针对.NET framework 4.6.1我添加了这些msbuild参数:/tv:14.0 /p:VisualStudioVersion=14.0因此它使用了2015& #39; c#编译器的版本。 这个C ++项目的目标平台是VS 2015(v140),如下所示: C++ project configuration

毋庸置疑,当我从要构建的项目列表(配置管理器)中删除此项目时,解决方案已成功构建。

非常感谢任何帮助/线索!

2 个答案:

答案 0 :(得分:1)

这个问题不是我想象的那样。似乎它与CodeAnalysis和与之相关的一些环境变量有关。 在我的构建定义中,我正在禁用CodeAnalysis,甚至在C ++项目属性中,它被明确禁用。在我在构建机器上的此文件中的“SetCABuildNativeEnvironmentVariables”目标上注释掉一些属性之后:

"C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis\Microsoft.CodeAnalysis.targets"

问题消失了。

这是一个令人讨厌的解决方法,但因为我并不完全了解真正发生的事情。

非常感谢!

答案 1 :(得分:0)

似乎还有一些东西指向"Microsoft.Build.Framework, Version=12.0.0.0"

  

/tv:14.0命令参数无法正常工作。看到:   BuildActivity ignores ToolsVersion

     

作为一种变通方法,您需要自定义构建过程模板:

     
      
  1. 在Visual Studio中打开模板,找到Run MSBuild for   项目MSBuild活动。
  2.   
  3. 将ToolVersion设置为“14.0”。
  4.   
  5. 将ToolPath设置为MSBuild14的目标(默认情况下:“C:\ Program Files   (86)\的MSBuild \ 14.0 \滨“)。
  6.   
  7. 签入此构建过程模板并重新排队构建。
  8.   

您还可以参考TFS 2013 building .NET 4.6 / C# 6.0

Marson 的答案