Dear all, may be you know the answer, i found only some hints for my problem and what i tried untill now does not work.
I have a collection of tools developed in c#. My development platform of arcgis is: 9.3 Product version 184.108.40.2060 Service pack 1 (build 220.127.116.110)
To install the tools i am using the regasm utility.
The problem/question: i am trying to install the tools on the computer with arcgis version 9.3.1(Build 4000), service pack 2. and getting message: "RegAsm: error RA0000: Could not load file or assembly `ESRI.ArcGIS.Geoprocessing Version 18.104.22.1680, culture=neutral, PublicKeyToken=.... or one of its dependencies. The system cannot find the file specified"
in c# i set the references' property "specific version" on false.
The only way to guarantee that a dll customization will work is to compile it for that version specifically. In the past, dll compiled on an older version mostly worked on newer versions but not always.
It means you need a developer environment for each ArcGIS version you want to target (usually not SPs.) I find virtual machines work quite well for that. You also need separate dlls (probably also installer) for each target of ArcGIS. Developers have gotten away with not doing that in the past mostly because of the nature of the COM contract, but I wouldn't recommend it. This has changed in ArcGIS 10 so it is not supposed to be so bad in the future, you are supposed to be able to have more that one version of ArcGIS but I have not really looked into it yet so I don't know the details. It depends how tight your development methodology is. In my organization, we would upgrade the developer and staging machines first, compile the new code on 9.3.1, test it on 9.3.1, work out any bugs (new versions have new bugs) and then upgrade and deploy in production. We have tight control of the target machines and the products have to be high availability (24/7) so we would never put a new version of ArcGIS or a service pack or even a new version of a custom dll without doing all that.