我们正在使用Visual Studio 2012来构建我们的C ++应用程序 如果我从源文件夹中的命令行运行:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /p:Configuration=Release /p:Platform=Win32 Myproject2012.sln
它工作正常。如果它是通过我的构建服务器(Atlassian bamboo)的Buildscript运行的,那么我会遇到很多错误。前两行..
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets(347,5): error MSB4018: The "CL" task failed unexpectedly. [C:\data\bamboo-home\xml-data\build-dir\XXX-IMB-JOB1\XXX\common\common.vcxproj]
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets(347,5): error MSB4018: System.TypeInitializationException: The type initializer for 'Microsoft.Build.Utilities.FileTracker' threw an exception. ---> System.IO.DirectoryNotFoundException: Das System kann den angegebenen Pfad nicht finden. (Exception from HRESULT: 0x80070003) [C:\data\bamboo-home\xml-data\build-dir\XXX-IMB-JOB1\XXX\common\common.vcxproj]
这种行为的原因是什么?
答案 0 :(得分:1)
如果您使用Sysinternals psexec,您可以在Bamboo之外运行构建系统。
psexec -i -s cmd.exe
然后尝试C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /p:Configuration=Release /p:Platform=Win32 Myproject2012.sln
然后创建一个具有提升权限并重试的shell。 应该帮助看看它是权限的东西还是路径的东西。我已经尝试构建C ++作为系统,它似乎PK。 或者可能是这样的: MSBUILD MSB4018 error
答案 1 :(得分:0)
我发现了问题 系统帐户有一个默认的临时目录,msbuild不喜欢 我将其更改为“c:\ temp”,它没有用!
如果其他人遇到问题,您可以在注册表中更改
HKEY_USERS\.DEFAULT\Environment