2012-06-28 64 views
2

在我開始工作這個工作之前的幾年,另一位不在這裏的開發人員使用HTML,vbscript和javascript在經典的ASP中編寫了一個應用程序。這很好,但問題在於,2頁用C#寫成,HTML文件和代碼隱藏在文件後面。這兩個頁面沒有解決方案文件。它們最初可能是在Visual Studio中創建的,但現在它們不存在。讓C#識別Visual Studio以外的dll

這很重要,因爲Visual Studio只是爲您做了很多事情,甚至沒有想到。

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

我試圖把DLL在同一文件夾中的網頁,然後我試過如下:

  • 使用MYDLL;
  • myDLL dll = new myDLL();
  • myDLL dll = myDLL();

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

在不得不用vbscript重寫這些頁面之前(我沒有時間去做)我很茫然。

有沒有人遇到過這個問題?有什麼我可以放在web.Config?或者這僅僅是不可能的,而且我受到了衝擊。

順便說一句,這是所有在2.0 .net框架下運行。

+2

你是如何建設在第一個地方?直接部署到Web服務器上?這聽起來像你最好在Visual Studio中創建一個新項目......(請注意,這個問題與C#本身沒什麼關係,還有更多與ASP.NET有關的內容,如果它包含C#它不是真正的「傳統ASP」 - 至少不是那個位)。 –

+0

'DllImport'只在C,C++ DLL上。 –

+0

我對這兩個文件有一個Visual Studio項目,只是因爲在這兩個頁面上工作要容易得多。 我不確定是否可以創建一個VS項目,其中的主要文件在經典的asp。我想這真的沒有關係。我會看到我可以做什麼。 –

回答

0

我同意喬恩,這聽起來像你應該嘗試創建這些文件的新項目。保持代碼比你找到的更好總是更好。如果出於某種原因新項目不是一個選項,您應該在您的問題中指出這一點。

3

如果您要將代碼引用到網站的bin文件夾中,請打開web.config並找到以下部分configuration -> system.web -> compilation -> assemblies

您需要將程序集的顯示名稱添加到該列表中 - 以便編譯器將在其後期綁定構建過程中引用該程序集。

現在你應該可以使用這些頁面中的東西。

如果你不知道程序集的顯示名稱(通常爲yourassembly, version=*.*.*.*, Culture=neutral, PublicKeyToken=null爲文化不變,非強名稱的程序集),你可以使用像ILSpy這樣的工具打開它(還有其他的,它只是成爲我的最喜歡的),它會告訴你,當你選中它的用戶界面:

ILSpy displaying an assembly's display name

對不起窮人亮 - 幹手以下太多咖啡

如果該程序集的所有代碼在唱歌您還可以通過將該名稱空間添加到configuration -> system.web -> pages -> namespaces中,將默認的using添加到項目中的所有.cs或.aspx代碼中 - 使得在頁面中使用該代碼變得更加簡單。

+0

他確實必須修改web.config文件嗎?我認爲bin目錄中的程序集會自動包含在ASPNET的JIT編譯中(ASPX,ASMX,ASHX等) – Cheeso

1

我爲我的應用程序創建了VS解決方案/項目。我編譯並將其發佈到Web服務器。當我發佈它時,我已經拷貝了所有的項目文件。

我跑它,它崩潰,因爲它無法找到我的DLL。

我試着添加了Andras在上面提到的幾行,看起來好像讓我靠得更近,但它只是改變了我得到的錯誤。

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

之後,我做到了這一切只是工作。所以後來我想我會看到發生了什麼,如果我將所有添加到我的C#應用​​程序和Web.Config文件中的附加代碼都刪除了。它仍然有效。我所需要做的就是將該文件夾設置爲IIS中的應用程序文件夾,並在我的C#應用​​程序中放入Using語句,生活再次美妙。

感謝您的所有意見和建議。安德拉斯感謝鏈接到ILSpy。這是一個很酷的小工具。

保重, 羅伯特

+0

啊,它不是應用程序!是的,我有點認爲這是理所當然的! :-)很高興你已經排序 –