2017-08-01 71 views
1

我們有一個包含程序集LibA和LibB的.Net應用程序AppA。讓dotfuscator識別兩個針對不同版本的第三個程序集構建的程序集是否引用相同的程序集?

LibB也引用LibA;它是在不久前建立的,並且放在我們的軟件包倉庫中,所以它是針對LibA的舊版本而不是直接包含在AppA中的。這些圖書館都沒有強有力的命名。

當我們像構建一樣運行AppA時,只使用最新版本的LibA; LibB所有對LibA的引用都很樂意使用最新版本,而不是LibB構建的版本。但是,當我們將這些程序集放到Dotfuscator中時,Dotfuscator會將來自LibB的對LibA的引用視爲引用完全不同的程序集,然後將我們傳遞到Dotfuscator的LibA引用。因此,在混淆的應用程序中,從LibB到LibA的引用不會更新以反映LibA的混淆,因此在運行時會失敗。

解決方法是確保我們所有的組件都是與我們其他組件的完全相同的版本構建的。這樣可以修復混淆的應用程序,但這種做法有損我們軟件包管理策略的目的,我們的軟件包管理策略旨在讓我們的每個圖書館能夠按照自己的步調發展。我們開發的大量包裹很難進行擴展。

我是否在Dotfuscator中丟失了一些開關或設置(我們正在使用商業版本的4.8版本,但可以升級),這將使它僅通過名稱解析程序集引用,就像.NET在運行時一樣混淆會按照我們期望的方式工作?

回答

2

聲明,我是PreEmptive Solutions的一名員工,Dotfuscator的開發人員。

版本4.33.0今天發佈(11/20/2017)包含此問題的修復程序。此外,現在可以使用Assembly Binding Redirection更清楚地瞭解要解決的組件。

+0

已升級到4.33.0並仍然看到相同的行爲。在Dotfuscator配置中是否有必須更改此設置以使其工作?我需要在某個.config文件中有重定向嗎? – antlersoft

相關問題