从VBScript调用.Net类时,使用2个版本的同一DLL时发现DLL错误

时间:2019-12-27 16:36:29

标签: c# dll vbscript versioning

我正在使用混合了vbscript代码和.Net代码的较旧的应用程序。 .Net代码是较新的,它使用MySQL.Data版本6.9.12,VBScript是所有旧版本,仍然使用6.9.8版本。当我最初在.Net中编写类时,我想使用MySQL的较新版本,但我们不准备将所有代码更新为较新的版本,因此我能够将web.config更新为在我的DLL中同时存在这两个版本应用程序,并且工作正常。 这是我的web.config外观的一个示例:

<system.data>
  <DbProviderFactories>
    <clear />
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" />
      <codeBase version="6.9.8.0" href="C:\inetpub\wwwroot\Code\DLLs\MySql.Data.dll" />
      <codeBase version="6.9.12.0" href="C:\inetpub\wwwroot\Code\DLLs\UpdatedDLLs\MySql.Data.dll" />  
      <bindingRedirect oldVersion="6.9.8.0" newVersion="6.9.12.0" /> 
    </dependentAssembly>
  </assemblyBinding>
</runtime>

现在我遇到了问题,因为我需要从vbscript页面调用.Net类(我知道逻辑解决方案是将vbscript页面更新为.Net,我所有的问题都会消失,但是我有时间限制,所以我现在无法更新vbscript页面)。所以我这样称呼我的.Net类(忽略命名约定):

dim dotnetclass
set dotnetclass = Server.CreateObject("MyProject.CardIntegrations.Controllers.CardController")

strArray= dotnetclass.GetCardIntegrationHelper(5, 6)

set dotnetclass= Nothing

所以看起来server.createobject正常工作。当我调用“ GetCardIntegrationHelper”函数时发生错误,它说它无法找到MySql.Data 6.9.12 DLL。香港专业教育学院一直在测试我的.Net函数与单元测试,以便工作正常,并且可以找到DLL没问题。不过,MyProject中的packages.config和app.config都参考6.9.12。

是否缺少某些内容,所以当我从vbscript调用.Net函数时,它可以找到更新的DLL吗?

0 个答案:

没有答案