【问题标题】:How does classic asp access .NET dlls that are referenced by a COM-Visible class?经典 asp 如何访问 COM-Visible 类引用的 .NET dll?
【发布时间】:2012-05-01 00:21:41
【问题描述】:

我有一个 COM 可见的 dll “COMInterface.dll”,它部署到现有应用程序的文件夹中。我已经创建了一个测试工具来验证这个 dll 的功能。

但是,当我尝试使用经典 asp 调用此 dll 的方法之一时,我收到如下消息:

MyCompany.MyProject.COM 接口 (0x80070002) 无法加载文件或程序集“MyCompany.Framework, Version=2.6.4202.14897, >Culture=neutral, PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。

我的“COMInterface.dll”引用了许多其他 dll,例如我公司的标准框架、日志记录类等。“Framework”就是这些 dll 之一。

asp 页面会在哪里寻找这些 dll?我猜我的工具可以工作,因为它是从程序文件夹中运行的,而 asp 页面位于 IIS 网站中。

我需要在这里使用 GAC 注册吗?我希望不会,因为我需要在那里部署很多 dll,我希望扩展应用程序而不必影响用户机器上的核心安装。

提前感谢您提出问题和建议。

[编辑] 我应该指出,可以很好地创建对象。这是导致问题的引用 dll 的位置。

【问题讨论】:

    标签: c# dll com asp-classic


    【解决方案1】:

    当您使用Regasm注册dll时,您需要使用/Codebase开关来确保dll可以被找到。

    【讨论】:

    • 谢谢,我去看看。你知道吗,如果这可以通过 VS(2008) IDE 完成?
    • 谢谢,安东尼。即使我还没有完全解决我的问题,我也接受这个作为答案。我确信这最终会解决问题,但我遇到了引用的 dll 没有被强命名的问题!
    【解决方案2】:

    作为一般答案,您可以使用 Fusion Log Viewer 来确定程序集绑定器搜索了哪些路径。

    有关此工具的信息,请参阅http://msdn.microsoft.com/en-us/library/e74a18c4.aspx

    Fusion Log Viewer 将列出绑定器探测到的所有路径。如果你把你的程序集放到这些路径中的任何一个中,它就会被找到。我不确定这些路径中的任何一条是否适合您的场景。

    【讨论】:

    • 谢谢,RB。我现在去看看。
    猜你喜欢
    • 1970-01-01
    • 2019-01-16
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    相关资源
    最近更新 更多