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 Web Developer 编辑 resx 文件吗?