.net 2.0 ソリューションを .net 3.5 に変換する際の落とし穴
-
03-07-2019 - |
質問
私たちは 20 以上のプロジェクトを含むソリューションを .net 2.0 から 3.5 に移行し、同時に Visual Studio 2005 から 2008 に移行します。同時に MS Entlib 2.0 から 4.0 への切り替えも行っています。
- Visual Studio Wizardに私たちのソリューションを変換させない理由はありますか?
- 3.5は2.0と完全に後ろ向きに互換性がありますか?
- Entlib 4.0は2.0と完全に逆方向に互換性がありますか?
編集: これを書いたとき、私は少し混乱したかもしれませんが、下位互換性とは次のことを意味すると考えられています。2.0 プロジェクトに存在するもので、3.5 では動作/コンパイルできないものはありますか?
:)
//W
解決
2005年から2008年にかなり大規模なソリューション(20以上のプロジェクト)をアップグレードしましたが、本当に簡単でした。プロジェクトのアップグレードは基本的にのみです。 3.0 / 3.5と2.0は同じコアフレームワークを共有しているため、基礎となるフレームワークは同じです。
前述したように、アップグレードしている場合でも、プロジェクトのフレームワーク参照を変更する必要はありません。実際、デフォルトではフレームワークを3.0 / 3.5に変更する代わりに2.0のままにします。これは、参照(プロジェクトプロパティページ、アプリケーションテーブル" Target Framework"フィールド)を変更するまで3.0 / 3.5の機能を利用できないことを意味しますが、追加が発生しないことをより確実にすることも意味します互換性の問題(参照が変更されるまで3.0 / 3.5コードを追加するとエラーが発生します)。
TFS 2008の新機能も見逃すべきではありませんが、TFS 2008を使用できるようにアプリをアップグレードする必要はありません。
1.1から2.0への変換は、はるかに苦痛でした...
他のヒント
ウィザードを使用してVisual Studio 2005から2008にいくつかのプロジェクトをアップグレードしましたが、それらはすべて無事でした(まあ...そのC ++獣を除いて。でも、あなたは.NETについて話しているのです)。
.NETバージョンをアップグレードする必要はないことに注意してください。 Visual Studio 2008は、.NET 2.0、3.0、および3.5をサポートしています。ただし、3.5は同じCLR上にあり、多少なりとも追加のライブラリであるため、とにかく下位互換性があります。そして、「古い」ライブラリは同じままです。
Entlibについて知りません。
なぜ単体テストを実行してみませんか? :)
- Visual Studioウィザードにソリューションを変換させない理由はありますか?
いいえ。
- 3.5は2.0と完全に後方互換性がありますか?
いいえ。 3.5には、ネイティブに逆方向に移植しない新機能があります。そして(IIRC)2.0から3.5に移行するいくつかの非推奨があります。
- Entlib 4.0は2.0と完全に後方互換性がありますか?
そうは思いません。 3.5が要件としてリストされています。
バックアップを作成し、ウィザードを実行して、何が起こるかを確認します。このようなチャンキーなプロジェクトにはしばらく時間がかかるかもしれませんが、ビルド/期待どおりに実行されるかどうかを判断できる位置にいます。
EntLib 2.0 から 4.0 にアップグレードしたとき、Caching アプリケーション ブロックを使用している場合、次のような重大なソース コードの変更が発生することがわかりました。
- 2.0 では、次を使用してキャッシュ マネージャーを取得します。
CacheManager cache = CacheFactory.GetCacheManager()
. - 4.0では、次のように置き換える必要があります
CacheManager
とICacheManager
そうでないとコンパイルされません。
また、例外処理ブロック用に独自の例外フォーマッタ クラスを作成している場合は、次のようになります。
- 2.0 では、シグネチャを持つ 1 つのコンストラクターを定義する必要があります。
(TextWriter, Exception)
. - 4.0 では、これは廃止され、次のシグネチャを使用して 2 番目のコンストラクターを定義する必要があります。
(TextWriter, Exception, Guid)
.
EntLib 3.1から4.0に移行する場合、重大な変更はないはずです:
"パブリックAPIに重大な変更はありません。それはEL4の設計目標の1つでした。 EL4には.NET3.5が必要であることを思い出してください。
-Grigori"
(GrigoriはEntLibのプログラムマネージャーです)
2.0から3.1についてはわかりませんが。明日@ p& pで適切な人を見つけることができたら、これを更新します。
エード
.net 2.0から.net 3.5への移行方法については、このリンクを確認してください
http://codingreview.blogspot .com / 2009/09 / how-to-migrate-your-application-from.html