سؤال

أحاول إنشاء بناء إصدار مع عدم وجود ملفات PDB. لقد شاهدت العديد من الوظائف التي تشير بالنقر بزر الماوس الأيمن فوق المشروع، واختيار الخصائص، والذهاب إلى علامة التبويب "بناء" ثم إلى Advanced ... Butoon وتغيير معلومات التصحيح التي لا شيء. هذا يعمل وكل شيء، لكنني بحاجة إلى القيام بذلك لبناء 50 حلول تحتوي على ~ 25 مشروعا! ذكر المشاركات الأخرى تحرير ملف .csproj المناسب، ولكن مرة أخرى، مع العديد من المشاريع، وهذا سيستغرق وقتا طويلا. هل هناك أي طريقة لتحقيق ذلك عبر ملف tfsbuild.proj؟

لقد حاولت إضافة ما يلي إلى ملف Tfsbuild.proj، مع عدم وجود حظ.

<PropertyGroup>
  <Configuration>Release</Configuration>
  <Platform>AnyCPU</Platform>
</PropertyGroup>

<PropertyGroup>
  <DebugSymbols>false</DebugSymbols>
  <DebugType>none</DebugType>
  <Optimize>true</Optimize>
</PropertyGroup>

الخط التالي يطبع الإصدار | AnyCPU، ولا شيء، خطأ، لكنني ما زلت أرى ملف .pdb في مجلد $ (OutputDir).

<Message Text="$Configuration|Platform): $(Configuration)|$(Platform)" />
<Message Text="DebugType is: $(DebugType)"/>
<Message Text="DebugSymbols is: $(DebugSymbols)"/>

شكرا مقدما، أورفي

هل كانت مفيدة؟

المحلول

أنا لست متأكدا تماما (لا تملك بناء فريق مثبت)، ولكن من المحتمل جدا أنه عند تغيير هذه الخصائص في Poject TFSBuild، فإنها لا تنتشر على ملفات المشروع الفعلية الخاصة بك منذ أن تم تصميم الحلول / المشروعات الفعلية عن طريق الإطلاق مهمة MSBUILD أخرى، والهدف المسؤول في Microsoft.teamfoundation.build.targets لا يمر تلك الخصائص إلى المهمة.

على سبيل المثال، هذا هو الهدف "callcompile" الهدف في الملف المذكور أعلاه (مرة أخرى، لست متأكدا مما إذا كان هذا هو ما لك بناء السيناريو يستخدم ولكن الفكرة هي نفسها):

<Target Name="CallCompile" DependsOnTargets="$(CoreCompileDependsOn)">
  <!-- Pass in all properties that users might want during the course of the compile targets. -->
  <MSBuild Projects="$(MSBuildProjectFile)"
           Properties="a lot of properties, but not DebugSymbols etc"
           Targets="CoreCompile">
  </MSBuild>
</Target>

وانت ايضا ربما الابتعاد عن إضافة الخصائص التي تريدها إلى ملف الأهداف، ولكن:

  • هذا يعني أن عليك تغيير هذا الملف في كل مرة تقوم فيها بالترقية
  • قد لا يكون السلوك المرغوب فيه لجميع مشاريعك
  • أخيرا وليس آخرا: إذا تم استدعاء ملفات المشروع أيضا على debugsymbols / ...، فإن قيم الخاصية في ملفك ما عليك سوى تجاوز تلك التي تم تمريرها بواسطة مهمة MSBUILD، لذلك في النهاية، لا يزال يتعين عليك تغيير جميع ملفات المشروع للتعامل مع ذلك

طريقة واحدة لتحقيق ما تريد، هو كتابة نص في لغتك المفضلة التي تسرد جميع ملفات الكل * .csproj ضمن دليل معين، ثم يعدل كل ملف لاستبداله صحيحا مع خطأ. أو حتى أسرع: قم بالبحث في * .csproj in Explorer، افتح جميع الملفات مرة واحدة في محرر وأداء اكتشاف / استبدال على جميع الملفات المفتوحة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top