0

Windows 8 コンシューマー プレビューでの Visual Studio 11 ベータ版の使用。

問題は、出力タイプが WinMD に設定されているクラス ライブラリのクラスを使用しようとすると、「厳密な名前の検証」が失敗したことを示すセキュリティ例外が発生することです (HRESULT からの例外: 0x8013141A)。Visual Studio を使用して小さなテスト アプリを実行 (F5) しようとしています。

出力タイプを「クラス ライブラリ」に設定すると、問題は解決します。小さな (そしてかなり些細な) テスト プロジェクトは、次の場所にあります。

http://download.tallcomponents.com/WinRTApplication3.zip

新しく生成された .snk ファイル (パスワードなし) を使用して、クラス ライブラリに "Sign the Assembly" フラグを設定しました。生成された ClassLibrary1.winmd ファイルで sn -vf を実行すると、次のように表示されます。

ClassLibrary1.winmd は、遅延署名またはテスト署名されたアセンブリです。

おそらく問題は、基本的に出力が「適切に」署名されていないことですか?署名するクラス ライブラリを指定したことを考えると、これを解決するために何をすべきかわかりません。また、WinMD ファイルに出力するときにのみこれが発生する理由もわかりません。この時点で、デバッグとテストのためだけに「公式」証明書は必要ないと想定しています。

さて、これが初心者の質問である場合は申し訳ありません。回答を「グーグル」で検索しようとしましたが、主に 2 年以上前のヒットがヒットし、グーグルは winmd ではなく「風」を示唆していました…</p>

ここで新しいタグ「winmd」を作成することさえできません... (評判が足りない)

4

1 に答える 1

1

winmd ファイルで厳密な名前の検証エラーが発生する場合は、通常、.winmd ファイル形式を認識しないツールセットを使用していることが原因です。

.winmd ファイルは厳密な名前で署名できません。

この場合、コンポーネント ライブラリに厳密な名前で署名しようとしているために問題が発生している可能性があります。C# コンポーネント ライブラリは、Windows メタデータと C# IL の両方を含むハイブリッド .winmd ファイルを生成します。

コンポーネントに厳密な名前で署名しようとしているのはなぜですか? 厳密な名前の署名は、アセンブリを GAC に配置するときに主に使用され、.winmd ファイルを GAC に挿入することはできません。

于 2012-05-15T05:00:21.200 に答える