3

私はdotfuscatorで初めて働いています。私のプロジェクトはC#と.NET 3.5で書かれており、メインプログラムといくつかのプラグインがあります。これは、プラグインをロードするコードのスライスです。

// Load the file
Assembly asm = Assembly.LoadFile( pluginPath );

// Instantiate the types I need
foreach( Type type in asm.GetTypes() )
{
    ...
}

ここで問題は次のとおりです。難読化しない場合はすべて問題ありませんが、dotfuscatorを使用するasm.GetTypes()と、ReflectionTypeLoadExceptionがスローされます。

The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

私は何時間もグーグルで検索しましたが、結果はありませんでした。前もって感謝します。

編集:いくつかの調査とデバッグの後、リフレクションはアセンブリ内のタイプを認識(またはロード)できないため、マニフェストの問題だと思います。難読化されたアセンブリをReflectorで開きましたが、すべて問題ないようです。

4

3 に答える 3

2

アセンブリに厳密な名前が付けられているか、Authenticode で署名されていますか? 難読化はアセンブリの構造を変更するため、難読化後にそれらを使用するには、再署名する必要があります。

Dotfuscator の商用バージョンは、アセンブリ (厳密な名前と Authenticode の両方) の再署名をサポートしていますが、無料の Community Edition を使用している場合は、Dotfuscator のビルド後の手順として再署名する必要があります。

于 2010-11-30T16:13:21.613 に答える
1

難読化は、一部またはすべてのメソッド名、タイプ名などの名前を変更することで機能します。

難読化を使用すると、反射が失敗することがよくあります。運が良ければ、難読化する対象を選択することもできますが これには細部に注意を払う必要があります。

于 2010-11-30T01:48:08.780 に答える
0

オブファスケーションはリフレクションではうまく機能しないと思います。実際、それが難読化を使用する場合の最大のトレードオフだと思います。

反映する必要があるタイプを克服する方法については、このリンクを参照してください

于 2010-11-30T01:46:50.140 に答える