如何防止 IVsBuildPropertyStorage.SetItemAttribute 转义特殊字符?
-
25-09-2019 - |
题
我正在开发 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提供了更大的灵活性。它允许添加一个新的条件属性组, 不会逃脱值。
不隶属于 StackOverflow