0

C# で記述された Windows サービスがあります。C# コードを動的に生成し、abc.dll、xyz.dll などのアセンブリにコンパイルします。これらのアセンブリは後で実行のために読み込まれます。コンパイル時に、/keyfile: mykeyfile.snk" をコンパイラ オプションの 1 つとして System.CodeDom.Compiler.CompilerParameters クラスに渡します。問題は、厳密な名前の検証に失敗したために、これらのアセンブリの一部を読み込めないことです。

テスト システムから生成されたアセンブリを取得し、sn,exe でチェックすると、アセンブリの約 6 分の 1 が遅延またはテスト署名されていることがわかります。sn.exe -v xyz.dll を実行すると、xyz.dll は遅延署名またはテスト署名されたアセンブリであることがわかります。明らかに読み込みに失敗します。

一部のアセンブリが正しく署名されていないのはなぜですか?

4

1 に答える 1

0

私はそれを解決し、みんなの利益のために共有することができました. この問題の原因は、コンパイルが 2 ステップのプロセスであることです。コンパイラは最初に dll を生成し、次に署名を試みます。http://msdn.microsoft.com/en-us/library/yh7ks237(v=vs.90).aspxを参照してください。

dll はまだ存在し、それを読み込もうとするまで、そのテストが署名されていることに気付かないでしょう。別のスレッドでロックされた 1 つの署名ファイル xyz.snk がありました。

于 2014-03-24T11:11:24.180 に答える