How to reference shared assemblies that are still in development (.NET)

I am responsible for developing and maintaining a set of common assembly assemblies that are used to build our applications. These assemblies are relatively new and in a state of change when new features are introduced, etc. As a result, they are not difficult to rebuild and redistribute several times. I would have expected this to decrease as the builds stabilize, but that's what it is today.

Currently, assemblies are placed in a shared folder where development projects can reference the same assemblies. Applying updates is as easy as replacing files, and development projects automatically pick up the changes the next time they are loaded and built.

The problem is that we can have multiple "layers" of collections built around the framework - for example, we have a Core library available to all applications, and a server library that references Core and is shared by the entire Server application. All dependencies also need to be rebuilt every time the frame assemblies are updated, which makes this a very big task. I don't believe I can use the GAC because it will require all developers to update their systems every time a new version is released.

I have researched the publishers' policy, but I have some doubts that this will solve my problem for several reasons:

  • First, I don't want to recreate the file every time I rebuild the frame assemblies - is there a way to automate this process?

  • It's not clear to me if this requires assemblies to go into the GAC. As I said, I don't want my developers to reinstall, update, etc. Every time we release a new version of assemblies.

  • I do not have any control over the configuration and configuration of the network, therefore it is necessary to avoid the whole "trust" when placing files on a network share. Also, many of our developers work in different ways and we want the files to be available to them when disconnected.

The goal would be to make updating these assemblies transparent to the application developers who consume them. We will no doubt install these assemblies in the GAC on the target machine when the application is installed, but we don't want to do this for development purposes. It is also impractical to include projects in every Solution application because they are developed by different teams.

I cannot imagine that I am alone in these requirements and hope that someone can share their experience and wisdom to help me with the solution. Thank!

+2


source to share


2 answers


NuGet solved this problem. By distributing common assemblies, frameworks, etc. As NuGet packages from a private repository on our network, we can easily publish updates and apply them to client code if needed.



0


source


You don't have to install assemblies in the GAC - nothing in your setup requires it.

The main concern here is making sure that the assembly is causing all of its dependencies to be rebuilt and that they are all placed in a common location.



The easiest option is probably to have a build server that rebuilds everything when one of the shared assemblies is updated. It also has the advantage of potentially running other "scripts" in the assembly, such as executing code metrics, analyzing static code, and so on. Whenever a build is performed.

Then you can just create a build server for sharing. If the project references are from a general location and explicitly say they are not limited to a specific version, everything should work fine.

+1


source







All Articles