2011-05-27 72 views
5

我需要特別構建一個MVC 3.0站點和目標x64。我遇到了一個問題,試圖構建我的MVC 3.0站點,並將Platform Target設置爲x64,將MvcBuildViews設置爲True。一切都很好,直到它試圖編譯視圖。如果我將Platform Target設置爲AnyCPU,則所有內容都將編譯,但設置爲x64時,出現此錯誤:ASP.NET MVC 3.0構建視圖爲64位

無法加載文件或程序集「Mvc64Bit」或其某個依賴項。試圖加載格式不正確的程序。

這可以通過創建一個空白的MVC 3.0項目,卸載項目,編輯項目文件以將MvcBuildViews項目設置爲「true」,重新加載項目,將項目的構建屬性中的平臺目標更改爲x64 ,然後建立。

我一直沒有能夠找到任何關於上述錯誤的在線,只是它處理不匹配的DLL(一個x32,一個x64),但這沒有任何意義,除非視圖構建引擎是32位或某些東西。

任何提示指向我在正確的方向將非常感激。謝謝閱讀!!

回答

7

我收到了Microsoft對此問題的回覆。我猜想發生的事情是Visual Studio調用一個32位編譯器將網站編譯成64位DLL。之後,它再次爲視圖調用32位編譯器。視圖編譯需要加載64位Web項目DLL以從定義的模型中獲取信息。這是「錯誤的格式」出現的位置。32位編譯器嘗試加載64位Web項目DLL。

現在,從Visual Studio命令提示符調用64位aspnet_compiler.exe的作品完美。但是,我想,由於Visual Studio是一個32位應用程序,因此無法加載64位編譯器。我不確定有什麼方法可以調用64位,即使有辦法,Visual Studio也可能無法給出通常會出現的錯誤列表(只是一個假設,因爲我不知道Visual Studio調用編譯器...一個簡單的命令行執行工作,但也許它實際上加載了DLL和來自VS代碼內部的調用)

因此,我的工作是將MVCBuildViews = true聲明放入屬性中。然後我把MVCBuildViews = false放在'Release | AnyCPU'屬性組中,我只是讓IIS在網站第一次加載時編譯視圖。這不是完全預編譯,但它會工作。