Existe uma maneira de fazer Fortemente arquivos públicos Typed Resource (em oposição a interno)?
-
02-07-2019 - |
Pergunta
Aqui está o que eu gostaria de fazer:
Eu quero criar um projeto de biblioteca que contém meus arquivos de recursos (ou seja, etiquetas de interface do usuário e outros enfeites). Eu gostaria de, em seguida, usar a biblioteca de recursos tanto em minha UI e em meus testes. (Isto é, basicamente, ter um lugar comum para os meus recursos que fazem referência a partir de vários projetos.)
Infelizmente, porque o StronglyTypedResourceBuilder (a classe Net que gera o código para recursos) faz arquivos de recursos internos, por padrão, não posso referenciar os meus recursos fortemente tipificados na biblioteca de outro projeto (ou seja, a minha UI ou testes) , sem saltar através de aros (ou seja, algo semelhante ao que é descrito aqui , ou escrevendo uma classe / função wrapper público).
Infelizmente, ambas as soluções remover a minha capacidade de manter as referências fortemente tipado.
Alguém já encontrou uma maneira simples e direta para criar recursos .Net rigidez que podem ser referenciados a partir de vários projetos?
Eu prefiro evitar ter que usar um evento de compilação, a fim de alcançar este objetivo (ou seja, fazer algo como substituir todas as ocorrências de 'interno' com o 'público', mas isso é basicamente o meu plano queda-back se eu puder 't encontrar uma resposta ..
Solução
Não tenho certeza qual versão do Visual Studio que você está usando, por isso vou colocar passos para qualquer um:
VS 2008 - Quando você abre o arquivo resx no modo de design, há uma opção no topo ao lado de Adicionar Recursos e remover recursos, chamado Access modificador, é um drop-down onde você pode alterar o código gerado a partir interna para público .
VS 2005 - Você não tem a opção de gerar o código como no VS 2008. Foi um recurso que foi adicionado, por causa desta dor de cabeça. Há embora o trabalho de volta. Você pode usar um gerador de terceiros como este ferramenta ou você poderia usar o href="http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute.aspx" rel="noreferrer"> InternalsVisibleTo atributo
Outras dicas
Visual Studio 2008 permite que você selecione se a classe de recurso gerado deve ser interno ou público. Há também a ResXFileCodeGeneratorEx , o que deve fazer isso para Visual Studio 2005.
Desde o designer de conjunto de dados e com a janela de propriedades visível, há um "modificador" propriedade. Para seus conjuntos de dados, é provável dizendo interno.
Eu não sei se existe um ajuste para o padrão todos os novos conjuntos de dados a público.