在我开始从事这项工作的几年前,另一位已不在此处的开发人员使用 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 的工具中打开它(还有其他的,它刚刚成为我的最爱),当您在用户界面中选择它时,它会告诉您:
抱歉,突出显示效果不佳 - 喝了太多咖啡后手生涩
如果该程序集中的所有代码都位于单个命名空间中,您还可以通过将该命名空间添加到 配置 -> system.web -> 页面 -> 命名空间
- 使在页面中使用该代码变得更简单。
关于c# - 让 C# 识别 Visual Studio 之外的 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11253267/