3

2 つのアセンブリがあり、それらを A と B と呼ぶことができます。それらに厳密な名前を割り当てたところ、アセンブリ B がアセンブリ A の古いバージョンを探しているという問題が発生しました。**EDIT2: AssemblyB を削除しても問題が解決しないため、古いバージョンを探しているVS2008かもしれませんか?また、fusionlog を介して、次の警告が表示されます: wrn アプリケーション構成ファイルのバインディング リダイレクトが許可されていません。これは何か関係がありますか?**

同じ種類のエラーが複数発生します。ここに 1 つのスニペットを示します。

You must add a reference to assembly 'AssemblyA, Version=1.2.4737.25316, Culture=neutral, PublicKeyToken=null'.

プロジェクト内の厳密な名前の AssemblyA は、次のプロパティを示します。 ここに画像の説明を入力

app.config 内に、次のコードを配置しました。

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="AssemblyA" culture="neutral"
    publicKeyToken="a22e30ac6a0edfc0"/>
            <bindingRedirect oldVersion="1.2.4737.25316" newVersion="1.3.0.19440"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

しかし、これはうまくいきません。両方のアセンブリのソースにアクセスできます。

編集:厳密な名前を削除して古い(弱い名前の)dllをプロジェクトに追加すると、厳密な名前のバージョンについて尋ねるエラーが表示されます

You must add a reference to assembly 'AssemblyA, Version=1.3.0.19440, Culture=neutral, PublicKeyToken=a22e30ac6a0edfc0'.

ここで何が起こっているのですか?

4

1 に答える 1

3

一部の DLL は、他の DLL の古い (弱い名前の) バージョンをまだ参照しています。幸いなことに、アセンブリにはソースが付属していたので、キーを含むすべてを再コンパイルする必要がありました。

その後、「見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません」という行に沿って別のエラーが発生しました

これを修正するために、app.config に以下を追加しました。

<?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <publisherPolicy apply="no" />
            <assemblyIdentity name="Assemblyname" culture="neutral" publicKeyToken="3a5628535d42dbed"/>
            <bindingRedirect oldVersion="1.3.0.15233" newVersion="1.3.0.40647" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
于 2013-03-28T23:06:43.757 に答える