Ссылка два равных блока, только открытые ключи отличаются

Может стоить проверить эту статью о F# "101" на CoDe Mag, недавно отправленном.

кроме того, у Dustin Campbell есть большой блог , где он отправил много статей о своих приключениях при набирании скорость с F#..

я надеюсь, что Вы находите их полезными:)

РЕДАКТИРОВАНИЕ:

кроме того, только для добавления мое понимание функционального программирования - то, что все является функцией, или параметрами к функции, а не объектами экземпляров / объектами с сохранением информации.. Но я мог быть неправильным F#, что-то, во что я умираю для входа к, но просто не имею времени!:)

7
задан Community 23 May 2017 в 10:32
поделиться

2 ответа

Интересно, сработает ли AssemblyResolve :

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
    if (args.Name == "full name with old key")
    {
        return typeof(SomeTypeInReferencedAssembly).Assembly;
    }
    return null;
}

Я предполагаю, что вы сослались на свою предпочтительную версию и можете использовать тип SomeTypeInReferencedAssembly , чтобы получить сборку ; вы также можете использовать:

return Assembly.Load("full name with new key");

Я не пробовал, но здесь я по сути говорю «разверните одну версию dll, а когда система запросит старую - лгите».

4
ответ дан 7 December 2019 в 05:24
поделиться

У вас никогда не должно быть двух сборок с одинаковой версией , но разными открытыми ключами , это рецепт катастрофы. Если фактические версии сборок отличаются, то самое простое решение - поместить их в глобальный кэш сборок (GAC). Однако это не будет хорошо работать, если вы будете иметь дело с экземплярами типов, которые определены в C и используются как в A, так и в B (например, C объявляет MyType , и вы получаете экземпляр MyType от B и передайте его A. Что касается среды выполнения, эти два типа не имеют абсолютно ничего общего друг с другом, кроме совместного использования имени).

Если вы ищете временное решение, тогда я бы пошел с Марком; похоже, что он должен работать отлично.

4
ответ дан 7 December 2019 в 05:24
поделиться