¿Cómo puedo evitar que se escape IVsBuildPropertyStorage.SetItemAttribute caracteres especiales?

StackOverflow https://stackoverflow.com/questions/4008227

Pregunta

Estoy trabajando en una extensión de Visual Studio 2010 y quiero añadir un atributo a un elemento de MSBuild, de la siguiente manera:

 <EmbeddedResource Include="SomeFile.xml">
      <FooAttribute>%(Filename)%(Extension)</FooAttribute>
 </EmbeddedResource>

Así que, ahora, la única manera que encontré es utilizando el método IVsBuildPropertyStorage.SetItemAttribute . Esta bien que funciona para cuerdas simples, pero cuando intento utilizar caracteres que son especiales para MSBuild, me sale el siguiente resultado:

 <EmbeddedResource Include="SomeFile.xml">
      <FooAttribute>%29%25%28Filename%29%25%28Extension%29</FooAttribute>
 </EmbeddedResource>

Esto significa que SetItemAttribute escapa automáticamente de caracteres MSBUILD y yo no quiero eso.

¿Fue útil?

Solución

Esta pregunta es un poco viejo, pero necesita una respuesta. VS2010 parece tener una mejor interfaz que puede establecer los valores sin escapar.

  

IVsBuildPropertyStorage2 interfaz

     

Implementado por el sistema del proyecto para dar sabores acceso a la   sistema de propiedad MSBuild. Esta interfaz proporciona más flexibilidad   alrededor de configuración de las propiedades que IVsBuildPropertyStorage. Permite   la adición de un nuevo grupo de propiedades condicional y no escapa a la   valores.

Es decir, la función SetPropertyValueEx : http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsbuildpropertystorage2.setpropertyvalueex.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top