簡體   English   中英

使C#識別Visual Studio外部的dll

[英]Getting C# to recognize a dll outside of Visual Studio

在我開始從事這項工作的幾年之前,另一個不再在這里工作的開發人員使用HTML,vbscript和javascript在經典ASP中編寫了一個應用程序。 很好,但是問題是用C#編寫了2個頁面,其中包含一個HTML文件和一個文件后面的代碼。 這兩個頁面沒有解決方案文件。 它們可能最初是在Visual Studio中創建的,但現在不存在。

這很重要,因為Visual Studio只是為您做很多事情,甚至沒有考慮。

我的問題是在這兩個C#頁面中,我需要讓它們引用DLL。 使用Visual Studio時,這是一項簡單的任務。 您只需添加對該項目的引用,生活就會很美好。 但是在VS之外似乎沒有任何作用。

我嘗試將dll與頁面放置在同一文件夾中,然后嘗試以下操作:

  • 使用myDLL;
  • myDLL dll =新的myDLL();
  • myDLL dll = myDLL();

我在線上找到了一些代碼,這些代碼說可以創建一個內部靜態類並使用[DLLImport()],但這也不起作用。 它找不到dll或dll的入口點。 我目前正在研究如何創建一個入口點,以防萬一這是使一切正常的方法。

除了不得不用vbscript重寫這些頁面(我沒有時間做)之外,我很茫然。

有人遇到過這個問題嗎? 我可以在web.Config中放入一些內容嗎? 還是這是不可能的,我被束縛了。

順便說一句,這些都在2.0 .net框架下運行。

如果將DLL拖放到網站的bin文件夾中,請打開web.config並找到以下部分configuration -> system.web -> compilation -> assemblies

您需要將程序集的顯示名稱添加到該列表中,以便編譯器在后期組裝過程中引用該程序集。

現在,您應該能夠使用這些頁面上的內容。

如果您不知道程序集的顯示名稱(通常是您的程序集yourassembly, version=*.*.*.*, Culture=neutral, PublicKeyToken=null對於文化不變的,未強名稱的程序集yourassembly, version=*.*.*.*, Culture=neutral, PublicKeyToken=null ),則可以打開它在ILSpy之類的工具中(還有其他工具,它就成了我的最愛),它會告訴您何時在UI中選擇它:

ILSpy顯示裝配體的顯示名稱

對不起,因為突出顯示效果不好-過多的咖啡后手抖動了

如果該程序集所有的代碼是在一個單一命名空間,另外,還可以添加默認using通過向所有.cs或在項目中的.aspx代碼命名空間configuration -> system.web -> pages -> namespaces -使在頁面中使用該代碼更加簡單。

我為我的應用程序創建了VS解決方案/項目。 我編譯並將其發布到Web服務器。 當我發布它時,它復制了所有項目文件。

我運行它並崩潰,因為它找不到我的dll。

我嘗試添加上面Andras提到的內容,這似乎使我離得越來越近,但它只會改變我得到的錯誤。

然后我進入了Web服務器上的IIS。 我在“網站”下展開了文件夾列表。 我右鍵單擊包含我的應用程序的文件夾,然后將該文件夾放入應用程序文件夾。

完成后,一切都正常了。 因此,我以為如果我撤消添加到C#應用程序和Web.Config文件中的所有其他代碼,將會發生什么情況。 它仍然有效。 我所需要做的就是將該文件夾設置為IIS中的一個應用程序文件夾,並在我的C#應用​​程序中放置一個Using語句,生活再次美好。

感謝您的所有評論和建議。 Andras感謝您提供到ILSpy的鏈接。 那是一個很酷的小工具。

保重,羅伯特

我同意喬恩的觀點,聽起來您應該嘗試為這些文件創建一個新項目。 最好讓代碼保持比發現更好的狀態。 如果由於某種原因無法選擇新項目,則應在問題中指出。

暫無
暫無

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

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