我正在尝试在团队城市服务器上构建.Net 4.5.1 Web项目。我已经安装了Windows 8.1 SDK,它似乎包含程序集Microsoft.Build.Tasks.v4.0.dll
。但是,当我尝试构建项目时,我仍然会收到错误:
C:\TeamCity\buildAgent\work\bdb0a42dd3d7277\.nuget\NuGet.targets(71, 9): error MSB4175: The task factory "CodeTaskFactory" could not be loaded from the assembly "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Build.Tasks.v4.0.dll". Could not load file or assembly 'file:///C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Build.Tasks.v4.0.dll' or one of its dependencies. The system cannot find the file specified.
我需要在构建服务器上安装什么或从构建环境中复制什么?
更新
这个问题仍然存在,但是现在我已经通过编辑项目文件来解决了这个问题,而不是使用MSBuild 4.0,而不是12个。
答案 0 :(得分:2)
通过msbuild
使用rake
任务时出现类似问题:http://www.beta.microsoft.com/VisualStudio/feedback/details/806393/error-trying-to-build-using-msbuild-from-code
您好,感谢您的反馈。我相信你遇到这个问题是因为MSBuild移出.NET Framework的副作用(这里有更多信息:http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of-visual-studio.aspx)。
您的项目引用了仍在.NET Framework中的旧版MSBuild。此版本一直使用到Visual Studio 2013.由于您从Visual Studio 2013调试项目,因此VisualStudioVersion环境变量自动设置为“12.0”。这导致2013年代码分析目标加载项目,但这些目标与旧版本的MSBuild不兼容,因为VS 2013仅使用MSBuild 12.0。
答案 1 :(得分:2)
您可以通过安装Microsoft Build Tools 2013来解决此问题。安装完成后(并且可能重新启动TeamCity服务器),您应该在Microsoft Build Tools 2013
下选择MSBuild version
作为TeamCity中所有“MSBuild”类型步骤的选项。选择这个,一切都应该很好,花花公子。
我更喜欢在构建服务器上安装VS,因为它在服务器上留下了相当小的占用空间。
答案 2 :(得分:1)
我不知道谁在这里有过错,但msbuild或团队城市都有倒退的事情。
涉及的两个文件是:
C:\Program Files (x86)\MSBuild\12.0\Bin\Microsoft.Build.Tasks.v12.0.dll
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll
如果团队城市错误消息需要Microsoft.Build.Tasks.v4.0.dll
文件夹中的C:\Program Files (x86)\MSBuild\12.0\bin\
,请将其从C:\Windows\Microsoft.NET\Framework\v4.0.30319\
复制到此处。或者如果它想要Microsoft.Build.Tasks.v12.0.dll
文件夹中的C:\Windows\Microsoft.NET\Framework\v4.0.30319\
,则将其从C:\Program Files (x86)\MSBuild\12.0\Bin\
文件夹中复制。
对我来说,神奇的组合是:
我将Microsoft.Build.Tasks.v12.0.dll
复制到C:\Windows\Microsoft.NET\Framework\v4.0.30319\
答案 3 :(得分:0)
在TeamCity的msbuild步骤中仔细检查您的工具并定位.Net框架,并确保它们设置为V4.0和.Net framework 4.5。还要确保.nuget目录中的NuGet.exe版本至少为2.7.0版。在纠正了这两件事之后,这个错误就消失了。
答案 4 :(得分:0)
我不确定问题是什么,但我们总是在运行Team City代理的计算机上安装Visual Studio。通常它会解决所有相关的依赖关系,包括MSBuild,.NET,构建目标等。
对于.NET 4.5.1,它将是Visual Studio 2013。
另一个建议 - Team City仅在TC 8.1中添加了对VS 2013和相关构建工具的支持 - http://confluence.jetbrains.com/display/TW/Gaya+8.1+EAP1+%28build+29353%29+Release+Notes#Gaya8.1EAP1%28build29353%29ReleaseNotes-MSVisualStudio2013supportinbuildrunners。可能升级到最新的TC可能有所帮助。
答案 5 :(得分:-1)
在csproj文件中更改“。这都需要做。