1

私のアプリでは、Spring.rest や spring.social.twitter などの Nuget パッケージを使用しています。展開時に 2 つのライブラリの奇妙な点が発生します (展開とは、.net45 フレームワークをインストールしてから、リリース フォルダー内のすべてを WIX 経由で別のマシンにインストールすることです)。

最初の奇妙な点は、Nuget の開発ボックス (spring.rest で使用) に common.logging 2.1.2 がインストールされていることですが、spring.rest が製品ボックスに読み込まれると、2.0.0 が検索されます。開発ボックスに 2.0.0 さえ持っていないので、理由はわかりませんが、そのバージョンをダウンロードして製品にコピーし、それを乗り越えることができます。

2 つ目は spring.social です - nuget は net20 ライブラリ (spring.rest に net40-client を使用) を使用することを決定しましたが、これは dev で正常に動作しますが、彼ら (spring.social ライブラリ) は net20 バージョンが必要であると判断しました製品ボックスのspring.rest.dllの。net40 spring.social ライブラリを使用するように csproj を変更すると、コンパイルできません。これは、同じバージョンであっても明らかに同一ではないためです (net20 dll で動作する 2 つの関数呼び出しでリンク エラーが発生する)。spring.rest を net20 に変更すると、やはりコンパイルできないため、これはオプションではありません。

それらは (もちろん) 強い名前が付けられているわけではなく、実際には同じバージョンで同じアーキテクチャであるため、必要に応じてそれらを GAC に入れることさえできるかどうかはわかりません。両方のバージョンをGACに入れようとしましたが、MSIからインストーラーエラーは発生しませんでしたが、同じ名前のライブラリを入れませんでした(笑いのためにほとんどすべてをそこに入れましたが、残りは機能しました)。アプリは専用のボックスで実行されるので、私はそれに関するすべてを「所有」しており、「通常の」ユーザー アプリでは禁じられているあらゆる種類の邪悪なことを行うことができますが、この小さな楽しみの輪は私を当惑させました。

開発ボックスで実行されているものを追跡しようとして(おそらくライブラリを見つけるために他の場所に手を差し伸べているかどうかを確認するため)、DepencyWalker(依存)を試しましたが、すべてが遅延ロードされているため、あまり効果がありません、プロファイリングがあっても、エントリポイントに到達すると停止するためです。fuslogvw を試しましたが、common.logging と spring.rest も表示されませんか? fuslogvw に表示される nuget パッケージは spring.social.twitter と newtonsoft.json だけで、どちらも期待どおりに bin フォルダーから読み込まれます。アイデアがなくなったので、素晴らしい SO コミュニティに目を向けています。次の良いステップは何ですか?

ありがとう、グレッグ

4

1 に答える 1

0

ほとんどの場合.config、本番環境と開発マシンのファイルは異なります。dev.configファイルに が含まれていbindingRedirectて、プロダクションに含まれて.configいない場合、これが観察された動作の原因である可能性があります。

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
         <assemblyIdentity name="myAssembly"
                           publicKeyToken="32ab4ba45e0a69a1"
                           culture="en-us" />
         <bindingRedirect oldVersion="1.0.0.0"
                          newVersion="2.0.0.0"/>
       </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

http://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.71).aspx

于 2013-05-30T10:00:13.930 に答える