Сборка Разрешить - PullRequest
       9

Сборка Разрешить

1 голос
/ 02 апреля 2012

Мы создаем плагин для программного обеспечения, созданного для .NET 3.5.В этом плагине мы ссылаемся на сторонний .DLL, который работает для .NET 3.5.Основное программное обеспечение теперь построено для .NET 4.0, а сторонний .DLL разделен на два .DLL.

Чего мы хотим избежать, так это иметь два отдельных решения с почти одинаковым кодом (одно встроенноев .NET 4.0, ссылающуюся на DLL-библиотеки 4.0, и одну, построенную на 3.5, ссылающуюся на DLL-библиотеки 3.5).Не все наши клиенты собираются перейти на новейшую версию программного обеспечения, для которого мы создаем плагины, некоторые могут ждать годами.

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

Можно ли продолжить сборку до .Net 3.5 со ссылкой на библиотеку 3.5, а затем во время выполнения выполнить какое-то разрешение сборки, чтобы загрузитьдве .Net 4.0 DLL вместо оригинальной?

Мы хотим / должны продолжать сборку на платформе 3.5, чтобы предыдущие версии основного программного обеспечения продолжали загружать наш плагин.Если мы соберемся до 4.0, тогда более старые версии будут давать ошибку при попытке загрузить наш плагин, потому что его сборка выполняется на более поздней платформе.

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

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

Это предельно ясно, ваш EXE-файл загрузил более раннюю версию CLR.Только CLR-версия .NET 4 знает, как загрузить сборку, созданную для цели 4. Формат метаданных изменился в 4, старый CLR не знает, как его прочитать.

Либо пересоберитеваш EXE-файл также должен быть нацелен на 4 или предоставить файл app.exe.config, который заставляет вашу программу работать с более новой версией CLR.Это должно выглядеть так:

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

Требуется некоторое тестирование, .NET 4 очень совместим, но в нем есть некоторые исправления ошибок, на которые вы можете случайно положиться.

0 голосов
/ 02 апреля 2012

Если структура точно такая же (iow обе сборки), проблем с загрузкой библиотеки .NET 3.5 во время выполнения .NET 4 не возникает. (Я часто делаю это в IronScheme, потому что мне лень строить на VS2010).

...