0

winforms フォームを開こうとすると、これが発生します。

  1. タイプ 'MyCompany.MyControls.MyControl' が見つかりませんでした。この型を含むアセンブリが参照されていることを確認してください。このタイプが開発プロジェクトの一部である場合は、現在のプラットフォームまたは任意の CPU の設定を使用してプロジェクトが正常にビルドされていることを確認してください。

  2. 変数「NavigationControl」が宣言されていないか、割り当てられていません。

ビルド後のイベントに mt.exe を使用してマニフェストを含めるため、アセンブリは「遅延署名のみ」を使用して署名されます。ここでも、sn.exe を使用してアセンブリに再署名します。

sn.exe -R "$(TargetPath)" "$(ProjectDir)key.snk"

アセンブリの署名を完全に無効にすると、機能します。

これを行う他の方法はありますか?私はVS2010が間違った厳密な名前か何かを使用してDLLを探していると思います...

4

1 に答える 1

0

あなたのアセンブリは遅延署名されています。つまり、署名がありますが、その署名は有効ではありません (ビルドサーバーによって実際のキーでビルドされた場合のみ)。したがって、開発者のマシンでは、署名が無効であり、アセンブリが読み込まれません。

次の 2 つのオプションがあります。

1) 開発者のマシンにまったくサインオンしません。ビルド サーバーにのみサインオンします。

また

2)開発者のマシンが遅延署名キーを有効なものとして受け取ることを確認してください。ただし、そうではありません。

何があっても検証するキーを登録できます。明らかな理由から、これはDEV MACHINE のみです! 運用マシンでは使用しないでください。署名の概念全体が南下します。

マシン上の sn.exe へのパスを確認する必要があります。パスが異なる場合があります。

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe" -Vr *,YOURKEYHERE

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\sn.exe" -Vr *,YOURKEYHERE

これらのコマンドを管理者として実行し、再起動する必要があります。

YOURKEYHERE は、アセンブリの公開キー トークンであり、これを行う場合の PublicKeyToken= の後の部分です。

Console.WriteLine(typeof(ATYPEOFYOURASSEMBLY).AssemblyQualifiedName);
于 2013-09-11T15:38:27.813 に答える