1

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

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

ローカライズされたリソースがネストされたVisualStudioソリューションエクスプローラー

4

2 に答える 2

1

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

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

ここを見て:

MSBuild 条件
ItemGroup 要素 (MSBuild)

于 2012-07-23T13:20:34.060 に答える
0

ローカリゼーション作業からコア ソフトウェア開発のソース管理を切り離すことができます。サテライト アセンブリは実際にはビルドにドロップするだけでよいため、コードと一緒にビルドする必要はありません。

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

于 2012-05-01T13:28:35.647 に答える