Delphi 10西雅图试用版未能编译任何内容,给出了MSBuild错误

Delphi 10西雅图试用版未能编译任何内容,给出了MSBuild错误,delphi,msbuild,delphi-10-seattle,Delphi,Msbuild,Delphi 10 Seattle,我下载并安装了Delphi10试用版。但是,每次尝试生成任何内容时,我都会得到以下结果:MSBuildToolsPath不是为在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0”中定义的ToolsVersion“12.0”指定的,也不是为空字符串计算的指定值 12.0键不存在于我电脑上的“ToolsVersions”中。但我有2.0、3.5、4.0和14.0键。我也有一个完整的,完美的Visual Studio 2

我下载并安装了Delphi10试用版。但是,每次尝试生成任何内容时,我都会得到以下结果:MSBuildToolsPath不是为在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0”中定义的ToolsVersion“12.0”指定的,也不是为空字符串计算的指定值


12.0键不存在于我电脑上的“ToolsVersions”中。但我有2.0、3.5、4.0和14.0键。我也有一个完整的,完美的Visual Studio 2015社区安装,如果这些知识有帮助的话。我正在运行Windows 10 Pro,64位。如何更正此问题?这是我第一次在Delphi/RAD Studio的任何版本上遇到问题。。。直到现在,我才意识到Rad Studio IDE关心、使用或与MSBuild有任何关系。

我在delphi中解决了需要MSBuild 14的问题,我只是下载并安装与我的错误消息匹配的MSBuild,在我的情况下:


我认为您可以从microsoft站点下载msbuild,看看它是否有效。

这是一个已知的问题,记录在这里:

此错误是由注册表中不正确的值引起的。在32操作系统上,运行regedit并导航到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild。在64位操作系统上,运行regedit并导航到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild。首先,通过选择File | Export备份此注册表项。接下来,查看ToolsVersions键下方的数字。删除在MSBuild级别未找到的任何数字。 ... 有传闻证据表明此注册表项不平衡是由卸载某些版本的Visual Studio引起的,但目前尚未得到证实

由于我一直在安装/卸载各种VisualStudio版本(包括预览版),我想这确实是由这个原因造成的

如果按照第一篇文章的建议删除了2.0密钥,则可能会出现错误“已指定默认工具版本“2.0”,但找不到其定义。”。解决方案是编辑x32和x64中提到的注册表位置中MSBuild项下的每个值,并将DefaultToolsVersion更改为14.0或安装的其他最高MSBuild工具版本

请注意,在x64计算机上,您需要修复x32和x64注册表位置的这两个问题,因为IDE是32位进程,如果只修复x64位置,它将在内部失败,并在源代码中的uses子句中划出所有标准单元,并显示“无法解析单元名称xx”

此外,安装以下组件也可能有用:

了解(从中复制)这一点也很有用:

优先顺序

用于确定ToolsVersion的优先级顺序(从高到低)为: 用于生成项目的MSBuild任务上的ToolsVersion属性(如果有)

msbuild.exe命令中使用的/toolsversion(或/tv)开关(如果有)

如果设置了环境变量MSBUILDTREATALLTOOLSVERSIONSASCURRENT,则使用当前ToolsVersion

如果设置了环境变量MSBUILDTREATHIGHERTOOLSVERSIONASCURRENT,并且项目文件中定义的ToolsVersion大于当前ToolsVersion,请使用当前ToolsVersion

如果设置了环境变量MSBUILDLEGACYDEFAULTTOOLSVERSION,或者未设置ToolsVersion,则使用以下步骤:

项目文件的项目元素的ToolsVersion属性。如果此属性不存在,则假定它是当前版本

MSBuild.exe.config文件中的默认工具版本

注册表中的默认工具版本。有关详细信息,请参见标准和自定义工具集配置

如果未设置环境变量MSBUILDLEGACYDEFAULTTOOLSVERSION,则使用以下步骤:

如果环境变量MSBUILDDEFAULTTOOLSVERSION设置为存在的ToolsVersion,请使用它

如果在MSBuild.exe.config中设置了DefaultOverrideToolsVersion,请使用它

如果在注册表中设置了DefaultOverrideToolsVersion,请使用它

否则,请使用当前工具版本


您是在尝试构建进程外的吗?不是。它最初发生在我第一次启动IDE之后,当时我只是试图通过GetIt package manager安装SynEdit,甚至没有构建实际的项目。。。。从那时起,我尝试构建的实际项目都关闭了进程外选项。这是一个与安装相关的问题。您应该在.MSBuild 12.0上打开一个免费的支持案例,可以从Microsoft下载中找到。它也是Visual Studio 2013的一部分。在一篇博客文章中添加了相关截图