Как мне предотвратить IVSBUILDPROPERTYSTORAGE.SETITEMATTRIBUTE от скрепления специальных символов?

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

Вопрос

Я работаю над расширением Visual Studio 2010, и я хочу добавить атрибут на элемент MSBuild, следующим образом:

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

Итак, далеко единственный способ, которым я нашел, использует метод IVsBuildPropertyStorage.SetItemAttribute Отказ Это работает нормально для простых строк, но когда я пытаюсь использовать символы, которые являются специальными для MSBuild, я получаю этот результат:

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

Это означает, что SetItemAttribute Автоматически ускользает от персонажей MSBuild, и я не хочу этого.

Это было полезно?

Решение

Этот вопрос немного старый, но нужен ответ. VS2010, кажется, имеет лучший интерфейс, который может устанавливать значения без выхода.

IVSBUILDPROPERTYSTORAGE2 Интерфейс

Реализовано системой проектной системы, чтобы дать вкусы доступ к системе свойств MSBuild. Этот интерфейс обеспечивает большую гибкость вокруг установки свойств, чем ivsbuildPropertyStorage. Это позволяет добавить новую условную группу свойств и не избегает ценностей.

А именно функция Setpropertyvalueex.: http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsbuildpropertystorage2.setpropertyvalueex.aspx.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top