13

実稼働 Web アプリケーションでクラス ライブラリ (単一の DLL ファイル) を更新したいと考えています。この Web アプリはコンパイル済み (公開済み) です。私は StackOverflow に関する回答を読みました (申し訳ありませんが、検索機能がうまく機能しないため、もう見つけられないようです)。新しい DLL を bin フォルダーに貼り付けるだけで、それが選択されると信じるようになりました。問題なく起動します (これにより WP がリサイクルされますが、InProc セッション状態を使用していないので問題ありません)。

ただし、これを試してみると、サイトが爆発し、アセンブリ マニフェストの定義がアセンブリ参照と一致しないという FileLoadException が発生します。これはいったい何だ!? Visual Studio で DLL を更新し、サイト全体を再デプロイすることは問題なく機能しますが、後から考えると非常に面倒です。変更を実装するためにサイト全体を再展開する必要がある場合、別の DLL を用意する意味は何ですか?

問題は次のとおりです。アプリを壊したり、すべてのファイルを再デプロイしたりせずに、運用 Web サイトで DLL を更新するにはどうすればよいでしょうか?

4

3 に答える 3

10

覚えておくべきことは、Visual Studio と ASPNET を考慮する限り、Web サイトWeb アプリケーションが存在するということです。

通常、Web サイトにはすべての aspx ファイルと vb ファイルがライブ サーバーに公開されており、ASPNET ワーカー プロセスはプレゼンテーションの前に毎回アプリを再コンパイルします。

もう一方の端は Web アプリケーションです。すべてのコード ビハインド ファイルが 1 つの DLL ファイルにコンパイルされ、aspx ページを展開し、DLL ファイルを含む bin フォルダーを運用環境に配置するだけです。

「プリコンパイル済み Web サイト」 (MSDN の公式概要のリンクを参照)として知られる「ハイブリッド」もあり、Web アプリケーションの単一の DLL レイアウトはありませんが、Web サイトのすべてのコンパイル作業は Web サイト用に行われます。あなた。これには、必要に応じていくつかの「モード」があります。

あなたのサイトがある種のプリコンパイルを備えた Web サイトとして設定されているために、エラーが発生しているように思えます。事前にコンパイルされたモデルを使用することは、特定のファイル/署名が適切に配置されていることを前提とするという点で、もう少し「厳密」です。更新されたバージョンの DLL ファイルを使用すると、プリコンパイルでファイルの名前とバージョンが必要になるため、中断が発生します。

追加の DLL を本番環境に問題なく追加できるため、可能であれば、Web アプリケーションに変換することをお勧めします。それ以外の場合は、このマトリックスを見て、アプリケーションに必要なプリコンパイルの形式を確認してください。

于 2010-03-31T18:44:06.767 に答える
1

このSO投稿を見てください。あなたが言及しているものかもしれません。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません

于 2010-03-31T15:53:04.233 に答える
0

あなたの参照を見てください。「特定のバージョン=true」と書いてありますか?falseに設定し、アプリを再公開して(アプリはまだ特定のマニフェストを持つアセンブリを探しているため、一度実行する必要があります)、再試行します。

于 2010-03-31T16:01:56.597 に答える