доступ к .net2.0 dll в .net 4.0 dll - PullRequest
8 голосов
/ 16 августа 2011

Я хочу загрузить .NET 2.0 dll в мою .Net4.0 dll . Я выполнил поиск решения и обнаружил атрибут 'useLegacyV2RuntimeActivationPolicy', который я могу добавить в свой app.config, как показано в этом URL: Сборка в смешанном режиме построена для версии 'v1.1.4322'

Но проблема для меня заключается в том, что в моем случае я пытаюсь использовать DLL-файл .net2.0 в моей 4.0 DLL, а не в 4.0 exe ​​. Причина в том, что 4.0 dll затем используется в Excel в качестве надстройки автоматизации.

В настоящее время, когда я получаю доступ к своему .NET 4.0 API (который загружает 2.0 dll для функции) из Excel, я получаю «смешанный режим 2.0 dll не может быть загружен во время выполнения 4.0», что понятно, так как COM загрузил 4.0 CLR и, следовательно, не может загрузить 2,0 DLL.

Каким-то образом мне нужно сделать мою DLL 4.0 для загрузки среды выполнения 2.0. Я попытался добавить app.config в 4.0 dll, но я полагаю, что только .exe читает app.config по умолчанию для загрузки clr. Это то, что у меня есть в моем app.config в проекте 4.0 dll, но бесполезно.

    <?xml version="1.0"?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
  <runtime>
    <NetFx40_LegacySecurityPolicy enabled="true"/>
  </runtime>
</configuration>

Как решить эту проблему, чтобы моя .NET 4.0 DLL могла использовать .NET 2.0 dll?

Спасибо, Mani

1 Ответ

4 голосов
/ 01 сентября 2011

Ответ уже сделан Хансом Пассантом, но он опубликовал комментарий. Следовательно, отвечая на это отдельно здесь.

Конфигурация должна называться excel.exe.config и должна находиться в том же служебном каталоге, что и excel.exe, чтобы этот сценарий работал.

...