【发布时间】:2014-09-01 06:39:18
【问题描述】:
我对使用类库很陌生,希望有人能告诉我我是否遗漏了什么,或者我正在尝试做的事情是否值得:
我有一个从 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 工作示例,但它不绑定程序集,只有一堆应用程序设置。
我正在做的研究表明,也许我正在做的事情是不可能的,甚至是最佳实践,但现在我只想知道我正在尝试的事情是否可行。如果是这样,我错过了什么?
【问题讨论】:
-
不,DLL 不能有 .config 文件。使用 Fuslogvw.exe 解决程序集解析问题。
-
@HansPassant -- 可以(我同事向我展示的 dll 示例肯定是使用应用程序配置文件中的应用程序设置和连接设置),但我正在做一些额外的搜索,我认为我的问题可能是调用我的 dll 的 vb6 应用程序有自己的 app.config 文件?这就是我从中得到我的假设的地方:[stackoverflow.com/questions/3255820/…
标签: vb.net dll vb6 app-config assemblybinding