Who should install a shared .NET library to the GAC? The framework that provides the library? Each application that uses it? Both? -


This is more than a philosophical question, perhaps

Suppose I have some kind of structure and I decide to provide a NAT library which makes it easy to use some aspects of the framework. I do not want every application that he uses the framework to move the copy of the library locally, so I want to explain it to GAC (even with all maintenance issues).

This setting establishes the library in GAC very easily, so every app does not have to do. But then when I make a new version of the library, my framework installer has to take both the old and new library to ensure that the upgrade will not remove the old library which is used by some applications.

However, if each application installs a library to GAC, then Windows Installer is counted in context, and my framework is no longer concerned about running old libraries in the upgrade scenario. The in-use library will be uninstalled only when the reference of the previous Windows Installer is finished.

Obviously, each application should have access to the library when the application is built and can be easily included in your installer.

Do anyone have an opinion / attitude / experience that is versus other? I know that this is not strictly the desired question (because it invites discussion), but I think a brief discussion will be useful.

We also have this exact requirement for many products, and for our structure, we only have an MSI , Which is referred to in each product.

  & lt; Feature ... & gt; ... & lt; MergeRef ID = "Framework Module Module" /> & Lt; / Feature & gt; ... & lt; Directory ... & gt; & Lt; Merge id = "framework mirage module" sourcefile = ".. \ equipment \ framework .mms" ... ... / ... & Lt; / Directory & gt;  

There is no problem with this approach, as you said, reference count is its job.

In GAC there are additional hoops to jump to get assembly (strong naming, a little more work in wix) but nothing major. This approach works if you use GAC or simply deploy a plain xcopy in the installed directory (via wix-fu)

The main pain we feel (after the assembly naming) The later use assembly and assembly did not understand fully before diving ... you really want to change assembly only when there is a real need, and for the build and / or revision versions. Refer Dkard so things were a bit easier (Assume that you have a disciplined version of the strategy)


Comments

Popular posts from this blog

python - Overriding the save method in Django ModelForm -

html - CSS autoheight, but fit content to height of div -

qt - How to prevent QAudioInput from automatically boosting the master volume to 100%? -