2

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

这很重要,因为 Visual Studio 为您做了很多事情,甚至无需考虑。

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

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

  • 使用我的DLL;
  • myDLL dll = 新的 myDLL();
  • 我的DLL dll = myDLL();

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

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

有没有人遇到过这个问题?有什么可以放在 web.Config 中的吗?或者这只是不可能的,我被水洗了。

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

4

3 回答 3

3

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

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

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

如果您不知道程序集的显示名称(通常yourassembly, version=*.*.*.*, Culture=neutral, PublicKeyToken=null用于文化不变、非强命名程序集),您可以在ILSpy之类的工具中打开它(还有其他工具,它只是我最喜欢的)它告诉当您在其 UI 中选择它时:

ILSpy 显示程序集的显示名称

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

如果该程序集中的所有代码都在单个命名空间中,您还可以using通过添加该命名空间来为项目中的所有 .cs 或 .aspx 代码添加默认值configuration -> system.web -> pages -> namespaces- 从而更简单地在页面中使用该代码。

于 2012-06-28T21:44:25.280 回答
1

I created a VS Solution/Project for my app. I compiled and published it to the web server. When I published it I had it copy all project files.

I ran it and it crashed because it could not find my dll.

I tried adding the lines that Andras mentioned above and it seemed like it was getting me closer but it only changed the errors I was getting.

Then I went into IIS on the web server. I expanded the folder listing under Web Site. I right clicked on the folder that contained my app and made that folder into an application folder.

After I did that everything just worked. So then I thought I would see what happened if I backed out all of the additional code I added to my C# app and the Web.Config file. It still worked. All I needed to do was to make the folder an application folder in IIS and put a Using statement in my C# app and life is wonderful again.

Thanks for all the comments and suggestion. Andras thanks for the link to ILSpy. That is a cool little tool.

Take care, Robert

于 2012-06-29T20:47:36.557 回答
0

我同意 Jon 的观点,听起来您应该尝试为这些文件创建一个新项目。让代码变得更好总是比你发现它更好。如果由于某种原因不能选择新项目,您应该在问题中指出这一点。

于 2012-06-28T21:41:11.993 回答