为什么在具有不同名称的文件中为资源文件生成的类?

时间:2013-12-05 19:01:36

标签: c# asp.net localization embedded-resource

我有一个资源文件strings.resx,生成的资源类在strings1.designer.cs中。为什么会这样?具体问题是“1”。该文件中的类名是“字符串”,应该是。

screenshot

请注意,我确实尝试删除designer.cs并通过保存resx文件重新生成它,但这并没有改变任何内容。

1 个答案:

答案 0 :(得分:7)

我遇到了这个问题并在.csproj文件中发现了问题。 Visual Studio似乎保存了它使用的最后一个文件名,并尝试再次使用该文件名生成。因此,如果由于某种原因 Strings.designer.cs 生成为 Strings1.designer.cs ,看起来VS将继续使用Strings1。

下面你可以看到.csproj文件中给我一个问题的部分。最重要的是保存 Strings1.designer.cs 的最后<LastGenOutput>

<Compile Include="App_GlobalResources\Strings.Designer.cs">
  <AutoGen>True</AutoGen>
  <DesignTime>True</DesignTime>
  <DependentUpon>Strings.resx</DependentUpon>
</Compile>
<Compile Include="App_GlobalResources\Strings.es.designer.cs">
  <AutoGen>True</AutoGen>
  <DesignTime>True</DesignTime>
  <DependentUpon>Strings.es.resx</DependentUpon>
</Compile>
...
<ItemGroup>
  <EmbeddedResource Include="App_GlobalResources\Strings.es.resx">
    <Generator>GlobalResourceProxyGenerator</Generator>
    <LastGenOutput>Strings.es.designer.cs</LastGenOutput>
  </EmbeddedResource>
  <EmbeddedResource Include="App_GlobalResources\Strings.resx">
    <Generator>GlobalResourceProxyGenerator</Generator>
    <LastGenOutput>Strings1.designer.cs</LastGenOutput>
  </EmbeddedResource>
</ItemGroup>

<LastGenOutput>更改为以下内容解决了我的问题:

<LastGenOutput>Strings.designer.cs</LastGenOutput>