Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在其他asp.net项目中使用C#编写的DLL?_C#_Asp.net_Dll_Dllimport - Fatal编程技术网

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

如何在其他asp.net项目中使用C#编写的DLL?,c#,asp.net,dll,dllimport,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 Templ

我有一个名为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文件从project debug目录粘贴到asp.net项目的bin目录中,该项目已在使用common.cs,但每当我尝试使用导入该dll时

[DllImport("common.dll")]
public static extern String NewString(String x);
当NewString是另一个函数时,我得到了这个错误

在DLL“common.DLL”中找不到名为“NewString”的入口点

我已经在StAdvApps-以及其他指南上检查了如何发布和使用DLL的问题,但是我不知道为什么我会得到这个错误,而且大多数指南都显示了用C++编写的DLL,因为我的DLL是用C语言写的,所以它们也告诉我们使用这说明函数已经准备好导出或类似的东西了,但我想我不能在C#dll中使用它

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


谢谢。

您不需要使用
DllImport
。由于common.dll是一个托管程序集,您只需将其添加为尝试使用
NewString

的ASP.NET项目中的引用,而无需使用
DllImport
。由于common.dll是一个托管程序集,因此您只需将其添加为尝试使用
NewString
的ASP.NET项目中的引用即可。如果您的程序集是用c#编写的,则不需要dllimport。如果您的程序集是用c#编写的,那么就不需要dllimport,而是可以添加引用,比如-(浏览)

。而是选择添加引用,例如-(浏览)

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

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

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

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

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

如果希望在解决方案中运行程序,但不希望将其设置为启动程序,则可以右键单击,转到调试并运行。在单个解决方案中组织类似的项目可以使维护它们更加容易


希望这能有所帮助。

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

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

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

如果希望在解决方案中运行程序,但不希望将其设置为启动程序,则可以右键单击,转到调试并运行。在单个解决方案中组织类似的项目可以使维护它们更加容易


希望这能有所帮助。

由于dllimport属性用于非托管动态链接库(DLL)(在其托管common.DLL的情况下),因此您只需将common.DLL的引用添加到新项目中,因为dllimport属性用于非托管动态链接库(DLL)(在其托管common.DLL的情况下),你只需添加通用.dl的引用到你的新项目。谢谢你的详细回答,我试图遵循互联网上的指南,但没有注意到它们是针对C++而不是C的,谢谢。我试着按照互联网上提供的指南去做,但没有付费