我有一个名为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所以请帮助我。
感谢。
答案 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方法。