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

时间:2014-07-18 21:11:40

标签: c# asp.net asp.net-mvc visual-studio resource-files

我正在用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>

...

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

Compiler Error Message: CS0122: 'Namespace.To.RESX.File.EN_US' is inaccessible due to its protection level

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

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

3 个答案:

答案 0 :(得分:54)

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

enter image description here

答案 1 :(得分:2)

对于Mac / visual studio 2017学员,请打开.Designer文件并将您的课程公开:

文件夹:

enter image description here

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

enter image description here

更新:它可能默认恢复为内部。每次进行更改时,您都希望在here

中列出此更改
  1. 右键单击资源文件resource.resx)=> 属性

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

答案 2 :(得分:0)

我不知道这是VS 2019中的错误还是什么,但是按照Oliver Spryn的回答,我可以扩展该Access Modifier下拉框,默认情况下该框为“内部”,但是单击“公共”只会关闭该下拉列表onMouseDown而不选择选项。因此,如果您单击以下拉列表,然后使用键盘的向下箭头选择“公共”并按Enter,它将更改该值。