私は10以上の言語に翻訳されている非常に大きなソリューション(> 100プロジェクト)を持っています。ビルドプロセス中に必要なすべての衛星アセンブリを生成するための最良の方法は何ですか?
ローカライズされたRESXファイルを関連するプロジェクトに含めることができることは知っていますが、これは開発者にとって多くのノイズを生み出します。翻訳は、独立してソース管理にチェックインするリモートチームによって管理されます。また、新しい文化固有のリソースを含めるためにすべてのプロジェクトを変更する必要があるため、新しい言語が追加されるたびに多くの作業が発生します。
カルチャ固有のRESXファイルを検索し、それらをプロジェクトにグループ化して、衛星アセンブリを一度にビルドするビルド後のツールはありますか?
そうでない場合は、DependentUpon属性を使用して、メインリソースファイルの下にあるVisualStudioソリューションエクスプローラーでローカライズされたリソースを非表示にできると思います。これはVisualStudioUIでは実行できないため、このパターンをすべてのプロジェクトのすべてのリソースファイルにバッチ適用するツールを作成する必要があると思います。結果のプロジェクトファイルは次のようになります。
<ItemGroup>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.de.resx">
<DependentUpon>Resources.resx</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.fr.resx">
<DependentUpon>Resources.resx</DependentUpon>
</EmbeddedResource>
</ItemGroup>
ネストされたリソースには、ソリューションエクスプローラーに予期しないアイコンがありますが、少なくともデフォルトでは非表示になっています。