C# Visual Studio-Resx文件默认值';内部';至';公共';

C# Visual Studio-Resx文件默认值';内部';至';公共';,c#,.net,asp.net,asp.net-mvc,visual-studio,C#,.net,Asp.net,Asp.net Mvc,Visual Studio,每次我在VS中编辑资源文件时,它都会重新生成相应的代码,并将类访问修饰符设置为“内部”。 每次我编辑resx时,按Ctrl-F->ReplaceAll都很痛苦。是否有属性/设置使我可以将其默认为公共 internal class MyResource { internal static global::System.Resources.ResourceManager ResourceManager {...} } 我需要所有的内部始终是公共的。使用publicsfilecodeg

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

internal class MyResource {

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

}

我需要所有的
内部
始终是
公共的

使用
publicsfilecodegenerator
而不是
ResXFileCodeGenerator

您可以通过在要公开访问的Resx文件的属性窗口中将其设置为自定义工具属性来完成此操作


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

也许最简单的方法是创建一个带有公共ctor的派生类

生成的类:

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

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

    }
}
公共类PublicStrings:Strings
{
/// 
///公共本地化字符串。
/// 
公共公共字符串()
{
}
}
  • 右键单击资源文件(
    Resource.resx
    )=>属性

  • 自定义工具=>更改为
    PublicResXFileCodeGenerator


  • @jvanrhyn:因为我需要从解决方案中的另一个项目访问它的资源管理器。(回答得好;但只是一些注释;它也可能是
    GlobalResourceProxyGenerator
    ,而不仅仅是
    ResXFileCodeGenerator
    ;还需要注意的是,“access Modofier”下拉菜单经常被禁用)@Anton:谢谢,在我的情况下是有效的。另外,我注意到从下拉列表中更改访问修饰符会更改相应的工具。@conqenator:这就是为什么我建议使用访问修饰符下拉列表作为达到相同结果的替代方法:)顺便说一句,如果访问修饰符下拉列表被禁用,您可以尝试将自定义工具属性更改为ResXFileCodeGenerator,如果那不是alredy的值。至少在VS 2010上的MVC项目中,这对我来说是可行的。对于我来说,在Visual Studio 2017中选择
    PublicResXFileCodeGenerator
    只会使资源类公开,而不是它的构造函数。这是不可能的。您将得到一个错误CS0060不一致的可访问性:基类“Strings”的可访问性不如类“PublicStrings”