Dot-Net
是否可以在執行時創建綁定重定向?
應用程序啟動後,是否有辦法創建將應用於所有未來程序集載入的綁定重定向?
可以使用ICLRHostBindingPolicyManager ::ModifyApplicationPolicy,但我自己從未嘗試過。請注意,這是一個 CLR 級別的介面,因此您不能為單個 AppDomain 載入策略(這就是 PostSharp 尚未使用它的原因)。
很抱歉回復了一篇舊文章,但這個部落格對這個問題有一個更好的答案。希望有人覺得它有用。
我的案例:從由經典 ASP 應用程序呼叫的 COM 互操作程序集執行綁定重定向。
http://blog.slaks.net/2013-12-25/redirecting-assembly-loads-at-runtime/
相關文章中的此功能將執行您想要的操作:
public static void RedirectAssembly(string shortName, Version targetVersion, string publicKeyToken) { 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)); requestedAssembly.Version = targetVersion; requestedAssembly.SetPublicKeyToken(new AssemblyName("x, PublicKeyToken=" + publicKeyToken).GetPublicKeyToken()); requestedAssembly.CultureInfo = CultureInfo.InvariantCulture; AppDomain.CurrentDomain.AssemblyResolve -= handler; return Assembly.Load(requestedAssembly); }; AppDomain.CurrentDomain.AssemblyResolve += handler; }