2012-05-01 8 views
1

10言語以上に翻訳される非常に大きなソリューション(> 100プロジェクト)があります。ビルドプロセス中に必要なすべての衛星アセンブリを生成する最良の方法は何ですか?多くのリソースと多くの言語を使用した大規模ソリューション用のサテライトアセンブリを生成

私は関連するプロジェクトにローカライズされたRESXファイルを含めることができますが、これは開発者にとって大きなノイズを作ります。翻訳は、独立したソース管理にチェックインするリモートチームによって管理されます。これはまた、新しい文化固有のリソースを含むようにすべてのプロジェクトを修正する必要があるため、新しい言語が追加されるたびに多くの作業を作成します。

カルチャー固有のRESXファイルを検索し、それらをプロジェクトにグループ化し、一度にビルドするためのポストビルドツールはありますか?

もしそうでなければ、DependentUpon属性を使用して、メインリソースファイルの下のVisual Studioソリューションエクスプローラでローカライズされたリソースを非表示にすることができたと思います。これはVisual StudioのUIでは実行できませんので、このパターンをすべてのプロジェクトのすべてのリソースファイルにバッチを適用するツールを作成する必要があります。結果のプロジェクトファイルは、次のようになります

<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> 

ネストされたリソースは、ソリューションエクスプローラでの予期しないアイコンを持っているが、少なくとも彼らは、デフォルトでは非表示になっています。

Visual Studio Solution Explorer with nested localized resources

答えて

0

あなたはローカライズの手間からあなたのコアソフトウェア開発のソースコントロールを絶縁することができます。サテライトアセンブリは実際にビルドにドロップするだけで、コードと一緒にビルドする必要はありません。

ローカライゼーションプロジェクトに別のソース管理システムを設定することができます。これには、ベースの.resxファイル(コアソースコントロールから更新する必要があります)とローカライザーによって管理された翻訳バージョンのコピーが含まれます。そこから衛星アセンブリを作成し、これらをコアビルドと組み合わせて、多言語のローカライズされたビルドを作成することができます。

1

ItemGroupまたは個々のアイテムの条件を使用して、それらをビルドから除外することができます。

$(ConfigurationName)の使用をお勧めします。

はここを見て:

MSBuild Conditions
ItemGroup Element (MSBuild)

関連する問題