设计者resx文件仍为空

时间:2016-02-11 22:06:03

标签: c# visual-studio

当我将字符串添加或更改为现有resx文件时,相应的designer.cs文件变为空(0 KB),项目不再编译:

  

错误CS0234:类型或命名空间名称'属性'不存在   在名称空间' Hundegger.Gui' (你错过了一个集会吗?   引用?)

但是一切似乎都很好。

来自.csproj文件:

<Compile Include="Properties\Hundegger.Gui.Designer.cs">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Hundegger.Gui.resx</DependentUpon>
    </Compile>

<EmbeddedResource Include="Properties\Hundegger.Gui.resx">
  <Generator>PublicResXFileCodeGenerator</Generator>
  <LastGenOutput>Hundegger.Gui.Designer.cs</LastGenOutput>
</EmbeddedResource>

任何想法可能是错的??? resx文件相当简单。目前只包含10个字符串。

前段时间我们将项目转换为目标.net框架4.5.2(之前使用的是4.0)。

同一解决方案中的另一个项目(也转换为4.5.2)没有这个问题。一旦resx文件中的字符串被修改/添加,设计器文件就会重新生成并且不为空。我注意到有关resx文件的.csproj文件没有区别。

使用的是Visual Studio 2013。

谢谢!

编辑 - 到达某个地方!!

我遇到了另一个问题,这给了我一个想法。 Visual Studio 2010 doesn't generate Resource (Resx) designer code if file is localized

似乎resx文件名中的某些扩展导致VS无法生成相应的designer.cs文件。

上一个问题提到了本地化扩展:fr,en,de等...

然而:Gui也有同样的效果。

如果我将resx文件重命名为Hundegger.Gui2.resx,那么一切正常。

我可以通过在VS 2013中创建一个空项目来验证这一点。如果resx文件名以.gui或.job结尾,则不会生成设计器文件。

这不久前已经改变了,否则现有的设计师文件就不会生成了。

所以我想,为了避免这些问题,请避免使用&#39;。&#39;在resx文件名中。

所以我想我们的目的是重命名resx文件。

2 个答案:

答案 0 :(得分:13)

我可以在VS 2015中重现相同的行为。但是如果你删除resx文件中的点,一切正常。因此,请从Hundegger.Gui.resx更改为HundeggerGui.resx

答案 1 :(得分:3)

Yes, Designer resx file remains empty.
you should follow the below steps, it will work 100%.
1) Create Resource.resx file under any folder

2) set CustomTools = PublicResXFileCodeGenerator and
Build Action = Embedded Resource in Resource.resx file property.

3) Now create the different language files like below,
Resources.en-US.resx
Resources.nl-NL.resx  etc

4)If MVC, in your MVC Model refer this namespace as project.folder

5) change the one of the property as below (example)

     [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MMM/yyyy}"), Display(Name = "dtMovinDate",ResourceType = typeof(Resources.Resource))]
                public DateTime dtMovinDate { get; set; }

6)

     In config file add this under System.web

        <globalization enableClientBasedCulture="true" culture="en-US" uiCulture="en-US" />

7) rebuild the project and test it.

It will work. The real reason of designer.cs file empty is resource designer.cs will refer these files based on your web.config file.