2011-08-16 94 views
8

我想在我的.Net4.0中加载一个.NET 2.0 dll dll。我没有搜索解决方案,并发现'useLegacyV2RuntimeActivationPolicy'属性,我可以添加到我的app.config在这个url:Mixed mode assembly is built against version 'v1.1.4322'在.net 4.0 dll中访问.net2.0 dll

但对我来说问题是,在我的情况下,我试图使用.net2.0 dll在我的4.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。 这是我在我的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?

感谢, 玛尼

+1

您是否尝试过像添加普通的dll一样添加.net 2 dll? – Jethro

+0

听起来这不是一个.NET 2.0 DLL--它是一个.NET 1.1 DLL。 –

+7

.config文件很好,但它需要是excel.exe.config并复制到excel所在的Office目录。 –

回答

4

答案已经由汉斯帕桑特做,但他已经张贴了注释。因此,在这里单独回答。

配置必须被称为excel.exe.config,并且应该与excel.exe在同一个办公室目录下才能工作。