6

我正在开发 Visual Studio 2010 扩展,我想向 MSBuild 项添加一个属性,如下所示:

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

所以,到目前为止,我发现的唯一方法是使用 method IVsBuildPropertyStorage.SetItemAttribute。这适用于简单的字符串,但是当我尝试使用 MSBuild 特有的字符时,我得到了这个结果:

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

这意味着SetItemAttribute自动从 MsBuild 字符中转义,我不希望这样。

4

1 回答 1

2

这个问题有点老了,但需要一个答案。VS2010 似乎有更好的界面,可以设置值而不转义。

IVsBuildPropertyStorage2 接口

由项目系统实现,以提供对 MSBuild 属性系统的访问权限。与 IVsBuildPropertyStorage 相比,此接口在设置属性方面提供了更大的灵活性。它允许添加新的条件属性组并且不会转义值。

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

于 2014-08-14T17:30:30.493 回答