Visual Studio - Padrão do arquivo Resx 'interno' para 'público'


165

Toda vez que edito um arquivo de recurso no VS, ele gera novamente o código correspondente e define o modificador de acesso à classe como interno.
É muito difícil Ctrl-F -> ReplaceAll toda vez que edito o resx. Existe uma propriedade / configuração para que eu possa usar como padrão isso em público?

internal class MyResource {

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

}

Eu preciso que todos internalestejam publico tempo todo.


@ jvanrhyn: Porque eu preciso acessar seu gerenciador de recursos de outro projeto na solução.
precisa

Respostas:


334

Em vez de ResXFileCodeGenerator, use o PublicResXFileCodeGenerator.

Você pode fazer isso definindo isso como a propriedade Ferramenta Personalizada na Janela de Propriedades do arquivo Resx ao qual você deseja acesso público.

Editar : Como alternativa, você pode definir o Modificador de Acesso como público quando abrir o arquivo resx no Visual Studio. A caixa suspensa Modificador de acesso pode ser encontrada na parte superior do formulário.


13
(Boa resposta, mas apenas algumas notas, mas também poderia ser GlobalResourceProxyGenerator, não apenas ResXFileCodeGenerator, e nota também que a lista suspensa "Acesso Modofier" é muitas vezes desativado)
Marc Gravell

@ Anton: Obrigado, funciona no meu caso. Além disso, notei que alterar o modificador de acesso na lista suspensa altera a ferramenta correspondente.
precisa

1
@conqenator: É por isso que propus usando o menu suspenso Acesso modificador como uma forma alternativa de alcançar o mesmo resultado :)
Anton

2
BTW, se o menu suspenso Modificador de Acesso estiver desativado, você pode tentar alterar a propriedade Ferramenta Personalizada para ResXFileCodeGenerator, se esse não for o valor da lista. Pelo menos é trabalho para mim em um projeto MVC no VS 2010.
Manuel Navarro

1
Para mim, com o Visual Studio 2017, escolher o PublicResXFileCodeGeneratorúnico torna pública a classe Resources, não seu construtor.
Laurent Michel

13
  1. Clique com o botão direito do mouse em Arquivo de recursos ( resource.resx) => Propriedades .

  2. Ferramenta personalizada => Alterar paraPublicResXFileCodeGenerator


-7

Talvez a maneira mais fácil seja criar uma classe derivada com um ctor público?

A classe gerada:

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

A classe derivada:

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

    }
}

13
Isso não é possível. Você receberá um erro CS0060 Acessibilidade inconsistente: a classe base 'Strings' é menos acessível que a classe 'PublicStrings'
David Gardiner
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.