title: Using Global Assembly Cache (GAC) - in the way it was designed to
body: <p>Is the following solution <strong>the only</strong> possibility to use libraries from GAC in code?</p>
  
  <pre><code>Assembly lib = Assembly.Load("MyLibrary, Version=1.0.0.0, Culture=neutral,
  PublicKeyToken=31f5625abd53197f");
  
  Console.WriteLine(lib.GetType("MyClass").GetMethod("Start").Invoke(obj, null));
  </code></pre>
  
  <p>I am a little bit confused - I've read quite much about GAC and I know how to sign an assembly, intall and uninstall assembly in GAC, but have no idea how to use it, and how does it help programmers (except that it stores different versions of same library safely). I wish I could normally create classes, not beeing forced to invoke methods presented above.</p>
  
  <p>I don't want any work-arounds such as: "change windows registry" because I don't think GAC was designed for such manipulations. I want a simple answer: what the GAC is for, does runtime environment use it somehow?</p>
  
  <p>What is the point of using GAC, when the code gets really ugly and difficult to manage? Or maybe I am missing something? Maybe I should manually copy an assembly into my local folder? But I heard it's also hard to do.</p>