34

2 台のマシン。.NET 3.5 と VS 2008 VC++ SP1 再頒布可能パッケージの両方

C++/CLI と C# の 2 つの署名付き DLL を使用する単一の exe ファイル

1 台のマシンで exe が読み込まれ、正常に実行されます。

一方、C++ 実行可能ファイル (HRESULT 0x8013141A) で「厳密な名前の検証に失敗しました」というメッセージが表示されます。

何か案は?

4

12 に答える 12

48

管理者としてコマンド プロンプトを開き、次のコマンドを入力します。

reg DELETE "HKLM\Software\Microsoft\StrongName\Verification" /f
reg ADD "HKLM\Software\Microsoft\StrongName\Verification\*,*" /f
reg DELETE "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification" /f
reg ADD "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification\*,*" /f
于 2015-12-07T12:16:52.167 に答える
14

64 ビット マシンでは、64 ビット バージョンの sn.exe を使用する必要があります。(C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\sn.exe)

于 2011-10-20T19:10:56.597 に答える
8

ある段階で「sn.exe -Vr AssemblyName.dll」を実行した可能性のある「開発」マシンでコードを実行すると、完全に署名されているかのように遅延署名されたアセンブリを使用できるようになります。遅延署名されたアセンブリを別のコンピューターに転送して実行すると、完全に署名されていないため、厳密な名前の検証に失敗します。

于 2009-04-24T12:55:45.360 に答える
8

私の場合、同じ問題がVisual Studio 2015あり、既にアセンブリに署名していました。

この方法で修正しました:問題の原因となっているプロジェクトを右クリック->「プロパティ」->「ビルド」->「プラットフォームターゲット」フィールドの値を変更します。

Any CPUからに変更する必要x86がありましたが、プロジェクトの機能と失敗しているライブラリでは、その値を に変更する必要があると思いますx64

于 2016-04-05T11:20:24.207 に答える
5

Visual Studio の新しいバージョンでは、SN.EXE が見つかりません。Visual studio 2012 では、「Visual studio 2012 の開発者コマンド プロンプト」を使用する必要があります。次に、コマンド「sn」を実行します。

構文: sn -Vr *,2d58152b8e842be2

「2d58152b8e842be2」は、エラー メッセージに表示される公開鍵トークンです。どういうわけか、これだけでは私の問題は解決しませんでした。

于 2015-01-14T10:01:37.297 に答える
3

プロジェクト設定 -> 署名 -> 「アセンブリに署名」のチェックを外すことで、開発時にこれを回避できる場合があります。

今日、Entity Framework のソース コード コピーに対してデバッグを行っているときに、この問題に遭遇しました。

于 2013-11-15T15:33:46.290 に答える