I am currently working on a software library that will be used to develop Class Libraries.
These class libraries can be run by our application running on the user's machine
The application uses the same dlls that the customer uses to develop their library. The user code expects objects of certain types that are provided by the application when it is running.
A project template will be available to customers with the appropriate references for developing their library
I considered installing the dlls into the GAC on the customer's machine. This way I could have a post build event on development machines that would use gacutil to install the dlls when they are built. The application code under development would reference the dlls in the GAC as opposed to the dlls in other projects on the machine. This would more closely represent a User's machine when a dev is debugging. One problem here is the requirement of admin privileges for running gacutil.
I also considered just requiring the User projects (created from our templates) to reference the dlls from the location of the installed application since the dll dependencies are there ANYWAY for use by the application. What I'm not sure about is how references get resolved on a user machine vs a development machine since a development machine will not necessarily run the application from the same place as the user (it may just be running out of the build output directory)
Any suggestions about what approach I should take? I've read up on using assemblies in the GAC and creating project templates but I haven't found much that describes how to deploy this setup to users (while also not creating too many headaches when developing).