2017-08-01 6 views
1

アセンブリLibAとLibBを含む.NetアプリケーションAppAがあります。異なるバージョンの3番目のアセンブリに対して作成された2つのアセンブリが、同じアセンブリを参照していると認識させるようにしますか?

LibBもまたLibAを参照する;しばらく前にビルドされ、パッケージリポジトリに格納されていたので、AppAに直接含まれているものより古いバージョンのLibAに対してビルドされていました。どのライブラリも厳密に名前を付けられていません。

AppAをビルドしたように実行すると、LibAの最新バージョンのみが使用されます。 LibBからLibAへのすべての参照は、LibBが構築されたバージョンではなく最新のバージョンをうまく使用しています。

しかし、これらのアセンブリをDotfuscatorに置くと、DotfuscatorはLibAからのLibAへの参照を、まったく異なるアセンブリを参照しているように扱い、LibAをDotfuscatorに渡します。したがって、難読化されたアプリケーションでは、LibAからLibAへの参照は、LibAの難読化を反映するように更新されないため、実行時に失敗します。

この問題を回避するには、すべてのアセンブリが他のアセンブリとまったく同じバージョンに対して作成されていることを確認してください。これは難読化されたアプリケーションを修正しますが、私たちのライブラリのそれぞれが独自のペースで進化することを可能にするパッケージ管理戦略の目的を凌駕しています。私たちが開発する多数のパッケージではスケールするのが難しいです。

Dotfuscator(私たちはバージョン4.8の商用バージョンを使用していますが、アップグレード可能です)がありません。これは実行時に.NETと同じように名前だけでアセンブリ参照を解決します。難読化は私たちの期待通りに機能しますか?

答えて

2

免責事項私はDotfuscatorの開発者であるPreEmptive Solutionsの従業員です。

4.33.0の本日リリースされたバージョン(11/20/2017)には、この問題の修正が含まれています。さらに、Assembly Binding Redirectionを使用して、解決するアセンブリをより明確にすることができます。

+0

4.33.0にアップグレードしても、同じ動作が表示されます。 Dotfuscatorの設定を変更する必要がありますか? .configファイルのどこかにリダイレクトを置く必要がありますか? – antlersoft

関連する問題