Is it possible to target an ArcMap add-in to an earlier version?

It's possible to make it work with ArcMap 10.0, but it's not easy and deployment-friendly

First, in your visual studio project, set your target framework to .NET Framework 3.5.

Then, edit the Config.esriaddinx file and modify the "Targets" section to add compatibility with ArcGIS Desktop 10.0, like this:

  <Targets>
    <Target name="Desktop" version="10.0" />
    <Target name="Desktop" version="10.1" />
  </Targets>

Finally, as described in an older post, you have to alter the ArcMap.exe.config by adding the following line inside each "dependentAssembly" block

<bindingRedirect oldVersion="10.1.0.0" newVersion="10.0.0.0"/>

Once modified, it should look like this

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="ESRI.ArcGIS.ADF" culture="" publicKeyToken="8fc3cc631e44ad86"/>
        <bindingRedirect oldVersion="9.3.0.0-9.3.2.0" newVersion="10.0.0.0"/>
        <bindingRedirect oldVersion="10.1.0.0" newVersion="10.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>

I came to the conclusion that even if it's possible, I'm better off compiling with the lowest version of ArcMap I'm willing to support.

EDIT: See also Rich Wawrzonek's post for an alternative (not recommended by ESRI)

EDIT2: According to Esri, the best way is set up a virtual machine with 10.0 installed on it (see this post)


Do you have access to the DotNet folder from the 10.0 install? It is typically located here: C:\Program Files (x86)\ArcGIS\DeveloperKit10.0\DotNet

If yes, then copy that folder to your 10.1 development machine. Name it something like DotNet_10.0_Sp3 or whichever version it is. Then in your Visual Studio Add-in project point your Reference Paths property to this folder. In C# there is a tab called Reference Paths in the project properties where you can add this folder. For VB.net there is a References tab then you need to click on the "Reference Paths.." button.

As noted in other answers: All the ArcGIS references in your project should have 'Specific Version' property set to false. You must also set the Config.esriaddinx file to target 10.0. You may get a warning when you build that it targets previous version but don't update the references. Also, make sure project is set to x86 and .NET 3.5.

This way you have the latest version of ArcGIS on your Dev machine and still be able to build for previous versions.