如何防止IVsBuildPropertyStorage.SetItemAttribute转义特殊字符?

时间:2010-10-24 12:39:44

标签: c# visual-studio-2010 msbuild envdte vsix

我正在研究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字符中逃脱,我不希望这样。

1 个答案:

答案 0 :(得分:2)

这个问题有点陈旧,但需要回答。 VS2010似乎有更好的界面,可以设置值而不会转义。

  

IVsBuildPropertyStorage2接口

     

由项目系统实现,以便为flavor提供访问权限   MSBuild属性系统。该界面提供更大的灵活性   围绕设置属性比IVsBuildPropertyStorage。它允许   添加一个新的条件属性组,不会逃脱   值。

即函数 SetPropertyValueEx http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsbuildpropertystorage2.setpropertyvalueex.aspx