在.NET 4.0的DLL中访问.NET 2.0的DLL

8
我想在我的.NET 4.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会作为自动化add-in在Excel中使用。
目前,当我从Excel访问我的.NET 4.0 API(它为功能加载2.0 dll)时,我得到“无法在4.0运行时中加载混合模式2.0 dll”的错误,这是可以理解的,因为COM已经加载了4.0 CLR,因此无法加载2.0 dll。
不知何故,我需要使我的4.0 DLL加载2.0运行时。我尝试向4.0 dll的app.config添加配置文件,但我想只有.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?

谢谢, Mani


1
你尝试过像添加普通dll一样添加.net 2 dll吗? - Jethro
听起来这不是一个.NET 2.0的DLL,而是一个.NET 1.1的DLL。 - Jon Skeet
7
.config 文件不错,但需要更名为 excel.exe.config 并复制到 Excel 所在的 Office 目录中。 - Hans Passant
1个回答

4
答案已经由Hans Passant完成,但他是以评论的形式发布的。因此,在这里单独回答。
为了使此场景起作用,配置必须被称为excel.exe.config,并且应该与excel.exe在同一个办公目录中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接