سؤال

تشترك جميع مشاريعنا في SLN الخاصة بنا في VersionInfo.cs الذي يحمل رقم إصدار المشروع

[assembly: AssemblyVersion("0.0.1.0")]
[assembly: AssemblyFileVersion("0.0.1.0")]

أريد تحديد الأجزاء الثلاثة الأولى من رقم الإصدار بشكل ثابت والجزء الأخير الذي أريد أن يكون نسخة العمل هو مراجعة SVN.

الخطوة الأولى هي تحديد حدث ما قبل الإنشاء في VS والذي يقوم بتشغيل البرنامج النصي cmd، هل هناك طريقة سهلة للحصول على مراجعة نسخة العمل من cmd؟

الخطوة الثانية هي إدراج هذا الرقم في ملف VersionInfo.cs

من المحتمل أن تكون هناك طرق أكثر أناقة للقيام بذلك، إذا كان لديك واحدة في المتجر، فقط ضع في اعتبارك أن هذا مشروع مفتوح المصدر وليس لدينا خادم بناء فاخر أو أي شيء من هذا القبيل.إجراء النشر هو فقط وضع المشروع في وضع الإصدار والبناء :D

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

المحلول 3

HMJD: S Solution كان نصف موجود فقط، إذا كتبت إلى الملف في كل مرة تقوم فيها بإنشاء جميع المشاريع التي تشير إلى احتياجات النسخة الإصدار لإعادة البناء حتى إذا لم يتغير شيء، فقد غيرت البرنامج النصي للكتابة فقط إلى الملفرقم مراجعة جديد giveacodicetagpre.

نصائح أخرى

هل هناك طريقة سهلة للحصول على مراجعة نسخة العمل من cmd؟

هناك ملف قابل للتنفيذ يسمى svnversion.exe الذي يطبع على الإخراج القياسي المراجعة.إذا كنت متأكدا من أن هذا هو في الخاص بك PATH يمكنك استدعاء هذا.

لإدراج هذا الرقم في ملف VersionInfo.cs

هل يمكن أن تولد VesionInfo.cs الملف كليًا أو جزئيًا من ملف دفعي:

@echo off

FOR /F %%A in ('svnversion') do SET SVN_REV=%%A

echo [assembly: AssemblyVersion("0.0.1.%SVN_REV%")]     >  VersionInfo.cs
echo [assembly: AssemblyFileVersion("0.0.1.%SVN_REV%")] >> VersionInfo.cs

يحرر:

تم تحديث الملف الدفعي للتعامل مع أرقام مراجعة التنسيق RR, NN:RR و NN:RRM أين NN هو عدد صحيح و RR هي المراجعة:

@ECHO off

FOR /F "tokens=1,2 delims=:M" %%A in ('svnversion') do SET PART_1=%%A&SET PART_2=%%B

IF NOT DEFINED PART_2 (
SET SVN_REV=%PART_1%
)

IF NOT DEFINED SVN_REV (
SET SVN_REV=%PART_2%
)

ECHO [assembly: AssemblyVersion("0.0.1.%SVN_REV%")]     >  VersionInfo.cs
ECHO [assembly: AssemblyFileVersion("0.0.1.%SVN_REV%")] >> VersionInfo.cs
  • إذا كان VisualStudio، فهو Windows
  • إذا كان نظام التشغيل Windows، فيمكنك استخدام SubWCRev من TortoiseSVN

    1. اكتب قالب VersionInfo.cs في المستودع بدلاً من الملف النهائي، حيث يتم استبدال الجزء القابل للتغيير من البيانات بكلمة رئيسية SubWCRev (مناسبة)
    2. في كل عملية بناء، قم بتشغيل SubWCRev، الذي يكتب الملف النهائي بالبيانات الفعلية من القالب وبيانات WC (يمكن /بدء/بدء إنشاء المنشئ الكامل بنفس البساطة svn export + subwcrev wc-path VersionInfo.cs.tpl VersionInfo.cs)

تحميل مهمة المجتمع MSBuild وتثبيته.

افتح ملف .csproj الخاص بك وفي النهاية (قبل الإغلاق </project> بطاقة شعار)

الصق الكود التالي (لا تغير <Import> بطاقة شعار):

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" /> 

بعد <Import> قم بلصق ما يلي:

  <Target Name="BeforeBuild">
      <SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(ProgramFiles)\TortoiseSVN\bin">
          <Output TaskParameter="Revision" PropertyName="Revision" />
      </SvnVersion>
      <FileUpdate Files="Properties\AssemblyInfo.cs" Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)" ReplacementText="$1.$2.$3.$(Revision)" />
  </Target>

انظر إلى السمة مسار الأدوات داخل علامة SvnVersion، هناك مكان يجب عليك فيه تحديد الموقع الموجود على جهازك svnversion.exe ملف ثنائي.

بافتراض أن برنامج TortoiseSVN مثبت لديك، فإن المسار إليه هو: C:\ProgramFiles\TortoiseSVN\bin\يمكنك أيضًا استخدام ثنائيات VisualSVN (في هذه الحالة، يوجد الملف الثنائي في C:\ProgramFiles\VisualSVN\bin\)

مع هذا التعديل في .csproj الخاص بك، في كل مشروع بناء، سيقوم MSBuild أولاً باستدعاء svnversion.exe (مع الوسيطة، دليل الحل الحالي) وسيقوم svnversion بإرجاع رقم المراجعة لهذا المستودع.في علامة FileUpdate، سيبحث MSBuild عن نمط regex ثم يستبدله بالقيم الحالية للـ Major وMinor وBuild ($1 و$2 و$3 على التوالي) ويقوم بتحديث المراجعة بقيمة المراجعة المتغيرة

يمكنك محاولة استخدام بدائل الكلمة الرئيسية لاستبدال الرقم كما كنت ترتكز.لديهم هذا كمثال: giveacodicetagpre.

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