在我开始从事这项工作的几年前,另一个不再在这里工作的开发人员使用HTML,vbscript和javascript在经典ASP中编写了一个应用程序。很好,但是问题是用C#编写了2个页面,其中包含一个HTML文件和一个文件后面的代码。这两个页面没有解决方案文件。它们可能最初是在Visual Studio中创建的,但现在不存在。
这很重要,因为Visual Studio只是为您做很多事情,甚至没有考虑。
我的问题是在这两个C#页面中,我需要让它们引用DLL。使用Visual Studio时,这是一项简单的任务。您只需添加对该项目的引用,生活就会很美好。但是在VS之外似乎没有任何作用。
我尝试将dll与页面放置在同一文件夹中,然后尝试以下操作:
使用myDLL;
myDLL dll =新的myDLL();
myDLL dll = myDLL();
我在线上找到了一些代码,这些代码说可以创建一个内部静态类并使用[DLLImport()],但是那也不起作用。它找不到dll或dll的入口点。我目前正在研究如何创建一个入口点,以防万一这是使一切正常的方法。
除了不得不用vbscript重写这些页面(我没有时间做)之外,我很茫然。
有人遇到过这个问题吗?我可以在web.Config中放入一些内容吗?还是这是不可能的,我被束缚了。
顺便说一句,这些都在2.0 .net框架下运行。
最佳答案
如果将DLL拖放到网站的bin文件夹中,然后打开web.config并找到以下configuration -> system.web -> compilation -> assemblies
部分。
您需要将程序集的显示名称添加到该列表中,以便编译器在后期构建过程中引用该程序集。
现在,您应该能够使用这些页面上的内容。
如果您不知道程序集的显示名称(对于文化不变的,没有强名称的程序集,通常使用yourassembly, version=*.*.*.*, Culture=neutral, PublicKeyToken=null
),则可以使用ILSpy之类的工具打开它(还有其他名称,它就成了我的收藏夹),它会告诉您何时在用户界面中选择它:
对不起,因为突出显示效果不好-过多的咖啡后手抖动了
如果该程序集中的所有代码都在单个命名空间中,则还可以通过将该命名空间添加到using
来向项目中的所有.cs或.aspx代码添加默认的configuration -> system.web -> pages -> namespaces
-使其更易于使用页面中的代码。
关于c# - 使C#识别Visual Studio外部的dll,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11253267/