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


165

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

internal class MyResource {

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

}

我需要所有这些internalpublic所有的时间。


@jvanrhyn:因为我需要从解决方案中的另一个项目访问其资源管理器。
罗宾·马本

Answers:


334

代替ResXFileCodeGenerator,使用PublicResXFileCodeGenerator

您可以通过将其设置为要公共访问的Resx文件的“ 属性”窗口中的“ 自定义工具”属性来实现。

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


13
(好的答案;但仅作一些说明;也可能GlobalResourceProxyGenerator不仅限于此ResXFileCodeGenerator;还请注意,“ Access Modofier”下拉菜单通常被禁用)
Marc Gravell

@安东:谢谢,在我的情况下工作。另外,我注意到从下拉菜单更改访问修饰符会更改相应的工具。
罗宾·马本

1
@conqenator:这就是为什么我建议使用Access Modifier下拉列表作为达到相同结果的另一种方法:)
Anton 2010年

2
顺便说一句,如果禁用了“访问修饰符”下拉列表,则可以尝试将“自定义工具”属性更改为ResXFileCodeGenerator,如果该值不是必需的。至少对我在MVC项目工作于2010年VS
曼努埃尔·纳瓦罗

1
对于使用Visual Studio 2017的我来说,选择PublicResXFileCodeGenerator仅使Resources类成为公共类,而不是其构造函数。
洛朗·米歇尔

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

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


-7

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

生成的类:

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

派生类:

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

    }
}

13
这是不可能的。您会收到错误CS0060不一致的可访问性:基类'Strings'的访问权限比类'PublicStrings'
David Gardiner
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.