Eve*_*ers 8 .net c# com clr com-interop
我想在我的.Net4.0 dll中加载一个.NET 2.0 dll.我确实搜索了解决方案并找到了'useLegacyV2RuntimeActivationPolicy'属性,我可以将其添加到我的app.config中,如此URL:混合模式程序集是针对版本'v1.1.4322'构建的
但问题是,在我的情况下,我试图在我的4.0 DLL中使用.net2.0 dll,而不是在4.0 exe中.原因是这个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>
Run Code Online (Sandbox Code Playgroud)
如何解决此问题以使我的.NET 4.0 DLL能够使用.NET 2.0 DLL?
谢谢,玛尼
汉斯·帕桑特 (Hans Passant) 已经给出了答案,但他已发表评论。因此,在此单独回答。
该配置必须名为 excel.exe.config,并且应与 excel.exe 位于同一 Office 目录中,才能使此方案发挥作用。