2012-10-02 109 views
14

我的項目結構如下:無法運行MVC4項目

  • SRC
    - 類庫1
    - 類庫2
    - web項目

  • - 調試
    - 釋放

MVC4 Web項目的默認輸出目錄是.\Bin\(即,在web項目的目錄中),但我將其更改爲類似..\bin\debug\..\bin\release\以適合我的上述項目結構。它編譯好,二進制文件到正確的地方。

但是,當我運行該項目,它抱怨說,Could not load type Myproject.MvcApplication,而如果我不做上述改變,那麼它的工作原理。

如何控制二進制文件的位置?我希望輸出目錄與源目錄完全分離 - 部署更容易,更安全,因爲我沒有在一個地方混合使用源代碼和二進制文件。

回答

10

簡短的回答,你不能。它與Visual Studio甚至.NET無關,這是IIS的限制。

的原因是IIS預計bin目錄直接在網站上的文件夾位置下是。這是一種您無法繞過的安全機制。它的目的是防止受到威脅的網站直接從網站的根節點「跳出」。

爲什麼你甚至想要做到這一點?

+0

因爲我使用msbuild,並且我部署了我的msbuild的輸出bin目錄中的所有內容。而且因爲我希望源代碼與二進制文件分開,所以我絕對不會將文件交給不應該擁有它們的人。 –

+0

我不認爲這是一個問題。也許我必須做的是,爲了方便起見,當我點擊運行/調試按鈕時,如何從我的msbuild的bin目錄運行網站,而不是從項目的bin目錄運行網站。我可以讓IIS Express做到這一點嗎? –

+0

@BobbyB - 您不能運行從bin目錄你的網站,它需要訪問的文件,如查看文件,JavaScript,圖片等等......這些都必須是根目錄下,因此,如果你讓你的bin目錄你的根目錄,那麼你將不得不在bin目錄中複製整個網站結構。你真的沒有道理。 –

2

我打這個爲好,這是意想不到的混亂鑑於調試和發佈二進制文件的分離是標準的做法和MVC有一個輸出文件夾的設置,這使得它誘人這樣做。這是可能的,見here,但它有點難看。

看來,堅持IIS的期望和需要保持調試和發佈分離和明確標記之間存在衝突。我認爲目前的解決方案不能很好地滿足需求。調試和發佈是構建時間的考慮因素,堅持IIS是打包/部署時間,兩者已經變得混亂。