Visual Studio - 将Resx文件的默认“internal”更改为“public”

213
每当我在VS中编辑资源文件时,它都会重新生成相应的代码并将类访问修饰符设置为internal。每次编辑resx时都要使用Ctrl-F -> ReplaceAll十分麻烦,是否有属性/设置可以将其默认为public?
internal class MyResource {

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

}

我需要所有那些internal一直都是public


1
因为我需要从解决方案中的另一个项目访问它的资源管理器。 - Robin Maben
4个回答

444

使用PublicResXFileCodeGenerator代替ResXFileCodeGenerator,以便实现公共访问。

您可以通过在Resx文件的属性窗口中将其设置为自定义工具属性来实现此操作。

编辑: 或者,在 Visual Studio 中打开 resx 文件时将访问修饰符设置为 public。访问修饰符下拉框位于窗体顶部。


15
好的回答,但是需要注意的是,它也可能是“GlobalResourceProxyGenerator”,而不仅仅是“ResXFileCodeGenerator”;另外要注意,“Access Modifier”下拉菜单通常被禁用。 - Marc Gravell
3
@conqenator: 这就是为什么我建议使用访问修饰符下拉菜单作为达到相同结果的另一种替代方式 :) - Anton
2
顺便提一下,如果访问修饰符下拉菜单被禁用,您可以尝试将自定义工具属性更改为ResXFileCodeGenerator,如果它不是已经存在的值。至少在我使用VS 2010中的MVC项目中有效。 - Manuel Navarro
3
对于我来说,在使用 Visual Studio 2017 时,选择 PublicResXFileCodeGenerator 只会使得资源类(Resources class)变为公共的,但不会使其构造函数公共化。 - Laurent Michel
1
它也适用于Visual Studio for Mac 2019,运行良好。 - Luis de Haro
显示剩余4条评论

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

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


3
在你的.csproj文件中,针对每个.Designer.cs进行修改。
<Generator>ResXFileCodeGenerator</Generator>

<Generator>PublicResXFileCodeGenerator</Generator>

或者从界面上操作

enter image description here

希望这有所帮助


-11
也许最简单的方法是创建一个带有公共构造函数的派生类?
生成的类:
 [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
    internal Strings() {
    }

派生类:

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

    }
}

15
不可能。您将收到 CS0060 错误:“不一致的可访问性:基类 'Strings' 的访问级别低于类 'PublicStrings'。” - David Gardiner
这个答案可以简单地删除。 - Evgeny Gorbovoy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接