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!