无法访问,内部,资源文件?

Oli*_*ryn 25 c# asp.net asp.net-mvc resource-files visual-studio

我正在用C#构建一个ASP.NET MVC 4网站.我正在资源文件(.resx)中本地化我的所有静态字符串.我使用Visual Studio界面来创建和填充资源文件.在我index.cshtml看来,我尝试使用资源文件中的一个字符串,如下所示:

@using Namespace.To.RESX.File

...

<h1>@EN_US.GLOBAL_NAME</h1>
<h2>&ldquo;@EN_US.GLOBAL_SLOGAN&rdquo;</h2>

...
Run Code Online (Sandbox Code Playgroud)

我可以编译应用程序,但是当我加载页面时出现运行时错误,说:

Compiler Error Message: CS0122: 'Namespace.To.RESX.File.EN_US' is inaccessible due to its protection level
Run Code Online (Sandbox Code Playgroud)

查看resx设计器文件,我可以看到该类及其所有成员都标记为internal.我完全理解C#访问控制修饰符的作用,它们是如何工作的等等......但我不明白为什么Visual Studio会限制对这样的资源成员的访问.

为什么Visual Studio会这样做?是否有(简单)方法来更改这些访问控制修饰符,或者我是否完全忽略了资源文件的要点?

Oli*_*ryn 57

是的......没看到这个.在设计模式下打开资源文件并更改访问修饰符(至少在VS 2013上):

在此输入图像描述

  • 但是如果它们在同一个项目中,内部应该仍然有用吗? (2认同)

LeR*_*Roy 7

对于 Mac/visual studio 2017 的人,打开 .Designer 文件并公开你的课程:

文件夹:

在此处输入图片说明

将内部更改为公共并保存:

在此处输入图片说明

更新:它可能会默认回到内部。每次您进行更改时,您要在此处列出的更改

  1. 右键单击资源文件( resource.resx) =>属性

  2. 自定义工具=> 更改为PublicResXFileCodeGenerator