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.

È stato utile?

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

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