【问题标题】:Inaccessible, Internal, Resource Files?无法访问,内部,资源文件?
【发布时间】:2014-07-18 21:11:39
【问题描述】:

我正在使用 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 为什么要这样做?有没有(简单的)方法来更改这些访问控制修饰符,还是我完全错过了资源文件的要点?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 但是如果它们在同一个项目中,内部应该仍然可以工作,对吧?
    【解决方案2】:

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

    文件夹:

    将 internal 更改为 public 并保存:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2015-03-24
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 2022-10-30
        • 1970-01-01
        • 2015-09-06
        • 2017-09-09
        相关资源
        最近更新 更多