Skip to content

Instantly share code, notes, and snippets.

@markvincze
Created March 10, 2016 10:26
Show Gist options
  • Select an option

  • Save markvincze/10148fbeb41a57c841c7 to your computer and use it in GitHub Desktop.

Select an option

Save markvincze/10148fbeb41a57c841c7 to your computer and use it in GitHub Desktop.

Revisions

  1. markvincze created this gist Mar 10, 2016.
    27 changes: 27 additions & 0 deletions AssemblyResolveRedirect.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,27 @@
    ResolveEventHandler handler = null;

    handler = (sender, args) =>
    {
    // Use latest strong name & version when trying to load SDK assemblies
    var requestedAssembly = new AssemblyName(args.Name);
    if (requestedAssembly.Name != shortName)
    return null;

    Debug.WriteLine("Redirecting assembly load of " + args.Name
    + ",\tloaded by " + (args.RequestingAssembly == null ? "(unknown)" : args.RequestingAssembly.FullName));

    var alreadyLoadedAssembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(a => a.GetName().Name == requestedAssembly.Name);

    if (alreadyLoadedAssembly != null)
    {
    return alreadyLoadedAssembly;
    }

    requestedAssembly.Version = targetVersion;
    requestedAssembly.SetPublicKeyToken(new AssemblyName("x, PublicKeyToken=" + publicKeyToken).GetPublicKeyToken());
    requestedAssembly.CultureInfo = CultureInfo.InvariantCulture;

    return Assembly.Load(requestedAssembly);
    };

    AppDomain.CurrentDomain.AssemblyResolve += handler;