资源 (RESX) 文件混乱
我有一个名为 Localize.resx 的资源文件,其中包含英文字符串。我将其复制并粘贴到同一文件夹(App_GlobalResources)中,VS 创建了一个副本,我将副本重命名为 Localize.sl.resx,将原始重命名为 Localize.en.resx。现在代码隐藏文件 (Localize.en.designer.cs) 中的所有内容都消失了。删除设计器文件并选择运行自定义工具会生成一个新的但完全空白的设计器文件。
我的所有字符串仍然存在于两个 resx 文件中,但设计器文件已消失(空),因此应用程序无法构建。
这是带有 ASP.NET MVC 解决方案的 VS 2010 内部。
I had a resource file named Localize.resx, which contains English strings. I copied and pasted it inside the same folder(App_GlobalResources), VS created a copy, I renamed the copy to Localize.sl.resx and the original to Localize.en.resx. Now everything in codebehind files (Localize.en.designer.cs) is gone. Deleting the designer file and selecting Run Custom Tool generates a new but completely blank designer file.
I still have all my strings in both resx files but the designer files are gone (empty) so the application does not build.
This is inside VS 2010 with an ASP.NET MVC solution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这是ASP.NET 文档有关资源文件的内容。
它没有具体讨论动态生成的代码隐藏设计器文件,但如果您仔细阅读粗体文本,它本质上是说您需要没有指定语言的基本文件,并且考虑到这一点,只有这个文件将包含自动生成的文件是有意义的代码。
“创建资源文件时,首先创建一个基本 .resx 文件。对于要支持的每种语言,创建一个具有相同文件名的新文件。但在名称中包含语言或语言和文化(区域性名称)。 有关区域性名称的列表,请参阅 CultureInfo 类。例如,您可以创建以下文件:
•WebResources.resx
这是默认的(后备)文件。 •
•WebResources.es.resx
西班牙语资源文件
WebResources.es-mx.resx
用于西班牙语(墨西哥)的资源文件
专门
。
实际上我以前从未注意到这一点,但是当我去检查我的旧项目时,我看到它们都有基本文件,然后是特定于语言的文件。所以我只是更正它以遵循该约定,现在它可以工作了。
This is what ASP.NET documentation says about resources files.
It does not talk specifically about codebehind designer files generated on the fly but if you read the bolded text carefully, it is essentially saying that you need the base file without language specified and, given that, it makes sense that only this file will include autogenerated code.
"When you create resource files, you start by creating a base .resx file. For each language that you want to support, create a new file that has the same file name. But in the name, include the language or the language and culture (culture name). For a list of culture names, see the CultureInfo class. For example, you might create the following files:
•WebResources.resx
The base resource file. This is the default (fallback) resource file.
•WebResources.es.resx
A resource file for Spanish.
•WebResources.es-mx.resx
A resource file for Spanish (Mexico) specifically.
•WebResources.de.resx
A resource file for German."
I actually have never noticed this before but when I went to check my old projects, I saw they all have the base file and then language specific ones. So I just corrected it to follow that convention and it works now.
我遇到了同样的问题 - Designer.cs 文件对于某些 resx 文件不存在。
修复方法是设置 resx 文件的属性:
I had the same problem - Designer.cs file not being present for some resx files.
The fix was to set the properties for the resx files:
如果我是你,我会:
创建一个新的 resx 文件;
打开旧的;
在旧的按ctrl+a;
在新的一处按ctrl+v;
保存新的;
删除旧的;
重命名新的:)
这应该可以快速解决问题。
您还可以通过单击“显示全部”按钮来检查 cs 文件是否未从文件中排除
If I were you, I would:
create a new resx file;
open the old one;
Press ctrl+a in the old one;
Press ctrl+v in the new one;
Save the new one;
Delete the old one;
Rename the new one :)
This should solve the problem quiet fast.
You could also check if the cs files are not excluded from the file by clicking the show all button
很抱歉用这个来写评论。我的声誉实际上还不到 50 =( 但我认为这可能也很重要。
这指的是 Alvis 的回答:
你的解决方案成功了。但我还必须将基本设计器代码文件中属性的访问修饰符从内部修改为公共。否则,当我尝试访问 xaml 中的 resx 时,我会遇到 XmlParseExceptions。
编辑:
所以这里指的是C#/WPF。在 ASP.NET 中可能会有所不同
Sorry for using this to write a comment. My reputation actually is less than 50 =( but i think this might be important too.
This referes to Alvis' answer:
Your solution did the trick. But i had also to modify the access modifier of properties in the base designer code file from internal to public. Otherwise i got XmlParseExceptions when trying to access the resx in xaml.
Edit:
So this referes to C#/WPF. Could be different in ASP.NET
我发现最好的方法是:
Resource1.resx
Resource1.Desinger.cs
Localize.en.resx
对我来说,任何其他方法都只是停止创建
X.Designer。 cs
文件I found the best way was to:
Resource1.resx
Resource1.Desinger.cs
Localize.en.resx
Any other way for me just stopped creating the
X.Designer.cs
files