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