2011-01-11 11 views
5

他のアセンブリからのビューを使用するMVC2 Webサイトがあります。 これを行うには、私はを "組み込みリソース"と表示しました。埋め込みリソースとしてのC#ビューは、ビルド後に常に古いビューを表示します。

私はビューを見ることができましたが、私がビューを変更すると、私はもう変更を見ることができません。

Iは埋め込みリソースとしてビューを呼び出す方法は、このようになります。この場合

return View("~/Extension/Extensions.MyExtension.dll/" + 
    "Extensions.MyExtension.Views.MyItem.Details.ascx", entity); 

が「拡張」部分はビューは埋め込みリソースとしてロードしなければならないことを示しています。次の部分は、ビューを含むアセンブリを示しています。最後の部分は、ビューの場所(名前空間を含む)です。

ビューの内容全体を変更しても、以前のビューのデータが表示されるのはどうでしょうか。また、ビューを埋め込みリソースとしてマーク解除することもできます。

Extensions.myExtension.dllの最新のアセンブリがあることを確認するために、アセンブリをWebサイトのbinフォルダにコピーしました。リフレクターでアセンブリをチェックして、正しいビューがアセンブリ内にあるかどうかを確認しました。これは正しいビューですが、私はまだ古いビューを参照しています。

ビューの名前を変更すると、問題は一時的に解決されますが、私にとっては良い解決策ではありません。ビューの名前を元のビューに戻すと、古いビューが表示されました。

+0

あなたは、IISまたはdevのサーバーを介してこれを実行していますか? –

答えて

2

データがキャッシュされていて、DLLファイルが変更されていると見なされていないようです。あなたのweb.configに 'optimizeCompilations'というプロパティがありますか? falseに設定されていることを確認します。それ以外の場合(trueの場合)、変更されたDLLファイルのみが再コンパイルされます。

詳細については、this MSDNのページを参照してください。例えば

<compilation debug="true" defaultLanguage="c#" targetFramework="4.0" 
    optimizeCompilations="false"> 
+0

それはまさに問題でした。ありがとう – Jan

0

コンパイル時にビューが結果のアセンブリに埋め込まれるため、プロジェクトを再コンパイルする必要があります。再コンパイルせずにASCXファイルを変更するだけでは、ブラウザを更新するだけで変更内容が反映されることはありません。

+0

私はプロジェクトを再コンパイルしましたが、私はその質問を編集しました。 – Jan

0

完全なプロジェクトを再構築する必要があります。それでも問題が解決しない場合は、プロジェクトをクリーンアップしてビルドしてください。

関連する問題