Visual Studio - Resx 文件默认“内部”为“公共”

Posted

技术标签:

【中文标题】Visual Studio - Resx 文件默认“内部”为“公共”【英文标题】:Visual Studio - Resx File default 'internal' to 'public' 【发布时间】:2011-05-15 12:43:14 【问题描述】:

每次我在VS中编辑资源文件时,它都会重新生成相应的代码并将类访问修饰符设置为内部。 每次编辑 resx 时,Ctrl-F -> ReplaceAll 都很痛苦。是否有属性/设置可以让我将其默认为公开?

internal class MyResource 

     internal static global::System.Resources.ResourceManager ResourceManager ...


我需要所有internal 一直是public

【问题讨论】:

@jvanrhyn:因为我需要从解决方案中的另一个项目访问它的资源管理器。 【参考方案1】:

使用PublicResXFileCodeGenerator,而不是ResXFileCodeGenerator

您可以通过将其设置为 属性 窗口中的 自定义工具 属性来为您希望公开访问的 Resx 文件。

编辑:或者,您可以在 Visual Studio 中打开 resx 文件时将访问修饰符设置为公共。访问修饰符下拉框位于表单顶部。

【讨论】:

(很好的答案;但只是一些注释;也可能是GlobalResourceProxyGenerator,而不仅仅是ResXFileCodeGenerator;还要注意“Access Modofier”下拉菜单经常被禁用) @Anton:谢谢,对我有用。另外,我注意到从下拉菜单中更改访问修饰符会更改相应的工具。 @conqenator:这就是为什么我建议使用 Access Modifier 下拉菜单作为达到相同结果的替代方法 :) 顺便说一句,如果 Access Modifier 下拉菜单被禁用,您可以尝试将 Custom Tool 属性更改为 ResXFileCodeGenerator,如果这不是该值。至少在 VS 2010 的 MVC 项目中这对我有用。 对于使用 Visual Studio 2017 的我来说,选择 PublicResXFileCodeGenerator 只会使 Resources 类公开,而不是其构造函数。【参考方案2】:

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

    自定义工具 =>更改为PublicResXFileCodeGenerator

【讨论】:

谢谢!整个上午都被它逼疯了【参考方案3】:

也许最简单的方法是使用 Public ctor 创建派生类?

生成的类:

 [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
    internal Strings() 
    

派生类:

public class PublicStrings : Strings

    /// <summary>
    /// Public localization Strings.
    /// </summary>
    public PublicStrings()
    

    

【讨论】:

这是不可能的。您将收到错误 CS0060 Inconsistent accessibility: base class 'Strings' is less access than class 'PublicStrings'

以上是关于Visual Studio - Resx 文件默认“内部”为“公共”的主要内容,如果未能解决你的问题,请参考以下文章

第三方 Visual Studio 样式表/CSS 编辑器

您可以使用 Visual Web Developer 编辑 resx 文件吗?

Visual Studio:在要添加到项目的项目列表中找不到“资源文件”

为啥 Visual Studio 会自动更改我的表单布局?

如何在 Visual Studio 中创建本地化资源?

请问Visual Studio Code(不是Visual Studio)怎么设置文件关联。