2010-11-26 8 views
0

Я могу использовать этот флаг для загрузки определенной версии .NET framework, поместив этот флаг в файл конфигурации приложения из двоичного файла. Но файл конфигурации двоичного файла не входит в мой контроль, так как я отвечаю за DLL. Есть ли способ указать один и тот же флаг в DLL, чтобы DLL могла загружать другие DLL-файлы, созданные с помощью фреймворка 4.0?.NET framework requiredRuntime flag

Например, Binary A.exe, построенный с целевой структурой 3.5, загружает DLL B.dll с целевой структурой 3.5. В настоящее время B.dll загружает DLL C.dll DLL, который создается с целевой платформой 4.0.

Я мог бы сделать это, поставив следующую конфигурацию в app.config A.exe.

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0"/> 
    <requiredRuntime version="v4.0"/> 
    </startup> 

Я не в состоянии контролировать A.exe и app.config, но у меня есть контроль над B.DLL и C.DLL. Как вы думаете, это возможно?

-Спасибо,

-Brajesh

ответ

0

Это невозможно из-за процесса загрузки. Когда запрос на загрузку вашей DLL будет выполнен, платформа .NET Framework уже загружена в этот процесс. До .NET 4 у вас могла быть только одна версия CLR в процессе за раз. (N.B. .NET 2.0, 3.0 и 3.5 все выполнялись на CLR 2.0.) Даже с .NET 4, который позволяет CLR 2.0 и CLR 4.0 сосуществовать в одном процессе, они должны запускаться в отдельных AppDomains. Вы не можете беспрепятственно обмениваться данными между различными AppDomains.

Одна возможная идея ... У вас есть небольшая прокладка CLR 2.0, которая создает отдельный CLR 4.0 AppDomain, загружает ваши сборки .NET 4.0 в нее, а затем общается с ней. Это не будет просто, легко или просто. Другой вариант - разместить ваши сборки в отдельном процессе и использовать именованные каналы, TCP или какой-либо другой канал связи для связи между вашим кодом .NET 4.0 и прокладкой .NET 3.5, размещенной в существующем EXE.

Если хост-приложение является .NET 3.5, я бы сказал, придерживайтесь .NET 3.5 для своих сборок. Это будет намного меньше головных болей.

Смежные вопросы