My question is simply:
Can I statically reference an older version of Open Access, but still have a newer version of Open Access installed?
As a followup:
If not, can I install two versions of Open Access side-by-side on a development machine?
Our solution currently references Open Access 2013.1.418. We have copied all necessary Open Access assemblies to the BIN folder of our solution. All references in our projects are static references to those copies of the assemblies. We still have that version of Open Access installed on our development machines. The solution builds perfectly and can be deployed, installed, and used by our testing department without their need to install Open Access. This is all as expected and desired.
An issue has arisen though that we want to upgrade our development machines to the latest release of Open Access. This is so that we can see how it works with our solution, etc. But as soon as we upgrade the installed version of Open Access, our solution will not build until we also upgrade any references to the newer version (or downgrade Open Access back to the version we reference). There are a number of other threads in these forums dealing with that issue where someone accidentally got the installed and referenced versions out of sync.
Our problem comes in that we can not use the standard resolution of simply upgrading our references.
The reason is that we develop in multiple versions of our application simultaneously.
- Version 1 has been released to customers and is in use in a production environment. Occasionally bugs are found that require fixes and patches/service packs/etc. This necessitates further development in this version.
- Version 2 is unreleased but in active testing by our testers. We frequently will need to fix bugs that arise in it and give testers a new version. Again, this necessitates further development in this version.
- Version 3 is a future dev branch that we are adding new features to but has not been sent to testers yet.
We would like to use the latest Open Access in Version 3. But Version 1, and usually Version 2, can only use the version of Open Access in place and referenced at the time of its initial development (prior to testing and/or release). It is simply not an option to upgrade Open Access references in a released version (Version 1) simply to use the latest Open Access in a development version (Version 3). Thus we are essentially stuck on the older Open Access version for all versions of our solution if we need to develop on more than one version of our solution.
In reviewing related threads here and other research, this thread on Stack Overflow
seems to point to the clearest reason why, currently, it is not possible to reference one version, but have a different version installed. In short, the Open Access assemblies are strongly named/signed (a good thing), but this causes the .NET CLR to only load the Open Access assemblies from the GAC (a bad thing since that's not the version we reference).
My thought on a possible solution is to allow side-by-side installations of Open Access. This should allow both versions to be installed in the GAC and thus the correct version to be referenced by our solution in a development environment. Are side-by-side installations currently possible?