Можно ли создать перенаправление привязки во время выполнения? - PullRequest
5 голосов
/ 13 апреля 2011

После запуска приложения существует ли способ создания перенаправления привязки, который будет применяться ко всем будущим загрузкам сборки?

Ответы [ 2 ]

6 голосов
/ 21 сентября 2015

Извините за ответ на старый пост, но у этого блога гораздо лучший ответ на вопрос. Надеюсь, кто-то найдет это полезным.

Мой вариант использования: выполнение перенаправления привязки из сборки взаимодействия COM, вызванной классическим приложением ASP.

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;
}
1 голос
/ 20 февраля 2012

Это может быть возможным с использованием ICLRHostBindingPolicyManager :: ModifyApplicationPolicy, но я никогда не пробовал себя. Обратите внимание, что это интерфейс уровня CLR, поэтому вы не можете загружать политики для отдельных доменов приложений (именно поэтому он еще не используется PostSharp).

http://msdn.microsoft.com/en-us/library/ms164378.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...