如何在其他asp.net项目中使用C#编写的DLL?

时间:2012-02-01 06:34:17

标签: c# asp.net dll dllimport

我有一个名为common.cs的文件,其中包含常用的函数,如

    public int GetColumnIndexByNameTemplateField(GridViewRow row, string SearchColumnName)
{
    int columnIndex = 0;
    foreach (DataControlFieldCell cell in row.Cells)
    {
        if (cell.ContainingField is TemplateField)
        {
            if (((TemplateField)cell.ContainingField).HeaderText.Equals(SearchColumnName))
            {
                break;
            }
        }
        columnIndex++;
    }
    return columnIndex;
}

现在我想将common.cs文件更改为common.dll,我创建了另一个类库项目,我在其中复制了common.cs文件中的所有代码,添加了必要的引用并构建它以生成dll文件,现在我将项目调试目录中的dll文件粘贴到我的asp.net项目的bin目录中,该目录已经使用了common.cs,但每当我尝试使用它导入该dll时。

[DllImport("common.dll")]
public static extern String NewString(String x);

其中NewString是另一个函数,我收到此错误。

无法在DLL'common.dll'中找到名为'NewString'的入口点。

我已经检查过stackoverflow上已经发布的问题以及互联网上的其他指南,告诉我们如何制作和使用dll但我不知道为什么我会收到此错误也是大多数指南显示用C ++编写的dll因为我的dll是用C#编写的,所以他们也告诉使用__declspec(dllexport),它告诉函数已经准备好导出或类似的东西但是我不能在C#dll中使用它。我猜想。

我认为这是一个基本问题,但这是我第一次在C#中创建dll所以请帮助我。

感谢。

4 个答案:

答案 0 :(得分:3)

Ahmed如果要将任何项目转换为库(.dll),请双击解决方案资源管理器中的“属性”文件夹。单击项目类型的下拉列表并选择“类库”,然后单击“构建”,重建解决方案以重新编译为.dll。

请注意,您可以通过右键单击解决方案并单击“添加项目”,在同一解决方案中创建新的ASP.NET项目。或者,您可以打开Visual Studio的新实例。打开ASP.NET项目后,右键单击引用,然后单击“添加引用”。单击浏览选项卡,导航到包含.dll的文件夹并添加它。不要忘记.dll中定义的任何类必须标记为公共,否则在其他程序集中不可见。另外,请不要忘记定义类的名称空间的using语句。

当您单击“运行按钮”(绿色箭头)时,它将始终运行解决方案资源管理器中以粗体显示的项目。如果.dll以粗体显示,那么您将收到一个错误,您无法运行类库,但您必须将其更改为控制台应用程序。如果它是一个控制台应用程序,那么它必须定义一个静态void Main()函数,以便它知道从哪里开始。您可以通过在解决方案资源管理器中右键单击任何项​​目作为启动项目,然后单击“设置为启动项目”。

如果您希望在解决方案中运行程序,但又不想将其设置为启动程序而不是右键单击,请转到调试并运行。在单一解决方案中组织类似项目可以使维护更容易。

希望这有帮助。

答案 1 :(得分:1)

您无需使用DllImport。由于common.dll是托管程序集,因此您只需将其添加为尝试使用NewString的ASP.NET项目中的引用。

答案 2 :(得分:1)

如果您的程序集是用c#编写的,则不需要dllimport。而是去添加so - msdn entry等引用(转到浏览

答案 3 :(得分:1)

将dll粘贴到站点的Bin文件夹中,您可以通过文件类顶部的“using”使用它,然后您将获得所有dll方法。