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

8
我们在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文件分组,而另一些则不会吗?


1
记录一下 - 我从未找到过这个问题的答案。有时删除 resx 并添加新的可以帮助解决,但并非总是有效。我想这将始终是一个谜... - cheesemp
3个回答

14

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

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

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

标签

<DependentUpon></DependentUpon> 

输入该"父级"资源文件的标签并打出名称,但不要包括前导文件夹。


2

在VS2019中,可以查看自定义文件嵌套功能,这里是一个例子:

https://mitch.codes/tip-visual-studio-custom-file-nesting/

一旦您打开编辑自定义的 "xx.filenesting.json" 文件,只需在路径段部分添加 ".resx" 条目:

查看 %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\NestingProfiles

      "pathSegment": {
        "add": {
          ".*": [
            ".js",
            ".css",
            ".html",
            ".htm",
            ".less",
            ".scss",
            ".coffee",
            ".iced",
            ".config",
            ".cs",
            ".vb",
            ".json",
            ".resx"          <-----
          ]
        }
      },

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接