في نانت، يمكنني إنشاء مجموعة الملفات من الملفات المدرجة في مشروع VS؟

StackOverflow https://stackoverflow.com/questions/529450

سؤال

وأنا إعادة كتابة نانت بناء النصوص لجعلها أكثر نظافة وأكثر بساطة، فضلا عن أكثر عمومية هدف.

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

وكنت آمل أن أتمكن من العثور على طريقة لإنشاء fileset واستنادا إلى ملفات (، وأيضا، و<م> فرعية من الملفات) المسرودة في ملف مشروع Visual Studio (.csproj). أنا يمكن بعد ذلك استخدام هذه fileset في zip المهمة. لم أجد أي شيء أن يفعل ذلك تلقائيا (على الرغم من إهمال الان بدت مهمة SLiNgshoT في NAntContrib واعدة قليلا).

وبدأت السير على طريق محاولة القيام بذلك يدويا، ولكن حصلت عالقا. لدي هدف أن يحصل المشروع من الحل (باستخدام regex )، ثم يحاول الحصول على كل ملف المحتوى في المشروع باستخدام xmlpeek (ومع /n:Project/n:ItemGroup/n:Content/@Include استعلام XPath). المشكلة هنا هي أن xmlpeek لا يقوم بإرجاع كل قيمة ، فقط أولا. وحتى لو فعلت العودة كل قيمة، وأنا لست متأكدا كيف كنت تحصل عليه في <لأ href = "http://nant.sourceforge.net/release/latest/help/types/zipfileset.html" يختلط = "نوفولو noreferrer"> fileset من هنا.

هل هناك أي وسيلة لإنقاذ هذا المسار في التفكير؟ هل يمكنني تحقيق ما أريد مع مهمة نانت مخصصة (كنت تفضل ليس لديهم أي مشروع يعتمد على مهمة مخصصة)؟ هناك بعض المدمج في طريقة للقيام بذلك أنني لم يجد؟

لا تتردد في طرح الأسئلة في التعليقات إذا كان هناك شيء عن هدفي أو طريقة ليست واضحة.

وشكرا!


<القوي> UPDATE: للتوضيح، وجهة نظري في كل هذا هو لجعل العملية برمتها أكثر من ذلك بكثير سلس. في حين يمكنني بسهولة إضافة كافة ملفات xml على مجموعة، وهذا غالبا ما يحصل. XML الملفات التي تعيش في نفس المجلد ولكن ليست في الحقيقة جزء من المشروع. عندما يكون لدي بالفعل قائمة من الملفات التي يستخدمها المشروع (فصل ما بين المحتوى وأنواع أخرى، حتى)، يبدو من العار عدم استخدام تلك المعلومات. في نهاية المطاف، أن لا أحد يجب أن تلمس ملف البناء إلى تغيير ما يحصل تضمينها في الحزمة. لا يبدو مثل الكثير من الأنابيب حلم بالنسبة لي ...

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

المحلول

هذا السؤال ذات الصلة . واجهة microsoft.build.buildengine يجب أن تتيح لك الحصول على أفضل بكثير من الوصول إلى المعلومات التي تحتاجها، ولكن للأسف أعتقد سيكون لديك لبناء مهمة مخصصة.

ولكن أعتقد أن تحليل ملف مشروع لتوليد مجموعة الملفات التي يتم استخدامها في أي مكان آخر هو ... الشيء الكثير لوضع كل داخل النصي الإنشاء. ومنذ يبدو أنك تريد أن تعيد استخدام هذا، وأنا لا أعتقد أن هذا يتوقف على مهمة مخصصة لأي أسوأ من أي شكل آخر من أشكال إعادة استخدام (حتى لو كنت تستطيع أن تفعل كل شيء في المهام نانت القائمة، وكنت لا تزال بحاجة الى كل مشروع ترث هذه العملية بطريقة ما).

نصائح أخرى

وبقدر قراءة ملفات المشروع. لقد فعلت شيئا مثل هذا من قبل. انتهى بي الأمر مجرد كتابة برنامج قراءة ملفات المشروع وبناء مشروع مخصص ملف بناء المشروع.

ولكن كنت أحاول تجميع قاعدة قانون بلدي. يبدو أنك تحاول الرمز البريدي هو فقط.

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

وهكذا هل يمكن أن يكون شيء من هذا القبيل:

<fileset id="project.source.objects">
  <include name="**/*.cs"/>
  <include name="**/*.xml"/>
  <include name="**/*.resx"/>
</fileset>

<fileset id="project.misc.sources">
  <include name="MyFile1.someext"/>
</fileset>

وبعد ذلك في الهدف البريدي الخاص بك وضعت للتو:

<zip zipfile="myzip.zip">
  <fileset refid="project.source.objects"/>
  <fileset refid="project.misc.sources"/>
</zip>

والآن إذا أردت تفاصيل المشروع. وهناك شيء آخر يمكن أن تفعله. إذا كنت تستخدم VS2005 أو أكبر البحث على T4. إنها إطار قالب لإنشاء الإضافات التي تسمح لديك ملفات اضافية ولدت عندما تفعل شيئا. نوع من مثل عند القيام رسم تخطيطي لفئة أو لديك XSD (وهذا يحصل عليه من التعليمات البرمجية خلف ملف، يتم ذلك بهذه الطريقة).

في معظم المشاريع التي عملت على نحافظ على ملف البناء لكل مشروع وعادل يبقيه حتى الآن. منذ لدينا مجموعة الملفات عام هذا هو بداية لذلك نحن فقط حقا بحاجة إلى تحديث ملف لأشياء غامضة.

وعلى أمل أن يساعد. إذا كنت يمكن أن توفر أكثر من ذلك بقليل من التفصيل أنني قد تكون قادرة على مساعدة أخرى.

وأنا أحب الجزء الأول من فكرة جوش.

وكتابة التطبيق وحدة صغيرة لسحب الملفات من .csproj (منذ انها مجرد XML في وجود)، وكتابة قائمة إلى ملف.

وبدلا من مهمة البريدي نانت، وأود أن استخدام 7 الرمز البريدي لإنشاء الأرشيف مع قائمة تم إنشاؤها في الخطوة السابقة:

و(أنا خلق أرشيف استخراج ذاتي هنا)

<target name="ZipBuild">
  <exec program="${SevenZip}" workingdir="${SolutionPath}/Installation/Build.Staging">
    <arg value="a" />
    <arg value="-sfx" />
    <arg value="ReferenceBuild-${build.number}.exe" />
    <arg value="@mycustomfilelist.txt" />
  </exec>
</target>

وعلى أمل أن يساعد،

و-jason

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