0

xsd.exe を使用してオブジェクトからスキーマを生成するプロジェクト (さまざまな理由で .net 2 フレームワーク) があります。これらのスキーマをアセンブリに埋め込んで、読み込まれたファイルを検証するときに使用します。xsd ファイルが正常に生成されます。次に、al.exe を実行して xsd をアセンブリに変換します。第 3 段階では、ilmerge を使用してこのアセンブリをメイン アセンブリにマージし、リソースとして使用できるようにします。コンテンツ タイプを embeddedResource に設定する方法を使用して埋め込んだ他のリソースがそこにあり、GetType().Assembly.GetManifestResourceNames(); への呼び出しを介してコードでこれらのリソースを確認できます。アセンブリのマニフェストで探しているリソースを確認できますが、すべて非常によく見えます (私が知る限り、パス名や大文字と小文字の問題ではありません)。

.mresource public MySetup.EmbeddedResources.Mapping.xml      << vs2010 embedded resource
{
 // Offset: 0x00000000 Length: 0x00000C67
}
.mresource public MySetup.EmbeddedResources.Schemas.xsd      << my resource
{
  // Offset: 0x00000C6B Length: 0x00000B47
}

私はさまざまなオプションを試しましたが、 vs を使用して埋め込むと、同じファイルが問題なく埋め込まれ、どちらの方法でもマニフェストに明らかな違いはありません。

なぜGetType().Assembly.GetManifestResourceNames();私のリソースを返さないのですか?


編集:おっと、これは深刻な脳の凍結の結果であることがわかりました. 実際には機能していましたが、単体テストの dll が古いアセンブリを参照していたため、マージされたリソースを取得していませんでした..... Dooh!

4

1 に答える 1

0

おっと、これは深刻な脳の凍結の結果であることが判明しました。実際には機能していましたが、単体テスト dll が古いアセンブリを参照していたため、マージされたリソースを取得していませんでした。

于 2012-08-15T01:13:46.000 に答える