我对使用类库很陌生,希望有人能告诉我我是否遗漏了什么,或者我正在尝试做的事情是否值得:
我有一个从 VB6 应用程序运行的 dll。我们将它命名为 test.dll。Test.dll 使用另一个 .dll,我们将其称为 Dep.dll。
起初,我只是在 Test.dll 中添加了对 Dep.dll 的引用,并设置 Copy Local = 'False'。然后我在 VB6 应用程序配置文件中设置程序集绑定:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Dep Name"
publicKeyToken="xxxxxxxxxxx"
culture="neutral" />
<codeBase version="1.0.0.2"
href="file:\\dir_name\dep.dll"/>
<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.0.2"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
但我听说我可以为 Test.dll 创建一个 app.config 文件,并在其中而不是在 VB6.exe 的应用程序配置文件中包含上述条目。
出于某种原因,我无法获得以这种方式工作的参考。这是错误消息:
无法加载文件或程序集 'Dep.dll, Version=1.0.0.2,Culture=neutral,PublicKeyToken=xxxxxxxxxxx' 或其依赖项之一。该系统找不到指定的文件。
我将 App.config 文件的 Build Action 属性更改为“Content”,将“Copy Output”属性更改为“Copy Always”。我也没有对 Test.dll 的项目文件中对 Dep.dll 的原始引用做任何事情。我从 VB6.exe 的 app.config 文件中删除了 Dep.dll 的程序集绑定条目。
我们这里有一个使用 app.config 文件的 dll 工作示例,但是它不绑定程序集,只有一堆应用程序设置。
我正在做的研究表明,也许我正在做的事情是不可能的,甚至是最佳实践,但现在我只想知道我正在尝试的事情是否可行。如果是这样,我错过了什么?