Come posso evitare IVsBuildPropertyStorage.SetItemAttribute fuoriuscita caratteri speciali?
-
25-09-2019 - |
Domanda
Sto lavorando su uno Studio 2010 estensione visiva e voglio aggiungere un attributo a un elemento MSBuild, come segue:
<EmbeddedResource Include="SomeFile.xml">
<FooAttribute>%(Filename)%(Extension)</FooAttribute>
</EmbeddedResource>
Quindi, di gran lunga l'unico modo che ho trovato è con il metodo IVsBuildPropertyStorage.SetItemAttribute
. Questo funziona bene per semplici stringhe, ma quando provo a utilizzare i caratteri che sono speciali per MSBuild, ottengo questo risultato:
<EmbeddedResource Include="SomeFile.xml">
<FooAttribute>%29%25%28Filename%29%25%28Extension%29</FooAttribute>
</EmbeddedResource>
Questo significa che SetItemAttribute
sfugge automaticamente da personaggi MSBuild e io non voglio questo.
Soluzione
Questa domanda è un po 'vecchio, ma ha bisogno di una risposta. VS2010 sembra avere una migliore interfaccia che può impostare valori senza fuggire.
IVsBuildPropertyStorage2 Interfaccia
Implementato dal sistema del progetto di dare sapori accesso al sistema di proprietà MSBuild. Questa interfaccia fornisce una maggiore flessibilità intorno l'impostazione delle proprietà di IVsBuildPropertyStorage. Permette di l'aggiunta di un nuovo gruppo di proprietà condizionale e non sfugge il valori.
Vale a dire la funzione SetPropertyValueEx : http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsbuildpropertystorage2.setpropertyvalueex.aspx