3

.NET を何年も使用した後、基本的な質問をします。大学を卒業したばかりの一人の子供が私にこれを尋ねたので、私は突然混乱しました!

.NET プロジェクトで IBM DATA DB2 DLL を参照しています。最初に使用したバージョンは 9.7.0.2 でした。そのため、いくつかのテストを実行した後、IBM DATA DLL をバージョン 9.7.6.2 にアップグレードしました。

問題は、コードを再コンパイルして実行する必要があるか、それともビルド ディレクトリの IBM DATA DLL を直接置き換えて問題なく実行できるかということです。

コードをいつ再コンパイルするのが理想的ですか?

ありがとうソニ

4

5 に答える 5

3

DLL の参照方法によって異なります。ソリューション エクスプローラーでプロジェクトを選択し、その中の [参照] を展開します。DLL を選択し、[プロパティ エディター] ウィンドウでプロパティ"特定のバージョン"を確認します。false に設定されている場合は、出力のバイナリを置き換えるだけで済みます。そうしないと、正確なバージョンの DLL が見つからない場合、アプリケーションでエラーがスローされます。

于 2012-09-04T19:58:41.543 に答える
2

ライブラリのバージョンは、(エンティティ フレームワークと mysql アダプターを使用する場合のように) 特定のターゲットを指定しない限り変更しないでください。動作させるには、バージョン番号を変更する必要があります。API の変更時に別のケースが発生します (頻繁ではなく、理想的ではありませんが、発生します)。

于 2012-09-04T19:56:02.357 に答える
2

これは実際にはすべて、DLL とそれを作成したサード パーティに依存します。ドキュメントを見て、非推奨の関数や変更された関数を探す必要があります (それらの関数を呼び出していますか?)。ドキュメントに何も変更も非推奨もないと書かれていても、回帰テストを行う必要があります。ドキュメントはコードではありません。コードは重要な真実です。

完璧な世界では、パブリック API で何も変更されたり廃止されたりすることはなく、DLL (インターフェイス) の作成者は新しい関数を追加するだけです。残念ながら、私たちはそれを当てにすることはできません。

簡単に言うと、DLL で呼び出している関数のいずれかが変更または非推奨になっている場合は、再構築する必要があります。

于 2012-09-04T19:59:17.793 に答える
1

通常、サード パーティの DLL は後方互換性を備えている必要があります。ただし、常にそうであるとは限らないため、アップグレード時に再コンパイルして、そうであることを確認する必要があります。コンパイルせずに DLL のバージョンを交換すると、コンパイル/テストで簡単に検出できるさまざまなランタイム エラーが発生する危険があります。

于 2012-09-04T20:01:13.687 に答える
0

コードを再コンパイルする必要はありません。これが、動的にリンクされたライブラリの利点です。

于 2012-09-04T19:53:45.587 に答える