c# - 让 C# 识别 Visual Studio 之外的 dll

标签 c# dll asp-classic vbscript .net-2.0

在我开始从事这项工作的几年前,另一位已不在此处的开发人员使用 HTML、vbscript 和 javascript 在经典 ASP 中编写了一个应用程序。这很好,但问题是 2 个页面是用 C# 编写的,其中包含一个 HTML 文件和一个代码隐藏文件。这两个页面没有解决方案文件。它们最初可能是在 Visual Studio 中创建的,但现在不存在于其中。

这很重要,因为 Visual Studio 可以不假思索地为您做很多事情。

我的问题是,在这两个 C# 页面中,我需要让它们引用 DLL。使用 Visual Studio 时这是一个简单的任务。您只需添加对项目的引用即可,一切都很好。但在 VS 之外似乎没有任何效果。

我尝试将 dll 放在与页面相同的文件夹中,然后尝试了以下操作:

  • 使用 myDLL;
  • myDLL dll = new myDLL();
  • myDLL dll = myDLL();

我在网上找到了一些代码,说要创建一个内部静态类并使用[DLLImport()],但这也不起作用。它找不到该 dll 或该 dll 的入口点。我目前正在研究如何创建一个入口点,以防万一这是使一切正常工作的方法。

除了必须用 vbscript 重写这些页面(我没有时间这样做)之外,我不知所措。

有人遇到过这个问题吗?我可以在 web.Config 中添加一些内容吗?或者这根本不可能,我已经被浇灭了。

顺便说一句,这都是在 2.0 .net 框架下运行的。

最佳答案

如果您将希望代码引用的 DLL 拖放到网站的 bin 文件夹中,则打开 web.config 并找到以下部分configuration -> system.web ->compilation ->assemblies.

您需要将程序集的显示名称添加到该列表中 - 以便编译器在后期绑定(bind)构建过程中引用该程序集。

现在您应该能够使用这些页面上的内容了。

如果您不知道程序集的显示名称(通常为 yourassemble, version=*.*.*.*, Culture=neutral, PublicKeyToken=null 表示文化不变,非-强命名程序集)您可以在类似 ILSpy 的工具中打开它(还有其他的,它刚刚成为我的最爱),当您在用户界面中选择它时,它会告诉您:

ILSpy displaying an assembly's display name

抱歉,突出显示效果不佳 - 喝了太多咖啡后手生涩

如果该程序集中的所有代码都位于单个命名空间中,您还可以通过将该命名空间添加到 配置 -> system.web -> 页面 -> 命名空间 - 使在页面中使用该代码变得更简单。

关于c# - 让 C# 识别 Visual Studio 之外的 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11253267/

相关文章:

java - java "unmanaged"代码可以通过 [DllImport] 属性导入到 C# 中吗?

iis - 使用经典 ASP 实现 OpenID (DotNetOpenAuth)

java - 如何通过COM调用Java方法

asp-classic - 列出经典 ASP 中的文件夹结构

c# - 对象摘要中的换行符

c++ - 为什么需要将新事件添加到 IDL 接口(interface)的*末尾*?

dll - Windbg !dlls 输出的含义

c# - 在 Debian 上,运行单错误 CS8027 : Error running pkg-config

c# - 如何确定可为空的值类型

c# - Microsoft.ServiceBus.NamespaceManager - 托管服务标识 (MSI)