Here's an additional answer since I just went through this process with ArcGIS 10.3 and Visual Studio 2015. I'll just paste the reply I posted at https://geonet.esri.com/message/579779#579779. There are several steps, but none of them are too difficult.
First, to get the SDK installed, you need to add a few registry keys so that ArcGIS thinks that you have a supported version of Visual Studio installed.
Add registry string value:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\12.0\InstallDir
(or whatever version the SDK installer is looking for) and set it to:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\
(or whatever version of Visual Studio you are trying to use).
Add registry string value:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\12.0\ShellFolder
(or whatever version the SDK installer is looking for) and set it to:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\
(or whatever version of Visual Studio you are trying to use).
Second, if you're working with an existing project created for/with an older version of ArcGIS and Visual Studio and creating an add-in, you may need to edit the project file that builds the add-in to correct part of its build task. More on this at http://support.esri.com/en/knowledgebase/techarticles/detail/45263.
Change
<Import Project="$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.targets" Condition="Exists('$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.targets')" />
to
<Import Project="$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.11.targets" Condition="Exists('$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.11.targets')" />
and change
<Warning Text="Unable to create .esriAddin; missing ESRI ArcGIS Add-in SDK component(s)." Condition="!Exists('$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.targets')" />
to
<Warning Text="Unable to create .esriAddin; missing ESRI ArcGIS Add-in SDK component(s)." Condition="!Exists('$(MSBuildExtensionsPath)\ESRI\ESRI.ArcGIS.AddIns.11.targets')" />.
Alternatively, you can copy and rename the existing ESRI.ArcGIS.AddIns.targets file to ESRI.ArcGIS.AddIns.11.targets. The MSBuildExtensionsPath is located in your Program Files (x86) directory.
Third, if you're building an add-in, you need to edit the .targets file from the previous step to look for the version of Visual Studio you are trying to use.
In
C:\Program Files (x86)\MSBuild\Esri\ESRI.ArcGIS.AddIns.11.targets
change
<UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="PackageAddIn" Condition="'$(VisualStudioVersion)' == '12.0'" />
<UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="ValidateAddInXMLTask" Condition="'$(VisualStudioVersion)' == '12.0'" />
<UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="ConvertToRelativePath" Condition="'$(VisualStudioVersion)' == '12.0'" />
<UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="ResolveAddInReference" Condition="'$(VisualStudioVersion)' == '12.0'" />
to
<UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="PackageAddIn" Condition="'$(VisualStudioVersion)' == '14.0'" />
<UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="ValidateAddInXMLTask" Condition="'$(VisualStudioVersion)' == '14.0'" />
<UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="ConvertToRelativePath" Condition="'$(VisualStudioVersion)' == '14.0'" />
<UsingTask AssemblyName="ESRI.ArcGIS.AddIns.SDK.12, Version=10.3.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86" TaskName="ResolveAddInReference" Condition="'$(VisualStudioVersion)' == '14.0'" />
Alternatively, you can simply remove the Condition="'$(VisualStudioVersion)' == '12.0'" from these entries.
Fourth and finally, you need a copy of the Visual Studio 2013 shell registered in the GAC. I was able to copy this from another machine (it was located at C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.Shell.12.0)
, but if you don't have access to a machine with VS2013 installed you can download the Visual Studio 2013 SDK from https://www.microsoft.com/en-us/download/details.aspx?id=40758 and copy it from there.
Find a copy of the Microsoft.VisualStudio.Shell.12.0.dll
for Visual Studio 2013 and copy it to your machine. Register it in the GAC using an elevated command prompt by entering gacutil /i Microsoft.VisualStudio.Shell.12.0.dll
from the location you copied the file to on your machine. Note that you will now have two versions of this file in the GAC, one from Visual Studio 2013 and one from Visual Studio 2015. This can be seen by entering gacutil /l
from the command prompt to list all of the entries in the GAC. My entries look like:
Microsoft.VisualStudio.Shell.12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
Microsoft.VisualStudio.Shell.12.0, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
Hope that helps some others.
Shea