Resource files (resx) does not respect Custom Tool Namespace(资源文件(Resx)不符合自定义工具命名空间)
问题描述
在resx属性中,我将自定义工具命名空间从DefaultNamespace
更改为MyNamespace.Language
,并生成以下代码:
namespace MyNamespace.Language
{
public class CommentResources
{
public static global::System.Resources.ResourceManager ResourceManager {
get {
//removed code...
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DefaultNamespace.CommentResources", typeof(CommentResources).Assembly);
}
}
如您所见,只更改了类的命名空间,而不是传递到资源管理器构造函数中的命名空间,因此,当我实例化ResourceManager(typeof(CommentResources))
并尝试访问键时,它抛出MissingManifestResourceException,,例如:
var manager = new ResourceManager(typeof(CommentResources));
var resource = manager.GetString("myKey");
如何才能真正更改命名空间?
编辑:
看看我下面的解决方案。每当我在Enviroment
文件夹中创建resx文件时,它都会创建一个不需要的命名空间。这就是我想要避免的
推荐答案
我最近遇到了同样的问题。
Visual Studio2017似乎生成了从RootNamespace.SubFolder.ResourcesFileName而不是CustomToolNamespace.ResourcesFileName.创建ResourceManager的代码由于代码是从名为ResXFileCodeGenerator(用于内部类)或PublicResXFileCodeGenerator(用于公共类)的Visual Studio的Single-File Generator工具创建的,该工具内部使用StronglyTypedResourceBuilder类,因此除了将您自己的Single-File Generator实现为Visual Studio扩展并将其用作EmbeddedResource的生成器外,无法自定义其行为。
幸运的是,有一个更简单的解决方法。在.csproj文件中的EmbeddedResource标记下,使用文本值RootNamespace.SubFolder.ResourcesFileName.resources.指定LogicalName标记在您的特定案例中,它将如下所示:
<LogicalName>DefaultNamespace.CommentResources.resources</LogicalName>
这篇关于资源文件(Resx)不符合自定义工具命名空间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:资源文件(Resx)不符合自定义工具命名空间


基础教程推荐
- JSON.NET 中基于属性的类型解析 2022-01-01
- 是否可以在 asp classic 和 asp.net 之间共享会话状态 2022-01-01
- 经典 Asp 中的 ResolveUrl/Url.Content 等效项 2022-01-01
- 错误“此流不支持搜索操作"在 C# 中 2022-01-01
- 在 VS2010 中的 Post Build 事件中将 bin 文件复制到物 2022-01-01
- 将事件 TextChanged 分配给表单中的所有文本框 2022-01-01
- 从 VS 2017 .NET Core 项目的发布目录中排除文件 2022-01-01
- 全局 ASAX - 获取服务器名称 2022-01-01
- 如何动态获取文本框中datagridview列的总和 2022-01-01
- 首先创建代码,多对多,关联表中的附加字段 2022-01-01