本地化的resx文件作为解决方案资源管理器中的子项

时间:2011-07-15 16:21:38

标签: visual-studio resx solution-explorer

我们在visual studio解决方案中拥有大量C#项目。对于很多这些,我们有一个名为'TextResources.resx'的资源文件。这些已在过去翻译过来创建了几个相关的resx文件,例如'TextResources.fr.resx'。对于这些较旧的项目,这些翻译的resx文件显示为默认英语TextResources.resx的子项,但是对于几个新项目,翻译的项目显示为单独的(相同的树级别)项目。

希望这个图表能够解释:

旧项目:

- TextResources.resx
     - TextResources.fr.resx 
     - TextResources.de.resx

新项目:

- TextResources.fr.resx 
- TextResources.de.resx 
- TextResources.resx 

这不仅看起来很奇怪,而且对于这么多项目来说有点混乱。任何人都知道为什么它将一些翻译后的resx文件分组而不是其他文件?

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,也没有找到答案。

我最终手动编辑了项目(.csproj)文件。

<EmbeddedResource Include="Folder\TextResources.de.resx">
  <DependentUpon>TextResources.resx</DependentUpon>
  <SubType>Designer</SubType>
</EmbeddedResource>

添加

<DependentUpon></DependentUpon> 

标记并输出没有前导文件夹的“父”资源文件的名称。

答案 1 :(得分:0)

<块引用>

此解决方案适用于 Visual Studio 2019

  <!-- Main Resource file -->
  <ItemGroup>
    <EmbeddedResource Update="Path\TextResources.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>TextResources.Designer.cs</LastGenOutput>
    </EmbeddedResource>
  </ItemGroup>

 <!-- Resource Designer class -->    
 <ItemGroup>
    <Compile Update="Path\TextResources.Designer.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>TextResources.resx</DependentUpon>
    </Compile>
  </ItemGroup>

  <!-- Nested Resources files -->
  <ItemGroup>
    <EmbeddedResource Update="Path\TextResources.en.resx">
      <DependentUpon>Path\TextResources.resx</DependentUpon>
    </EmbeddedResource>
  </ItemGroup>

  <ItemGroup>
    <EmbeddedResource Update="Path\TextResources.de.resx">
      <DependentUpon>Path\TextResources.resx</DependentUpon>
    </EmbeddedResource>
  </ItemGroup>

  <ItemGroup>
    <EmbeddedResource Update="Path\TextResources.ar.resx">
      <DependentUpon>Path\TextResources.resx</DependentUpon>
    </EmbeddedResource>
  </ItemGroup>