在我的.NET Core类库项目中,当资源文件名中包含一个点时,该资源文件不会更新。例如,当我在.NET Core项目中添加文件Resources.en.resx
或Resources.es.resx
文件时,自定义工具将无法生成或更新C#资源文件。这是错误消息:
定制工具ResXFileCodeGenerator未能为输入文件'Resources.en.resx'生成输出,但未记录特定错误。
如果你知道任何解决方法或相应的修复方法,请向我指出正确的方向
删除目录中当前存在的所有.resx文件Resources
。
现在转到Resources
目录,右键单击Add > New Item
。
选择Resource File
并在表格底部输入文件名。重要的是,你第一次使用正确的名称并且不要重命名。你可以使用Resource.resx
。
此第一个Resource.resx
文件应具有其自己的设计器类。它还需要用于项目本地化的所有键和值,因此,如果你已有项目,则Resource.en.resx
可以将其中的值复制并粘贴到此项目中。
如果你需要IStringLocalizer<Resource>
或者换句话说,你需要以Resource
某种方式引用该类,则需要转到解决方案资源管理器并在上单击鼠标左键Resource.resx
。在“属性”框中,有一个名为“自定义工具”的字段。如果你希望从resx生成可公开访问的类,则需要将其从更改ResXFileCodeGenerator
为PublicResXFileCodeGenerator
。
现在,你可以添加个人Resource.ja.resx
,Resource.es.resx
文件。这些并没有需要有一个自定义工具ResXFileCodeGenerator
之上运行,所以你可以从属性删除。这将修复你的错误消息。
现在我有三个文件:(1)Resource.resx,(2)Resource.en.resx和(3)Resource.es.resx。Resource.resx文件具有英语的所有键vand值。由于默认为英语,因此创建Resource.en.resx文件不是重复的吗?我知道Resource.resx用于不变文化。
嗨,@ Seth,
Resource.en.resx
如果它是默认语言,则可以将其删除。只需在其中包含默认字符串Resource.resx
嗨,您能提及一些博客文章或一些资料库以了解最佳做法吗?