Dotfuscator"无法找到ildasm的兼容版本"

Jam*_*lor 8 .net dotfuscator

你们有没有遇到过这个问题?

我试图在运行Windows 7 Professional SP1的计算机上混淆使用Visual Studio 2008 SP1上的C#/ .NET 3.5编写的解决方案,并在使用Dotfuscator Community Edition时不断收到相同的错误

无法找到在程序集上运行的兼容版本的ildasm(解决方案输出exe的有效路径).此程序集最初使用.NET Framework v2.0.50727构建

我已经尝试过谷歌搜索,到目前为止没有任何帮助(或者,或者我的Google-Fu让我失望).

我已经尝试重新安装Windows SDK,并重新安装Visual Studio 2008,但都没有帮助.

我假设这是导致问题的Dotfuscator社区版,因为同事在他的机器上使用相同的xml设置文件,并且它对解决方案进行模糊处理没有问题.

我的想法是,正如它在错误消息中所说,Dotfuscator找不到与.NET 3.5兼容的ildasm(用于混淆的库/函数?)文件,只有.NET 2.x. 这是正确的讽刺吗?

之前,Dotfuscator工作得很好.但是,在最近一轮Windows更新后,它似乎不再适用于我的机器 - 最近的一些Windows更新导致了网络和一些同事笔记本电脑(撤销登录凭据,使某些程序失效,通常),这就是为什么我假设这是造成这种情况的更新之一.

当然,除了相同的设置文件和解决方案输出不会导致Dotfuscator在同事的机器上失败之外,我不会将其归结为用户错误.

有什么建议?

Pas*_*hec 16

我必须将这四行添加到我的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>
Run Code Online (Sandbox Code Playgroud)

通常,dotfuscator可能会错过任何版本的ildasm.它说错误消息中缺少什么版本.只需使用您的特定版本定义属性即可.


ian*_*hol 2

正如您所猜测的,这是由于 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 的注册表设置已被清除。