找不到“ C:\ Microsoft.Cpp.Default.props”


81

我在Visual Studio 2013中创建了一个项目。

该项目文件具有以下属性:

ToolsVersion =“ 12.0”,PlatformToolset = v120。

我安装了Visual Studio 2013和Microsoft Build Tools 2015。使用MSBuild 12.0成功构建了该项目。在尝试使用MSBuild 14.0进行构建时,出现错误

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. 

据我了解,问题在于变量VCTargetsPath没有得到评估。如果我在生成之前指定变量VCTargetsPath(值为C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V120),则可以解决此问题。

但是,如果路径不同,此方法不是很方便。是否有可能以某种更好的方式解决问题?

注册表项及其值:

HKLM\Software\WOW6432Node\Microsoft\MSBuild\ToolsVersions\12.0\VCTargetsPath $([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))

尝试使用MSBuild 14.0进行构建时,您如何做到这一点?您可能应该先调用vcvars.bat(或等效的构建工具2015)
。– stijn

同意stijn,请通过vcvars.bat设置命令行构建的路径和环境变量,并检查它是否对您有用。有关为命令行构建设置路径和环境变量的详细信息,请参阅:msdn.microsoft.com/en-us/library/f2ccy3wt.aspx
Zhanglong Wu-MSFT

Answers:


61

我花了两个小时解决了这个问题,但是我终于完成了。

以下解决了我的问题:

  1. 在提升的命令提示符(admin)上运行此命令: npm install --global --production windows-build-tools。如果您没有npm,建议您安装它,否则将无法正常工作。
  2. 将安装目录(在我的情况下C:\Program Files (x86)\MSBuild\14.0)的所有权更改为您的用户,而不是admin。(属性>安全性>高级)。

9
谢谢。我只需要(重新)跑npm install -g --production windows-build-tools
Dan Atkinson

@Nic Szer您可以向我解释第二步吗?我无法理解。
Harshit Agrawal,

@NicSzer在我看来,所有者:SYSTEM我该怎么办?
Harshit Agrawal,

@HarshitAgrawal,您需要更改谁拥有该文件夹,以便您的用户是所有者,而不是系统所有者
Nic Szerman

@NicSzer感谢您的答复。我这样做了,但是现在遇到了新的错误。这是我第一次尝试在Windows上运行React Native项目。我需要一些帮助我们可以连接到stackoverflow的聊天室吗?
Harshit Agrawal,

30

我最近重新安装了Visual Studio 2017,并在尝试安装“ npm java”时遇到此问题。我的解决方法是:

  1. 将ms版本设置为2017: npm config set msvs_version 2017
  2. 将VCTargetsPath环境变量设置为 C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets
  3. 以系统管理员身份运行命令控制台

3
npm config set msvs_version 2017这段代码节省了我的时间。谢谢。
canmustu

@Alex您的VCTargets目录已经包含了Microsoft.Cpp.Default.Props吗?我有目录,但是该文件丢失了。
starcream_disco_party

@starscream_disco_party是的,Microsoft.Cpp.Default.Props已经在我的VCTargets文件夹中
Alex

22

这些步骤解决了我的问题:

  1. npm install --global --production windows-build-tools
  2. npm install --save nan
  3. VCTargetsPath环境变量设置为C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140

2
VCTargetsPath位于何处?
Harshit Agrawal,

完美的解决方案
Hammad ul Hasan

1
@HarshitAgrawalVCTargetsPath是环境变量的名称。
EmreTapcı19年

仅在我的情况下需要执行第三步。
Sergei

10

对于上述答案不起作用的人,这里是另一种可能的解决方案。

甚至安装构建工具或VS 2015都不适合我。所以我尝试直接通过PowerShell在下面安装(以管理员身份)

https://chocolatey.org/packages/visualcpp-build-tools/14.0.25420.1 命令:choco install visualcpp-build-tools --version 14.0.25420.1

安装此文件后,设置环境变量VCTargetsPath = C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ v140


使用Chocolatey为我解决了这个问题,我什至没有设置环境变量,它开箱即用
Meir Gabay

9

对于使用VS 2019的用户:

设置VCTargetsPath =“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Microsoft \ VC \ v160”

编辑(2020年9月):有时它需要一个反斜杠(如下bmiller所述)


1
这对我有用。请注意,我还需要在路径上添加反斜杠,否则构建将无法在子文件夹中查找特定的平台道具。
bmiller

同样为我工作,尽管您需要确保指定了正确的VS版本(在我的情况下是Community-“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ VC \ v160 “
g0rski

5

我通过以下方法解决了这个问题:

  1. VCTargetsPath环境变量设置为C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140
  2. 使用管理员建立

0

我尝试了npm install和VCTargetsPath,但都无法正常工作。将Visual Studio升级到最新版本后,终于解决了。


0

通过安装Windows 10的Visual Studio Express 2015解决。


从Express迁移到Pro导致了我的问题。将VCTargetsPath环境变量设置为C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V140
Sergei

0

我无法使用此页面上的所有建议

我将nodejs降级到10.15,并且工作正常

可能不是最好的答案,但它有效


0

我通过在VS 2019中加载解决方案而不是在文件资源管理器中双击解决方案名称来解决了该问题。


0

在Visual Studio 2019之外(从2012年迁移)运行MSBuild时,出现了这类问题。我解决了他们运行此MSBuild的问题:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\msbuild"

(根据您的VS版本和目标体系结构自定义),而不是以下内容:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild

我在使用Visual Studio 2012时使用的功能。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.