0

IISサーバーにアクセスできませんが、サイトが.NETFrameworkのバージョン1.1で実行するように構成されていると言われています。Telerik JustDecompileを使用すると、次のように表示されます。

ここに画像の説明を入力してください

「NET1」は、2つのdllがバージョン1.1のFWに対してコンパイルされていることを示唆しているようです。Webサイトのdll「GLSS」の横にある「ANY」は、Webサーバーにインストールされている.NET FWの任意のバージョンに対してサイトを実行できることを示していますか?

2.0へのアップグレードの準備として、Web管理者にサイト構成をバージョン2.0のFWに変更するように依頼しましたが、1.1コードを実行していると考えていたサイトが引き続き機能することに驚きました。びっくりするべきですか?

これは後方互換性の単純な例であり、コードが使用するためにコンパイルされたバージョン以上であれば、フレームワークの任意のバージョンを使用するようにサイトを構成できますか?

ソリューション内のプロジェクトのプロパティページを見ると、Webサイトプロジェクトの場合のみ、コンパイルするFWのバージョンを設定する場所を見つけることができなかったことに驚きました。参照されているプロジェクトでそれを見つけることができました。

サイトが構成されているFWのバージョンと、アセンブリがコンパイルされているバージョンとの関係をよりよく理解するのに役立ちますか?

4

1 に答える 1

1

驚くべきことではありませんが、.NETは、あるバージョンのランタイムに対してコンパイルされたアセンブリが新しいバージョンのランタイムに対して実行されることになっているという意味で、常に下位互換性がありました。

もちろん、微妙なセマンティックの違いから始まり、オブジェクトコントラクトレベルでの変更(期待されるメソッド/クラスがもう存在しない場合)で終わる、下位互換性がない微妙な問題がありますが、一般に、これらの問題はの複雑さに依存しますあなたの申請。単純なアプリケーションは問題なく動作するはずだと考えるのは安全です。

アセンブリが準拠しているランタイムの数は、アセンブリのメタデータの一部であり、リフレクションを使用して読み取ることができます。したがって、実行時に、少なくとも2つの可能なバージョンのランタイムがあります。1つはアセンブリがコンパイルされたバージョンで、もう1つはコードを実行するランタイムの現在のバージョンです。

于 2013-03-12T14:20:41.597 に答える