1

.NET フレームワークの特定のバージョン間の上位互換性に関する確かなアドバイスを探しています。

わかりやすくするために、.NET 2.0 のみをサポートし、ストアド プロシージャを含む v3.5 アセンブリとそのすべての v3.5 依存関係を読み込む SQL Server 2008 について話しているとします。

これらの事実はどのように組み合わされますか?
「CLRは同じ」という事実は勝つのですか?CLR のバージョンは 3 つの FW バージョン間で同じであるため、v3.5 のコードを v2.0 環境に安全に導入できると言えますか? どのような場合に、「前方互換性はサポートされていません」という通知を、一般的なケースでは真実であるとして却下できますが、v3.5 と v2.0 の関係の特定のケースでは真実ではありませんか?

(実際に、すべての依存関係を含む v3.5 アセンブリを SQL Server 2008 にインポートしようとしました。動作します。しかし、それが動作する必要があるため、または壊れやすい魔法のために動作するかどうかを知りたいです。)

4

3 に答える 3

4

「.NET 3.5 アセンブリ」などというものはありません。アセンブリに刻印されている唯一のバージョンは、必要なランタイム バージョンです。これは、.NET バージョン 2.0 から 3.5 SP1 に含まれるコンパイラによってビルドされたアセンブリの v2.0.50727 です。これは、アセンブリ内のメタデータの形式を実際に指定するという、さらにひねりを加えたものです。アセンブリ内のマニフェストを読み取ることができるのは、CLR バージョン 2 以降のみです。この形式は 4.0 で変更されました。これは、4 をターゲットとするアセンブリを実行するために CLR バージョン 4 が必要な主な理由です。

フレームワーク バージョン 2.0 から 3.5 SP1 までの唯一の違いは、含まれているアセンブリのセットにあります。3.0 以降を対象とする場合、たとえば WPF PresentationFramework アセンブリへのアセンブリ参照のみを追加できます。3.5 を対象とする場合にのみ、System.Core を追加できます。

SQL プロジェクトでこれらの新しいアセンブリを回避することは難しくありません。間違えると、迅速な例外が発生します。

于 2012-11-20T12:58:05.040 に答える
1

「SQLServer2008は.NET2のみをサポートする」という最初の仮定は間違っていると思います。したがって、以下の説明はすべて意味がありません。

この記事を見ると、System.Coreは.NET 3.5のみであるため、.NET3.5がサポートされていることがわかります。

http://msdn.microsoft.com/en-us/library/ms403279(v=sql.100).aspx

これで、.NET3.5アセンブリを自信を持って使用できます。

于 2012-11-20T12:28:22.450 に答える
0

SQL Server は、3.x と互換性のある 2.0 CLR を読み込みます。そうです、「CLR のバージョンは同じ」が勝ちです。

于 2012-11-20T12:09:15.393 に答える