8

以前にこの問題を抱えた人はいますか?

Windows 7ProfessionalSP1を実行しているマシンのVisualStudio2008 SP1でC#/。NET 3.5で記述されたソリューションを難読化しようとしていますが、DotfuscatorCommunityEditionを使用しても同じエラーが発生し続けます

アセンブリで実行する互換性のあるバージョンのildasmが見つかりませんでした(ソリューション出力exeへの有効なパス)。このアセンブリは、もともと.NETFrameworkv2.0.50727で構築されました

私はグーグルを試しましたが、これまでのところ何も役に立ちませんでした(それか、私のGoogle-Fuが私を失敗させています)。

Windows SDKを再インストールし、Visual Studio 2008を再インストールしようとしましたが、どちらも役に立ちませんでした。

同僚が自分のマシンで同じxml設定ファイルを使用しているため、問題の原因はDotfuscator Communityエディションであると想定しており、ソリューションが問題なくわかりにくくなっています。

私の考えでは、エラーメッセージに示されているように、Dotfuscatorは.NET 3.5と互換性のあるildasm(難読化に使用されるライブラリ/関数?)ファイルを見つけることができず、.NET2.xのみを見つけることができます。これは正しい仮定ですか?

Dotfuscatorは、以前は正常に機能していました。しかし、最近のWindows Updateのラウンドの後、それは私のマシンでは機能しなくなったようです-最近のWindows Updateのいくつかは、ネットワークと一部の同僚のラップトップに大混乱を引き起こしました(ログイン資格情報の取り消し、特定のプログラムの無効化、通常)、それが理由ですこれを引き起こしたのはアップデートの1つだと思います。

もちろん、同じ設定ファイルとソリューションの出力によって同僚のマシンでDotfuscatorが失敗することはないという事実を除いて、ユーザーエラーに陥ることに反対することはありません。

助言がありますか?

4

5 に答える 5

16

問題を解決するには、これらの4行を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のどのバージョンも見逃す可能性があります。エラーメッセージに欠落しているバージョンが表示されます。特定のバージョンでプロパティを定義するだけです。

于 2014-04-29T19:16:38.170 に答える
2

ご想像のとおり、これはDotfuscatorが提供されたアセンブリに適切なバージョンのildasmを見つけられなかったことが原因です。Dotfuscatorの難読化は、アセンブリの逆アセンブル、変更、および再アセンブルによって実行されるため、アセンブリのターゲットバージョンと一致するバージョンのilasm/ildasmが必要です。

Dotfuscatorは、\ Windows \ Microsoft.NET \ Framework {FrameworkVersionHere}で、適切なバージョンのilasmおよびildasm、IIRCを検索します。これらの実行可能ファイルは\Windows\ Microsoft.NET \ Framework \ v2.0.50727にありますか?そうでない場合は、それらをそこに入れる必要があります。.NETFramework 2.0をインストールすると、そうする必要があります(または、同僚のコンピューターからコピーするだけです)。

以下のコメントを反映するように編集します。WindowsSDKを再インストールすると問題が修正されたことがわかりました。これは、WindowsSDKのレジストリ設定が消去されたことが原因である可能性があります。

于 2012-08-17T23:17:20.767 に答える
2

私は、v4.9が「検索」するためにSDKバージョン7.0(7.1または8.0ではない)を必要とすることを発見して、一日の内臓を無駄にしましたILDASM

ルックアップがレジストリベースであるかどうかはまだわかりません。

TODO:発見が場所またはレジストリに基づいているかどうかを判断するために、それを再分割するために必要なものを分析します。プリエンプティブは、これをより適切に文書化したり、より詳細なエラーを提供したりする可能性があります。プリエンプティブフォーラムでこの保留中のモデレーションについて質問があります

于 2013-08-02T15:50:14.683 に答える
1

問題は、dotfuscatorが統合されたVisualStudioのインストールです。dosfuscatorを取り出すか、dotfuscatorなしでビジュアルスタジオを再インストールします。

于 2013-03-02T09:53:48.133 に答える
1

私も同じ問題を抱えていました。Dotfuscator 4.9.8500は、.NET4.0用のSDKツールを正しく検索していません。パスが次のキーの下にあると想定しています。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0\WinSDK-NetFx40Tools

SDKインストーラーはどれもこのキーを設定しません-VS2010が設定したようです(これはもう使用していません)。Dotfuscator構成のバリエーションを持つブランチが数十あるため、このためにビルドをインストルメント化したくありませんでした。

この問題がないDotfuscator4.16.0に移行しています(上記の@mletterleに感謝しますか?)が、他のノックオン効果のためにこれを段階的に展開する必要があります。

4.9.8500の回避策:ビルドエージェントに.NET 4.5.2開発者パックをインストールしてから、以下をレジストリに追加します。これにより、Dotfuscatorが7.1.NET4.0ツールフォルダーにリダイレクトされます。キーには「7.0」と表示され、パスには「7.1」と表示されていることに注意してください。最初にレジストリフォルダをバックアップしてください!

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0\WinSDK-NetFx40Tools]
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Windows SDK Tools for .NET Framework 4.0"
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Bin\\NETFX 4.0 Tools\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0\WinSDK-NetFx40Tools-x64]
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Windows SDK Tools for .NET Framework 4.0 (x64)"
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Bin\\NETFX 4.0 Tools\\x64\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0\WinSDK-NetFx40Tools-x86]
"ProductVersion"="7.1.7600.0.30514"
"ComponentName"="Windows SDK Tools for .NET Framework 4.0"
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Bin\\NETFX 4.0 Tools\\"
于 2014-11-28T11:54:38.777 に答える