簡體   English   中英

如何在其他asp.net項目中使用C#編寫的DLL?

[英]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項目中將其添加為引用即可。

如果您的程序集是用C#編寫的,則不需要dllimport。 寧願像這樣添加引用-msdn條目 (用於瀏覽

將dll粘貼到站點的Bin文件夾中,您可以通過在文件類頂部使用“使用”來使用dll,然后您將獲得dll的所有方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM