为什么MSBuild在C:\ for Microsoft.Cpp.Default.props而不是c:\ Program Files(x86)\ MSBuild中查找? (错误MSB4019)
当我运行msbuildbuild立一个vc2010项目时,我得到以下错误:
error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
- msbuild位于c:\ Program File(x86)\ MSBuild
- HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolVersions \ V4.0 VCTargetsPath设置为$(MSBuildExtensionsPath32)\ Microsoft.Cpp \ v4.0 \
- 当运行msbuild / verbosity:diag as good system show MSBuildExtensionsPath32,MSBuildExtensionsPath64,MSBuildExtensionsPath设置为开始构build时的环境
- 在shell中设置MSBuildExtensionsPath32,MSBuildExtensionsPath64,MSBuildExtensionsPath设置为环境variables不会导致它们在构build开始时显示为Environment
修复尝试
- 卸载.net 4.5,修复.net 4.0
- 在系统variables中设置MSBuildExtensionsPath32,MSBuildExtensionsPath64,MSBuildExtensionsPath。
看来MSBuildExtensionsPath32没有被正确设置,并且设置MSBuildExtensionsPath没有帮助
SET MSBuildExtensionsPath="C:\Program Files\MSBuild"
请让我知道,如果你有什么想法阻碍了这个variables的正确设置。
谢谢
彼得
当使用他们的命令行工具发布一个cocos2d-x应用程序,调用MSBuild时,我遇到了这个问题。 我使用Win 7 64位,VS2013 express,cocos2d-x版本3.3,.NET Framework 4.5安装。
我运行cocos.py发布命令之前通过设置以下方法解决了这个问题:
SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120
对于那些不遵循MS禁止令的人(见Xv的回答 ),你仍然可以解决这个问题。
MSBuild使用VCTargetsPath
来find默认的cpp属性,但不能因为registry缺less这个string值。
检查string值
- 启动regedit
- 导航到
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
- 检查
VCTargetsPath
键。 值应该=“$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
”
修理
- 启动regedit导航到
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
- 添加string值
VCTargetsPath
- 将值设置为“
$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
”
注意: HKLM
代表HKEY_LOCAL_MACHINE
。
为Windows SDK 7.1安装Microsoft Visual C ++ 2010 Service Pack 1编译器更新修复了在Windows7 x64上构build的MSB4019
错误。
该更新的自述文件指出推荐的顺序是
- Visual Studio 2010
- Windows SDK 7.1
- Visual Studio 2010 SP1
- 用于Windows SDK 7.1的Visual C ++ 2010 SP1编译器更新
在64位系统上,MSBuild默认为以下属性(其中C:是SystemDrive):
MSBuildExtensionsPath = C:\Program Files (x86)\MSBuild MSBuildExtensionsPath32 = C:\Program Files (x86)\MSBuild MSBuildExtensionsPath64 = C:\Program Files\MSBuild
如果没有,这意味着你要么安装了一些自定义的第三方覆盖目标,或者你的MSBuild安装已损坏。
试一试:
- 修复.NET安装
- 应用最新的Visual Studio Service Pack
-
MSBuildExtensionsPath
手动设置MSBuildExtensionsPath
(注意在64位机器上的x86
部分)
我最近遇到了同样的问题,在按不同的顺序安装不同的软件包后,它变得非常混乱。 然后我发现这个回购 – https://github.com/felixrieseberg/windows-build-tools
npm install --global windows-build-tools
它安装了编译大多数节点模块所需的Python&VS Build工具。 它工作的一种享受!
为Windows SDK 7.1安装Microsoft Visual C ++ 2010 Service Pack 1编译器更新为我工作。 不过,我遇到了更新问题,因为我已经安装了VS 2010和VS 2010 SP1。 如上面Xv所述,readme.htm文件包含“已知问题”部分中最常见安装问题的解决scheme。 我将按照readme.htm中的说明进行操作,并在每次故障排除尝试后重新启动计算机,因为有些安装会写入registry。
我遇到了这个错误,编写一个生成脚本,将recursion挖掘任何find的MSBuild.exe文件的C:\ Windows \ Microsoft.NET文件夹后将MSBuild放在%PATH%。 最后find的命中是放在path上的目录。 由于dir
命令会在Framework64
之后碰到Framework64
文件夹,我得到了放在我path上的64位MSBuild之一。 我试图构build一个Visual Studio 2010解决scheme,并最终将searchstring从C:\Windows\Microsoft.NET
更改为C:\Windows\Microsoft.NET\Framework
这样我就可以使用32位MSBuild.exe了。 现在我的解决scheme文件build立。
我刚添加VCTargetsPath={c:\...}
作为我的Hudson作业的环境variables。
MSBuild是一个独立的构build工具,经常与其他工具捆绑在一起。 它可能已经安装在您的计算机上与.NET(旧版本),Visual Studio(新版本)甚至Team Foundation Build。
MSBuild需要configuration文件,编译器等(一个工具集),匹配将使用它的Visual Studio或TFS的版本,以及将编译源代码的.NET版本。
根据MSBuild的安装方式,configuration文件可能位于一个或多个path中。
- C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \
- C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V120 \
- C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \
正如其他答案中所述,registry项目和/或环境variables点必须到ToolSetpath。
- HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0下的VCTargetsPath项
- VCTargetsPath环境variables。
偶尔,像安装工具这样的操作会使registry和/或环境variables设置不正确。 其他答案是修复它们的所有变化。
我唯一需要补充的是环境variables对我来说不起作用,
为了logging, Microsoft.Cpp.Default.props
文件可以修改env var VCTargetsPath
并使该var的后续使用不正确。 我有这个问题,并通过将VCTargetsPath10
和VCTargetsPath11
设置VCTargetsPath10
与VCTargetsPath11
相同的值来解决此问题。
这应该根据您使用的VS版本进行调整。
- 如何将IIS 7 Web部署与MSBuild(TeamCity)集成
- 无法findsn.exe签署大会
- 卡住不活动的msbuild.exe进程,lockingStylecop.dll,Nuget AccessViolationException和CIbuild立相互冲突的奥秘
- 节点包不在Windows 8.1上生成 – 缺lessMicrosoft.Cpp.Default.props
- 使用msbuild指定解决scheme的项目文件
- 使用msbuildbuild立一个解决scheme文件
- 如何将ILMerge集成到Visual Studio生成过程中以合并程序集?
- 此项目引用了此计算机上缺less的NuGet程序包
- 在项目锥体之外的.csproj中包含内容文件