Desidero inserire alcuni metadati in tutti i file resx in una soluzione. Is Sembra che questo potrebbe essere realizzato utilizzando l'elemento metadata
incluso nel XSD embedded per resx:Come aggiungere i metadati ai file resx
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
Io non sono sicuro al 100% che l'elemento metadata
dovrebbe essere utilizzato per memorizzare i metadati arbitraria, perché ero in grado di trova tutta la documentazione relativa allo scopo previsto. Ma funziona bene finché i file resx vengono modificati utilizzando un editor di testo.
Il problema si presenta quando si modifica il file resx in Visual Studio 2013. Il modo predefinito per aprire la risorsa è "Editor risorse gestite". Sfortunatamente, l'editor di risorse gestite non distingue tra dati e metadati. Ciò causa la modifica silenziosa dei metadati ai dati al salvataggio. Questo bug (o forse la progettazione intenzionale) esiste dal at least 2010.
Abbiamo anche provato ad aggiungere elementi che l'editor delle risorse gestite non riconoscerebbe, ma questi elementi sono stati rimossi al salvataggio. La stessa cosa è successa per i commenti XML. Questo comportamento è più comprensibile, ma non ci lascia molte buone opzioni.
Ecco le possibili soluzioni io sappia:
- Mandato che nessuno può utilizzare le risorse Editor gestito. Potrebbe andar bene se fossi solo io, ma non posso richiederlo a tutta la squadra. Managed Resources Editor è uno strumento troppo utile.
- Richiedere a tutti di correggere manualmente i metadati dopo aver utilizzato l'Editor risorse gestite. Questo è troppo incline agli errori e gravoso.
- Invia un problema al team di Visual Studio. Lo faremo, ma abbiamo bisogno di una soluzione mentre aspettiamo, e non ci sono garanzie che una soluzione arriverà mai.
- Editor risorse fork gestito in modo che si comporti come vogliamo. Non sono riuscito a trovare la fonte e questo probabilmente ha problemi di licenza. Inoltre, non siamo interessati a mantenere una forcella.
- Scrivere la propria versione di Editor risorse gestite. Questo è come l'opzione sopra, ma molto più lavoro di quanto valga per il nostro caso d'uso.
- È sufficiente memorizzare i metadati in un tag
data
. Questo è un trucco ovvio.
Sembra che l'errore qui non sia con i file resx stessi, sia con gli strumenti di Visual Studio attorno ai file resx. Tuttavia, non ci stiamo allontanando da Visual Studio in qualsiasi momento presto. Ci sono delle soluzioni che mi mancano?