2017-07-07 40 views
0

在我的同事繼續工作之後,我繼承了一個項目。我有一個用於偵聽器服務的C#項目,將由基於雲的應用程序向我們發送請求和數據調用。所有的測試都能在dev中正常工作,當我在IIS 2008 R2上部署應用程序時會出現問題。編譯器錯誤CS0246偵聽器服務IIS 2008 R2

在Visual Studio中的項目中設置的目標框架是.Net Framework 4.5。

包含已編譯應用程序的IIS上的虛擬目錄位於使用'.Net Framework v4.0.30319'的應用程序池內。從我的研究中我已經看到,這個Framework版本應該可以與爲v4.5部署的所有應用程序一起工作。

虛擬目錄包含用於偵聽器服務的asm​​x文件,Web.Config文件和包含所有二進制文件的bin目錄。

當我調用ASMX文件在IE中,我得到了以下錯誤:

編譯器錯誤信息:CS0246:類型或命名空間名稱「XXX」找不到(是否缺少using指令或程序集參考?)

參考XXX作爲使用語句列出,並位於同一項目的文件夾結構中。這並不是指向一個單獨的項目。我閱讀了以下Microsoft article,其中的所有內容似乎都是正確的。但是,最後的註釋表明,當爲.Net 4.5編譯DLL時,也可能會引發錯誤CS0246,然後將其複製到帶有Plattform 4.0目標的項目中。

有人可以確認上述應用程序池設置是否可以與爲.Net v4.5構建的應用程序一起工作,並建議爲什麼asmx文件無法在Web服務器上編譯?

+0

'.Net Framework v4.0.30319'是.NET 4.0,4.5,4.5.1,4.5.2,4.6,4.6.1,4.6.2和4.7的基礎,所以是的,這是正確的。如果存在架構不匹配(x86與x64),也會發生此問題 –

回答

0

The problem seems to be in the assembly which contains the XXX type.You may have an older version or a different version of this assembly which does not contain this type or namespace.

  • 找出你喜歡的類型
  • 轉到bin目錄下的DLL和找出該DLL的版本存在
  • 交叉檢查此版本與開發環境。
  • 如果不工作,你可以手動本次大會從開發環境複製並放置在IIS服務器
0

首先感謝你對那些誰了回覆的時間。

問題原來是因爲我需要將IIS上的虛擬目錄轉換爲應用程序。該選項位於虛擬目錄樹視圖的右側菜單中。如果您選擇「查看虛擬目錄」,這是非常有用的。