[英]How to use a DLL written in C# in other asp.net project?
我有一個名為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文件到我已經使用common.cs的asp.net項目的bin目錄中,但是每當我嘗試使用導入該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,所以請幫幫我。
謝謝。
艾哈邁德(Ahmed)如果您要將任何項目轉換為庫(.dll),請在解決方案資源管理器中雙擊“屬性”文件夾。 單擊項目類型的下拉菜單,然后選擇“類庫”,然后單擊“生成,重新生成解決方案以重新編譯為.dll”。
請注意,您可以在同一解決方案中創建一個新的ASP.NET項目,方法是右鍵單擊該解決方案,然后單擊“添加項目”。 或者,您可以打開Visual Studio的新實例。 打開ASP.NET項目后,右鍵單擊引用,然后單擊添加引用。 單擊瀏覽選項卡,導航到包含.dll的文件夾並添加它。 不要忘了.dll中定義的任何類都必須標記為public,否則它們在其他程序集中將不可見。 另外,不要忘記定義類的名稱空間的using語句。
單擊“運行按鈕”(綠色箭頭)時,它將始終運行解決方案資源管理器中以粗體顯示的項目。 如果.dll以粗體顯示,則會出現錯誤,提示您無法運行類庫,而必須將其更改為控制台應用程序。 如果它是一個控制台應用程序,那么它必須定義一個靜態的void Main()函數,以便它知道從哪里開始。 您可以通過在解決方案資源管理器中右鍵單擊任何項目並將其設置為啟動項目,然后單擊“設置為啟動項目”。
如果您希望在解決方案中運行程序,但又不想將其設置為啟動程序,則可以右鍵單擊,轉到調試並運行。 在單個解決方案中組織類似的項目可以使維護更加容易。
希望這可以幫助。
您不需要使用DllImport
。 由於common.dll是托管程序集,因此您只需要在嘗試使用NewString
的ASP.NET項目中將其添加為引用即可。
將dll粘貼到站點的Bin文件夾中,您可以通過在文件類頂部使用“使用”來使用dll,然后您將獲得dll的所有方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.