Domanda

Ecco cosa mi piacerebbe fare:

Voglio creare un progetto di libreria che contenga i miei file di risorse (ad esempio, etichette dell'interfaccia utente e quant'altro). Vorrei quindi utilizzare la libreria di risorse sia nella mia interfaccia utente che nei miei test. (Cioè, fondamentalmente hanno un posto comune per le mie risorse a cui faccio riferimento da più progetti.)

Sfortunatamente, poiché StronglyTypedResourceBuilder (la classe .Net che genera il codice per le risorse) rende i file di risorse interni per impostazione predefinita, non posso fare riferimento alle mie risorse fortemente tipizzate nella libreria da un altro progetto (ad esempio, l'interfaccia utente o i test) , senza saltare attraverso i cerchi (ovvero qualcosa di simile a quanto descritto qui , oppure scrivere una classe / funzione di wrapper pubblico).

Sfortunatamente, entrambe queste soluzioni rimuovono la mia capacità di mantenere i riferimenti fortemente tipizzati.

Qualcuno ha trovato un modo semplice per creare risorse .Net fortemente tipizzate a cui è possibile fare riferimento da più progetti?

Preferirei evitare di dover usare un evento build per raggiungere questo obiettivo (cioè fare qualcosa come sostituire tutte le istanze di 'internal' con 'public', ma questo è fondamentalmente il mio piano di fallback se posso trovare una risposta ..

È stato utile?

Soluzione

Non sono sicuro di quale versione di Visual Studio stai utilizzando, quindi inserirò i passaggi per uno dei due:

VS 2008 - Quando si apre il file resx in visualizzazione struttura, c'è un'opzione in alto accanto a Aggiungi risorsa e Rimuovi risorsa, chiamata Modificatore di accesso, è un menu a discesa in cui è possibile cambiare il codice generato da interno a pubblico .

VS 2005 - Non hai la possibilità di generare il codice come in VS 2008. Era una funzionalità aggiunta a causa di questo mal di testa. Ci sono comunque delle soluzioni. Potresti utilizzare un generatore di terze parti come questo strumento o potresti usare l'attributo InternalsVisibleTo nel tuo AssemblyInfo .cs per aggiungere i progetti che avranno accesso alle classi interne della tua libreria di risorse.

Altri suggerimenti

Visual Studio 2008 consente di selezionare se la classe di risorse generata deve essere interna o pubblica. C'è anche ResXFileCodeGeneratorEx , che dovrebbe farlo per Visual Studio 2005.

Dal progettista del set di dati e con la finestra delle proprietà visibile, è presente un modificatore " " proprietà. Per i tuoi set di dati, è probabile che sia interno.

Non so se esiste un'impostazione per rendere pubblici tutti i nuovi set di dati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top