Delphi 10 Seattle试用版无法编译任何内容,给出了MSBuild错误

时间:2015-10-04 17:56:06

标签: delphi msbuild delphi-10-seattle

我下载并安装了Delphi 10试用版。但是,每次我尝试构建任何东西时,我都会得到:没有为ToolsVersion指定MSBuildToolsPath" 12.0"在" HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 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有任何关系。

3 个答案:

答案 0 :(得分:2)

这是一个已知问题,请在此处记录: https://community.embarcadero.com/article/technical-articles/16202-msbuildtoolspath-is-not-specified-for-the-toolsversion

  

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

由于我一直在安装/卸载各种Visual Studio版本(包括预览版),猜测它确实是由它引起的

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

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

安装它可能也很有用: https://www.microsoft.com/en-us/download/confirmation.aspx?id=48159

这也许有助于了解(从https://msdn.microsoft.com/en-us/library/bb383985.aspx复制):

  

优先顺序

     

用于确定ToolsVersion的优先顺序(从最高到最低)是:   用于构建项目的MSBuild任务上的ToolsVersion属性(如果有)。

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

否则,请使用当前的ToolsVersion。

答案 1 :(得分:0)

我在delphi中解决了我需要Msbuild 14的问题,我只需下载并安装与我的错误消息匹配的msbuild,在我的情况下:  https://www.microsoft.com/en-us/download/details.aspx?id=48159

我认为您可以从微软网站下载msbuild以查看它是否有效。

答案 2 :(得分:-2)

事实证明我的问题与我最初尝试构建SynEdit完全没有关系(我的意思是,为什么会这样?它与MSBuild有什么关系?多么荒谬的答案。)大约一个小时之后手动编辑IDE"目标" IDE中的文件" Bin"目录,我最终能够开始使用MSBuild 14.0(例如,Visual Studio 2015附带的版本)。似乎西雅图的开发假设任何人可能安装的最高MSBuild版本是MSBuild 12.0(如同Visual Studio 2013附带的版本)。肯定会让所有人感到沮丧,因为他们已经准备好了!" WINDOWS 10 READY!"看起来很讽刺......