2012-10-02 12 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ディレクトリがWebサイトフォルダの場所の直下にあることを想定しているためです。これはバイパスできないセキュリティメカニズムです。その目的は、侵害されたWebサイトが、サイトの直接のルートから「エスケープ」しないようにすることです。

なぜあなたもこれをしたいですか?

+0

私はmsbuildを使用しているので、msbuildの出力binディレクトリからすべてを配備しています。私はソースをバイナリとは別にしたいので、ファイルを持ってはいけない人にファイルを誤って渡すことは決してありません。 –

+0

これは問題ではありません。おそらく、私は実行/デバッグボタンをクリックすると、プロジェクトのbinディレクトリからではなく、自分のmsbuildのbinディレクトリからWebサイトを実行する方法を理解することができます。 IIS Expressでこれを行うことはできますか? –

+0

@BobbyB - BinディレクトリからWebサイトを実行することはできません。ビューファイル、javascript、画像などのファイルにアクセスする必要があります。これらはすべてルートディレクトリの下にある必要があります。したがって、あなたのルートディレクトリを作成したら、binディレクトリ内のWebサイト構造全体をコピーする必要があります。あなたは本当に意味をなさない。 –

2

デバッグとリリースのバイナリを分離することが標準的な方法であり、MVCには出力フォルダの設定があるので、これは奇妙で混乱します。これは可能ですが、hereを参照してください。しかし、それは少し醜いです。

IISの期待に従うことと、デバッグとリリースを分離して明確にラベルを付ける必要性との間には矛盾があるようです。私は、現在の解決策が非常にうまく満足していないことが、両方の必要性があると思います。デバッグとリリースはビルド時間の考慮事項であり、IISにはパッケージ/デプロイメント時間を遵守しており、2つは混乱しています。