Dotfuscator“找不到兼容的 ildasm 版本”
你們之前有沒有遇到過這個問題?
我試圖在執行 Windows 7 Professional SP1 的機器上混淆用 C#/.NET 3.5 在 Visual Studio 2008 SP1 上編寫的解決方案,並在使用 Dotfuscator Community Edition 時不斷收到相同的錯誤
找不到兼容版本的 ildasm 以在程序集上執行(解決方案輸出 exe 的有效路徑)。此程序集最初是使用 .NET Framework v2.0.50727 建構的
我試過Google搜尋,但到目前為止沒有什麼幫助(或者我的 Google-Fu 讓我失望了)。
我嘗試重新安裝 Windows SDK,並重新安裝 Visual Studio 2008,但都沒有幫助。
我假設是 Dotfuscator 社區版導致了問題,因為一位同事在他的機器上使用相同的 xml 設置文件,並且它混淆了解決方案沒有問題。
我的想法是,正如它在錯誤消息中所說,Dotfuscator 找不到與 .NET 3.5 兼容的 ildasm(用於混淆的庫/函式?)文件,只有 .NET 2.x。這是一個正確的假設嗎?
Dotfuscator 以前一直執行良好。但是,在最近一輪 Windows 更新之後,它似乎不再在我的機器上執行 - 最近的一些 Windows 更新已經對網路和一些同事的筆記型電腦造成了破壞(通常會撤銷登錄憑據,使某些程序無效),這就是為什麼我假設這是導致此問題的更新之一。
當然,我並不反對將其歸結為使用者錯誤,除了相同的設置文件和解決方案輸出不會導致 Dotfuscator 在同事的機器上失敗。
有什麼建議麼?
如您所料,這是由於 Dotfuscator 未能為提供給它的程序集找到正確版本的 ildasm。Dotfuscator 混淆是通過反彙編、更改和重新組裝程序集來執行的,因此它需要與程序集的目標版本匹配的 ilasm/ildasm 版本。
Dotfuscator 將在 \Windows\Microsoft.NET\Framework{FrameworkVersionHere} 中搜尋 ilasm 和 ildasm、IIRC 的正確版本。您在 \Windows\Microsoft.NET\Framework\v2.0.50727 中有這些執行檔嗎?如果沒有,您需要將它們放入其中 - 安裝 .NET Framework 2.0 應該這樣做(或者只是從同事的電腦上複製)。
編輯以反映以下評論:我們發現重新安裝 Windows SDK 解決了該問題,可能是因為 Windows SDK 的系統資料庫設置已被清除。
我必須將這四行添加到我的 dotfuscator 項目文件中才能解決問題:
<dotfuscator version="2.3"> <propertylist> <property name="ILDASM_v2.0.50727" value="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ildasm.exe" /> <property name="ILDASM_v4.0.30319" value="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\ildasm.exe" /> </propertylist>一般來說,dotfuscator 可能會錯過任何版本的 ildasm。它說明錯誤消息中缺少哪個版本。只需使用您的特定版本定義屬性。