4

私はモバイル .NET ソリューションを使用しており、アセンブリに署名することにしました。コンパイルはエラーなしで完了しますが、警告が表示されます

「CompactUI.Business.PocketPC.asmmeta、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null」が正しく署名されていません。

アプリケーションは正常に動作していますが、このアセンブリを使用するフォームのデザイナーを開くことができなくなりました。もう一度デザイナーは言います。

「CompactUI.Business.PocketPC.asmmeta、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null」が正しく署名されていません。

スタック情報:

Microsoft.CompactFramework.Build.AsmmetaBindingService.GetAsmmetaAssembly (文字列の sourceAssemblyPath、ブール値の検証) で Microsoft.CompactFramework.Build.AsmmetaBindingService.LoadAsmMetaAssembly (アセンブリ sourceAssembly、文字列の HintPath、IDeviceTypeResolutionService リゾルバー) で Microsoft.CompactFramework.Build.MetadataService.GetAsmmetaType (タイプ sourceType) ) Microsoft.CompactFramework.Build.MetadataService.GetTypeAttributes(Type desktopType) で Microsoft.CompactFramework.Design.DeviceCustomTypeDescriptor.GetAttributes() ...

これは何が原因ですか?

編集:ニコラスの提案は問題を解決していません

プレゼンテーション層のすべてのフォームのベースとなる共通のプロパティを含むフォームがあります

public class CustomForm : Form
{
    ...
}

このフォームは、警告の原因となるビジネス層にあります。この基本フォームから継承するすべてのフォームは、デザイナーで表示するときに問題を引き起こします。

4

3 に答える 3

1

アセンブリが "delay sign" が設定された状態で生成されていないことを確認します。nullこれにより、代わりにプレースホルダーしかない場合に、アセンブリが署名されたことをアドバタイズします。これにより、厳密な名前の検証が失敗します。詳細については、MSDN の次のページも参照してください: " Assemblies should have valid strong names "

于 2008-10-22T02:53:13.993 に答える
0

私は混乱しています。あなたはアセンブリに署名したと言いますが、公開鍵トークンは null です。この assmbley に署名した場合は、null の代わりに生成された公開鍵を指定する必要があります。多分私は問題を完全に理解していません。CompactUI.Business.PocketPC.asmmeta への参照を削除して、署名済みバージョンを再度追加してみてください。

于 2008-10-21T17:55:14.143 に答える
-2

原因

アセンブリが厳密な名前で署名されていないか、厳密な名前を確認できなかったか、コンピューターの現在のレジストリ設定がないと厳密な名前は有効になりません。ルールの説明

このルールは、アセンブリの厳密な名前を取得して検証します。次のいずれかに該当する場合、違反が発生します。

* The assembly does not have a strong name.

* The assembly was altered after signing.

* The assembly is delay-signed.

* The assembly was incorrectly signed, or signing failed.

* The assembly requires registry settings to pass verification. For example, the Strong Name tool (Sn.exe) was used to skip verification for the assembly.

厳密な名前は、改ざんされたアセンブリを無意識のうちにロードすることからクライアントを保護します。厳密な名前のないアセンブリは、非常に限られたシナリオの外に展開しないでください。正しく署名されていないアセンブリを共有または配布すると、アセンブリが改ざんされたり、共通言語ランタイムがアセンブリを読み込めなかったり、ユーザーが自分のコンピューターで検証を無効にしなければならない場合があります。強い名前のないアセンブリには、次の欠点があります。

* Its origins cannot be verified.

* The common language runtime cannot warn users if the contents of the assembly have been altered.

* It cannot be loaded into the global assembly cache.

遅延署名されたアセンブリをロードして分析するには、アセンブリの検証を無効にする必要があることに注意してください。

于 2008-10-22T10:04:20.927 に答える