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.

Robin Maben
fonte
@ 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.

Anton
fonte
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

user274294
fonte
-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()
    {

    }
}
Trond Ivar Lindberg
fonte
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