كيف يمكنني منع 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