Comment puis-je empêcher IVsBuildPropertyStorage.SetItemAttribute de s'échapper des caractères spéciaux?

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

Question

Je travaille sur une extension Visual Studio 2010 et je veux ajouter un attribut à un élément MSBuild, comme suit:

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

Alors, loin de la seule façon que je trouve utilise la méthode IVsBuildPropertyStorage.SetItemAttribute . Cela fonctionne très bien pour les chaînes simples, mais lorsque je tente d'utiliser des caractères qui sont spéciaux pour MSBuild, j'obtenir ce résultat:

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

Cela signifie que SetItemAttribute échappe automatiquement à partir des caractères msbuild et je ne veux pas.

Était-ce utile?

La solution

Cette question est un peu vieux, mais a besoin d'une réponse. VS2010 semble avoir une meilleure interface qui peut définir des valeurs sans s'échapper.

  

IVsBuildPropertyStorage2 Interface

     

Mis en œuvre par le système de projet pour donner accès aux saveurs   système de propriété MSBuild. Cette interface offre une plus grande souplesse   la mise autour de propriétés que IVsBuildPropertyStorage. Il permet   l'ajout d'un nouveau groupe de propriété conditionnelle et n'échappe pas à la   valeurs.

A savoir la fonction SetPropertyValueEx : http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsbuildpropertystorage2.setpropertyvalueex.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top