我为大型专有平台 - DocsVision 编写了一个扩展。这个平台使用 .NET 3.5 SP1 工作,但我使用 .NET 4 编写了我的扩展(我想,为什么不呢?)
后来,当 DocsVision 使用 Internet Explorer 作为主机时 - 我被添加到带有启动标记的 IE 目录中的 .config 文件以支持 .NET 4 的运行时并且一切正常。
但是现在,在新版本中,有新的主机 - Navigator.exe 有自己的 .config 文件:
导航器.exe.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="docsvision.platform.wpf.navigator" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="navigator" type="DocsVision.Platform.Wpf.Navigator.Configuration.NavigatorConfigurationSection, DocsVision.Platform.Wpf.Navigator, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7148afe997f90519" allowExeDefinition="MachineToLocalUser" />
</sectionGroup>
</configSections>
<docsvision.platform.wpf.navigator>
<navigator>
<connection />
</navigator>
</docsvision.platform.wpf.navigator>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<!-- Probing path is used for fast loading of ngen assembly images -->
<probing privatePath="Components;SystemCards;BaseObjects;Workflow;TakeOffice" />
</assemblyBinding>
</runtime>
</configuration>
用户配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<docsvision.platform.wpf.navigator>
<navigator>
<connection DisableVersionMismatchNotification="false" LangName="" />
<view ShowArchivedItems="false" ShowColorLabels="true" ShowDeletedItems="false"
ShowNavigationPane="true" ShowPreviewPane="false" ShowStatusBar="true" />
</navigator>
</docsvision.platform.wpf.navigator>
</configuration>
因此,由于混合模式,我的 .dll .NET 4 无法加载。如果我添加到 Navigator.exe.config 以下经典行:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
我的 .dll 将正确加载并且我的所有扩展都可以正常工作,但它会在 GUI 和平台的其他部分出现异常(在加载其他一些 DLL 时)出现一些问题。
我做错了什么以及如何使用我的扩展而没有平台中的错误?
PS我的DLL首先使用COM加载,所以我有这个:
因此,有两个应用领域。但是当我尝试对我的扩展执行 smthng 操作时 - 加载 .NET 4 dll 时出错。为什么???