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よりも、プロパティの設定に関する柔軟性を高めます。新しい条件付きプロパティグループを追加することができ、 値を逃れません。
つまり関数 SetPropertyValueEx: http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsbuildpropertystorage2.setpropertyvalueex.aspx
所属していません StackOverflow