Después de investigar un poco, encontré una solución y se llama Redirección de la unión de conjuntos
Básicamente, para cualquier .net .exe, puedes añadir código XML en el archivo de configuración de la aplicación para redirigir un ensamblaje referenciado de un número de versión a otro.
Esri implementó esto en las versiones 10.0 y superiores en su EsriRegasm.exe utilidad. (ubicado aquí : %commonprogramfiles(x86)% \ArcGIS\bin\esriRegasm.exe o %commonprogramfiles% \ArcGIS\bin\esriRegasm.exe )
Si echamos un vistazo al archivo de configuración de esriRegasm 10.1 (esriRegasm.exe.config), verá estas líneas :
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="ESRI.ArcGIS.Carto" culture="" publicKeyToken="8fc3cc631e44ad86"/>
<bindingRedirect oldVersion="9.3.0.0-10.0.0.0" newVersion="10.1.0.0"/>
</dependentAssembly>
</assemblyBinding>
Significa que están redirigiendo todas las referencias de ESRI.ArcGIS.Carto de la 9.3 a la 10.0 al ensamblaje actual (10.1.0.0) por lo que se evitarán errores
En mi caso, la versión de destino es ArcGIS 9.3.1, y no existe la utilidad EsriRegasm. He encontrado una solución en sitio de microsoft connect . Añada, para cada ensamblaje referenciado, este código xml al archivo RegAsm.exe.config de .NET
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="ESRI.ArcGIS.Carto" culture="" publicKeyToken="8fc3cc631e44ad86"/>
<bindingRedirect oldVersion="9.3.0.0-10.1.0.0" newVersion="9.3.0.1770"/>
</dependentAssembly>
</assemblyBinding>
Como se indica en el artículo de microsoft connect : Puede copiar regasm.exe + regasm.exe.config a un directorio separado para evitar el impacto de todas las invocaciones de regasm en la máquina.
La conclusión es que sí, es posible, pero la solución más fácil es probablemente construir nuestros ensamblajes en una máquina de desarrollo con 9.3.1 instalada.
Espero que esto ayude a alguien
EDITAR: Para que funcione en ArcMap.exe o ArcCatalog.exe, hay que añadir el mismo código xml que ponemos en regasm.exe.config en el archivo de configuración de ArcMap o ArcCatalog.