基于C#的ArcEngine二次开发30: visual studio没有为ToolsVersion14.0指定MSBuildToolsPath,指定的值的计算结果为空字符串

目录

1 知识点普及

2. 问题描述

3 问题原因

4 解决方案


1 知识点普及

在系统包含两个regedit.exe,他们的位置是:

  • "C:\Windows\regedit.exe"
  • "C:\Windows\SysWOW64\regedit.exe"

2. 问题描述

今天使用 visual studio 2012 创建ArcGIS的Add-in插件项目结果报这样一个错误:

visual studio没有为ToolsVersion14.0指定MSBuildToolsPath,指定的值的计算结果为空字符串

基于C#的ArcEngine二次开发30: visual studio没有为ToolsVersion14.0指定MSBuildToolsPath,指定的值的计算结果为空字符串

3 问题原因

我电脑之前安装了VS2015和VS2012,后来感觉VS2015不经常用,就手贱把VS2015给卸载,然后干啥都正常,就创建Addin插件老师报错

看到这个错误,我的第一直觉就是改注册表,然后自觉的win+R,找到错误提示的注册表位置,结果没看到14.0;

刚开始以为是缺少14.0,然后自己手动伪造了14.0的注册表,还是不行;

把VS2012写在重装也不行,郁闷半天

4 解决方案

经过一番折腾终于找到解决方案如下:

  • 确保已完全卸载 Visual Studio 2015(在“控制面板”->“程序”->“程序和功能”中,确保未列出 Visual Studio 2015)
  • 确保计算机上不存在以**册表项:
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\4.0
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersion\4.0
  • 如果在 64 位操作系统上运行,请从注册表的 32 位部分中删除这些项。 为此,请单击“开始”->“运行”,键入“%WinDir%\SysWOW64\regedit.exe”,然后更改注册表。【这一步很关键,一定要把64位注册表的14.0删掉】

结合刚开始的知识点普及,我们知道这个错误主要是因为我们一般对注册表的修改只是针对32位的,而这一次问题出在了64位的regedit.exe上了,下次一定得长记性

基于C#的ArcEngine二次开发30: visual studio没有为ToolsVersion14.0指定MSBuildToolsPath,指定的值的计算结果为空字符串