6

Ho deciso di spostare alcune regole di riscrittura nei file web.release.config e web.staging.config per mantenere le regole di riscrittura pertinenti agli ambienti su cui vengono eseguite le diverse configurazioni.Come abilitare IntelliSense in VS 2013 per <rewrite> in transform .config?

IntelliSense non piaceva questa decisione e non sarebbe stato al gioco perché:

xdt: Transform "attributo non è dichiarato"

per l'elemento <rewrite>.

Ho esaminato RuslanY's solution here e ho preso in considerazione diverse soluzioni su questo sito ma nessuna di esse ha fornito la soluzione a questo particolare problema in VS 2013 con .NET v4.5. Ho anche studiato this old MSDN post here e assicurato la proprietà Schemas di Web.config, Web.Staging.config e Web.Release.config puntano alla versione dello schema di trasformazione corretta.

Sembra che l'unica soluzione è quella di modificare i file DotNetConfig [v] XSD e aggiungere

<xs:anyAttribute namespace="http://schemas.microsoft.com/XML-Document-Transform" processContents="strict"/> 

alla fine di ogni <xs:complexType> all'interno di ciascuno di <xs:element name="rewrite"> 'elementi s (e <xs:element name="rewrite">' s markup stessa) per metterli in linea con altri elementi che hanno un buon IntelliSense.

Questa è la soluzione corretta in questo caso (perché sembra strano che queste voci non siano già esistenti)? C'è un modo migliore di aggiungere queste voci ai file xsd in modo che non vengano persi su un aggiornamento VS (e quindi saranno più facili da applicare su un'installazione VS)?

Oppure c'è un'altra soluzione che dovrei distribuire?

+1

Sto visualizzando lo stesso messaggio di avviso, xdt: Trasforma "l'attributo non è dichiarato", tuttavia la trasformazione sembra funzionare correttamente. Sembra che Microsoft abbia bisogno di sistemare gli schemi. – PrgTrdr

+0

@PrgTrdr Con la correzione descritta nella mia domanda sopra, per quanto posso dire al momento ... La aggiungerò come risposta quando sono più sicuro che questo non introduce alcun bug. – lukkea

+0

Ho appena incontrato lo stesso problema in un progetto 4.5.1 e la soluzione più semplice era trasformare l'elemento di riscrittura con "Sostituisci". – lukkea

risposta

0

Come dico nella mia interrogazione: Sembra che l'unica soluzione è quella di modificare i file DotNetConfig [v] XSD e aggiungere

<xs:anyAttribute namespace="http://schemas.microsoft.com/XML-Document-Transform" processContents="strict"/> 

alla fine di ogni <xs:complexType> all'interno di ciascuno di elementi <xs:element name="rewrite"> s'(e lo stesso markup <xs:element name="rewrite">) per metterli in linea con altri elementi che hanno un buon IntelliSense.