5

最近、devArt dotConnect for Oracle コンポーネントをバージョン 6 から更新しました。7.2まで

すべてうまくいくようです。

ただし、コンパイルすると、「同じ依存アセンブリの異なるバージョン間で競合が見つかりました。 」という警告が表示されます。

これが dotConnect コンポーネントに関連しているかどうかはわかりません (それはわかりません) が、それはかなり良い推測だと思います。

警告を 2 回クリックすると、次のダイアログが表示されます。

MS Visual Studio -- 1 つ以上の依存アセンブリにバージョンの競合があります。

app.config ファイルにバインド リダイレクト レコードを追加して、これらの競合を修正しますか?

それら (MS) またはそれ (VS) を提供するのはどれほど素晴らしいことでしょう。正確にはわかりません。私はとどまるべきですか、それとも行くべきですか?

アップデート

2 つの DevArt dotConnect for Oracle コンポーネントへの参照があります。

Devart.Data -および Devart.Data.Oracle

Devart.Data: ランタイム バージョン v2.0.50727、バージョン 5.0.555.0

Devart.Data.Oracle: ランタイム バージョン v2.0.50727、バージョン 7.2.96.0

したがって、バージョンはありますが、ランタイム バージョンは一致しません。これが問題かどうかはわかりません。警告メッセージがより明確であるとよいでしょう。おそらく「それ」は問題が何であるかを正確に知っています - なぜその重要な情報を漏らさないのですか?

更新 2

まったく同じ 2 つの参照を使用する別のプロジェクトがあります。更新されたコンポーネントをインストールした後、コンパイルさえしません。2つのプロジェクトの違いはなぜですか?したがって、.DLL が同じ (同じ名前、ディスク上の同じ場所) であったとしても、それらを削除してから 2 番目のプロジェクトに追加し直したところ、問題なく実行されました。エラーも警告もありませんでした。しかし、最初のプロジェクトに戻っても同じ警告が表示されますが、これらの 2 つの参照/DLL を削除して追加し直しても、同じ警告が表示されます。だから私はまだ何をすべきかわからない/リダイレクトするという提案/提案でVSを取り上げるべきかどうか(私は心の中で、「古い学校」の電話オペレーターがワイヤーをあらゆる方法で再接続し、10代のツイスター愛好家にふさわしい旋回をしているのを想像しています。 )。

4

2 に答える 2

3

バインド レコードは、特定のバージョンの dll を別のバージョンにポイントするバインド セクションを web.config (または app.config) ファイルに追加します。ただし、相互に互換性がない場合、これは危険な場合があります。彼らは次のように見えます

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

ただし、前に、さまざまなプロジェクトがどこから Devart dll をリンクしているかを確認し、それらがすべて同じものを参照していることを確認します。極端な場合、使用したい Devart dll をソリューションのフォルダーにコピーし、すべてのプロジェクトがそのフォルダーを指すようにします。

于 2012-10-05T21:22:50.380 に答える
1

はい、心配する必要があります。同じアセンブリ (MySharedAssembly など) を参照する 2 つのアセンブリ (MyAssembly1 と MyAssembly2 など) がありますが、バージョンは異なります。アプリケーションをロードして使用できる MySharedAssembly は 1 つのバージョンのみであるため、MyAssembly1 と MyAssembly2 はそのバージョンで正しく動作する必要があります。

古いバージョンの MySharedAssembly を参照する必要があります。質問の 1 つは、MySharedAssembly に後方互換性があるかどうかです。そうでない場合、アプリケーションが正しく動作しない可能性があります。

構成にリダイレクトを追加すると、基本的に、古いバージョンの MySharedAssembly を読み込もうとするアセンブリは新しいバージョンを使用する必要があると言えます。したがって、MySharedAssembly に下位互換性がある場合は、これで確実に回避できます。ただし、アプリケーションに構成ファイルが必要です。

最善の策は、共有アセンブリを参照するアセンブリを見つけて、最新かつ最高のバージョンを使用する更新があるかどうかを確認することです。

于 2012-10-05T21:23:24.747 に答える