在.net 4.0 dll中访问.net2.0 dll

时间:2011-08-16 18:21:22

标签: c# .net com clr com-interop

我想在.Net4.0 dll 中加载.NET 2.0 dll。我确实搜索了解决方案并找到了'useLegacyV2RuntimeActivationPolicy'属性,我可以将其添加到我的app.config中,如下所示:Mixed mode assembly is built against version 'v1.1.4322'

但问题是,在我的情况下,我试图在我的 4.0 DLL而不是4.0 exe 中使用.net2.0 dll。原因是这个4.0 dll随后在Excel中用作自动化插件。

目前,当我从Excel处理我的.NET 4.0 API(为一个功能加载2.0 dll)时,我得到'混合模式2.0 dll无法在4.0运行时加载'这是可以理解的,因为COM加载了4.0 CLR因此无法加载2.0 dll。

不知何故,我需要让我的4.0 DLL加载2.0运行时。我尝试将app.config添加到4.0 dll但我猜只有.exe默认读取app.config才能加载clr。 这是我在4.0 dll项目中的app.config中所拥有的但没有用。

    <?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?

谢谢, 摩尼

1 个答案:

答案 0 :(得分:4)

答案已经由Hans Passant完成,但他已发表评论。因此,在这里单独回答这个问题。

配置必须被称为excel.exe.config,并且应该与excel.exe位于同一个office目录中,以使此方案正常工作。