2012-05-01 4 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)

관련 문제