NAnt หรือ MSBuild เลือกอันไหนและเมื่อไหร่?


160

ฉันรู้ว่ามีคำถามอื่นที่เกี่ยวข้องกับNAntและMSBuild ของ Stack Overflow แต่ฉันไม่พบการเปรียบเทียบโดยตรงระหว่างสองคำถามนี้คือคำถาม

เมื่อใดที่ควรเลือก NAnt บน MSBuild อันไหนดีกว่ากัน? ไม่เหมาะกับโครงการบ้าน / โอเพ่นซอร์สและ MSBuild สำหรับโครงการทำงานหรือไม่? ประสบการณ์ของสองคนนี้คืออะไร

คำตอบ:


97

ฉันได้ทำการตรวจสอบที่คล้ายกันในสัปดาห์นี้ นี่คือสิ่งที่ฉันสามารถระบุได้:

NAnt:

  • ข้ามแพลตฟอร์ม (รองรับ Linux / Mono) อาจเป็นประโยชน์สำหรับการติดตั้งเว็บไซต์ไปยังเป้าหมายหลาย ๆ อัน (เช่น Linux Apache และ Windows IIS) เป็นต้น
  • คล้ายกัน 95% ในไวยากรณ์กับ Ant (ง่ายสำหรับผู้ใช้ Ant ปัจจุบันหรือผู้สร้าง Java เพื่อรับ)
  • การรวมเข้ากับ NUnit สำหรับการรันการทดสอบหน่วยซึ่งเป็นส่วนหนึ่งของบิลด์และด้วย NDoc สำหรับเอกสารประกอบการผลิต

MSBuild:

  • ในตัวเป็น. NET
  • ผสานรวมกับ Visual Studio
  • ง่ายต่อการเริ่มต้นกับ MSBuild ใน Visual Studio - ทุกอย่างอยู่เบื้องหลัง หากคุณต้องการเจาะลึกคุณสามารถแก้ไขไฟล์ได้ด้วยตนเอง

ความแตกต่างส่วนตัว: (YMMV)

  • เอกสาร NAnt ตรงไปตรงมามากกว่าเล็กน้อย ตัวอย่างเช่นMSBuild Task Referenceแสดงรายการ "Csc Task - อธิบายถึงภารกิจ Csc และพารามิเตอร์ของมัน" (ขอบคุณสำหรับ "help"?) เปรียบเทียบกับการอ้างอิงภารกิจ NAnt "csc - Compiles C # programs" UPDATE:ฉันสังเกตเห็นเอกสาร MSBuildได้รับการปรับปรุงและดีขึ้นมากในขณะนี้ (อาจเทียบกับ NAnt)
  • ไม่ใช่เรื่องง่ายที่จะเข้าใจวิธีแก้ไขซอร์สสคริปต์ build (ไฟล์ *. * proj) โดยตรงจากภายใน Visual Studio ด้วย NAnt ฉันเพิ่งให้ Visual Studio ใช้สคริปต์. build เป็นไฟล์ XML
  • เห็นได้ชัดว่าใน Visual Studio โครงการเว็บแอปพลิเคชันไม่ได้รับไฟล์ *. * proj ตามค่าเริ่มต้นดังนั้นฉันจึงมีปัญหาในการหาวิธีที่จะทำให้ MSBuild ทำงานบนของฉันเพื่อสร้างสคริปต์การปรับใช้
  • NAnt ไม่ได้มีอยู่แล้วใน Visual Studio และจะต้องมีการเพิ่มไม่ว่าจะเป็น Add-In หรือเป็น "เครื่องมือภายนอก" นี่เป็นความเจ็บปวดเล็กน้อยในการตั้งค่า
  • (แก้ไข :) เพื่อนร่วมงานคนหนึ่งของฉันนำเรื่องนี้ขึ้นมา - ถ้าคุณต้องการตั้งค่าเครื่องสร้างโดยใช้CruiseControlเพื่อการรวมอย่างต่อเนื่อง CruiseControl ทำงานร่วมกับ NAnt ได้อย่างดี UPDATE: CruiseControl นอกจากนี้ยังมีงาน MSBuild
  • โปรดดูความคิดเห็นด้านล่างสำหรับการสนทนาเต็มรูปแบบและเป็นปัจจุบันเกี่ยวกับความแตกต่างทางอัตนัย

คุณสามารถแก้ไขไฟล์ .proj แต่หลังจากที่คุณขนโครงการ (ควรจะมี "ยกเลิก" ในเมนูบริบทสำหรับโครงการ)
Yordan Pavlov

18
@Yordan: หรือเพียงแค่ใส่การปรับแต่งของคุณลงในไฟล์. build (หรืออะไรก็ตาม) และนำเข้า + ดำเนินการนั้นจากไฟล์. csproj ของคุณ จากนั้นคุณจะต้องแก้ไข. csproj เพียงครั้งเดียวและสามารถเพิ่มไฟล์. build ให้กับโซลูชันของคุณ ดับเบิลคลิกและคุณจะแก้ไขเหมือนกับไฟล์อื่น ๆ สามารถแมปไฟล์. build กับตัวแก้ไข XML ในตัวเลือกของคุณ
Kent Boogaart

9
มีงาน MSBuild CCNet อยู่ - สามารถดูรายละเอียดได้ที่: confluence.public.
Gavin Miller

2
เป็นที่น่าสังเกตว่าคุณไม่จำเป็นต้องแก้ไขไฟล์. csproj ด้วยตนเอง คุณสามารถใช้ไฟล์ MyProject.csproj.user เพื่อทำการแก้ไขเหล่านั้นทิ้งไฟล์. csproj ของคุณให้สะอาดและเก่าแก่ MSBuild รู้ที่จะมองหาไฟล์. user เหล่านั้นและจะนำเข้าสู่กระบวนการสร้างโดยอัตโนมัติ ดู: ahmed0192.blogspot.com/2006/11/…
CleverPatrick

3
@CleverHuman ไม่ว่าไฟล์. user จะมี mod ที่เฉพาะเจาะจงของผู้ใช้สำหรับโครงการที่ปกติคุณจะไม่เช็คอินพร้อมกับส่วนที่เหลือของโครงการหรือไม่ ฉันใช้คำแนะนำของ Kent มาหลายปีแล้วและมันก็ใช้งานได้ดีมาก คุณแก้ไขไฟล์ PROJ หนึ่งครั้งเพื่อรวมไฟล์ PROJ ที่สองจากนั้นเพิ่มไฟล์ PROJ ที่สองให้กับโครงการของคุณ คุณสามารถปรับแต่งไฟล์ PROJ ที่สองได้อย่างง่ายดายโดยไม่ต้องผ่านกระบวนการ Unload / reload ฉันมักจะโน้มตัวไปหา MSBuild ด้วยเหตุผลนี้
ดารินทร์

77

หนึ่งในการดึงดูดที่สำคัญของ MSBuild สำหรับฉัน (บนแพลตฟอร์ม Windows) คือมันมาเป็นส่วนหนึ่งของ. NET นั่นหมายความว่าเครื่อง Windows ใด ๆ ที่เป็นปัจจุบันด้วย Windows Update จะมี MSBuild เพิ่มข้อเท็จจริงนี้ว่าคอมไพเลอร์ C # ยังเป็นส่วนหนึ่งของ. NET เองและคุณมีแพลตฟอร์มที่สามารถสร้างโครงการบนเครื่องที่สะอาด ไม่จำเป็นต้องติดตั้ง Visual Studio behemoth ในทางตรงกันข้ามจะต้องมีการติดตั้งอย่างชัดเจนก่อนที่จะสามารถเรียกใช้งานบิลด์

สำหรับบันทึกฉันใช้ NMake, Make, Ant, Rake, NAnt และ MSBuild ในการสร้างที่ไม่น่าสนใจในอดีต (ตามลำดับ) รายการโปรดของฉันคือ MSBuild, ส่งมือ (และฉันไม่ชอบเพราะ "นั่นคือสิ่งที่ Visual Studio ใช้") IMHO เป็นเครื่องมือสร้างที่ได้รับการชื่นชมน้อยมาก

ฉันจะเปรียบเทียบ NAnt กับ MSBuild กับความแตกต่างระหว่างขั้นตอนการเขียนโปรแกรมและการทำงาน ไม่ตรงไปตรงมาและคุณจะได้สิ่งที่คุณเห็น MSBuild ในทางกลับกันต้องใช้ความคิดอีกเล็กน้อย เส้นโค้งการเรียนรู้นั้นชัน แต่เมื่อคุณ "รับ" คุณสามารถทำสิ่งที่น่าอัศจรรย์กับมัน

ดังนั้นฉันอยากจะแนะนำให้ดูที่ MSBuild ถ้าคุณสนใจที่จะเขียนโปรแกรมเชิงตรรกะหรือการใช้งานสไตล์ - ถ้าคุณเต็มใจที่จะลงทุนสักเล็กน้อยและความพยายามก่อนที่จะเห็นผลลัพธ์ที่เป็นรูปธรรม (แน่นอนฉันก็เชื่อมั่นว่าท้ายที่สุดแล้ว สามารถทำสิ่งที่ทรงพลังมากขึ้นได้อย่างมีประสิทธิภาพมากขึ้น)


11
ว้าว! ไม่ทราบว่า MSBuild มาพร้อมกับรันไทม์ มันเจ๋งมากและฉันก็เห็นประโยชน์ที่แน่นอน อย่างไรก็ตามฉันไม่เข้าใจการเปรียบเทียบระหว่างฟังก์ชัน / ขั้นตอน มันจะน่าสนใจที่จะได้ยินสิ่งที่ทำให้ MSBuild มีประสิทธิภาพมากขึ้นเมื่อ "รับ"
Scott Saad

2
Msbuild จริง ๆ แล้วมีจำนวนของการอ้างอิงในไฟล์จาก sdks ต่างๆซึ่งจะปรากฏเฉพาะในช่วงการขอเป้าหมายบางอย่าง ดังนั้นแม้ว่า msbuild จะว่างอยู่ แต่ก็อาจไม่ทำงาน
Sam Shiles

6
สิ่งหนึ่งที่ควรเพิ่ม: ไม่เพียง แต่เป็นไปได้ที่จะเรียกใช้แอสเซมบลี. NET จากภายใน msbuild ซึ่งให้การเข้าถึงฟังก์ชั่นที่มีประโยชน์มากมาย (เช่นทุกอย่างใน Systme.IO.Path สามารถมีประโยชน์ในสคริปต์แบบบิลด์) มันเป็นไปได้ที่จะเขียนโค้ดธรรมดา C # ภายในไฟล์ msbuild และทำการประมวลผล ซึ่งเป็นเรื่องที่น่ากลัวเพียงแค่ msdn.microsoft.com/en-us/library/dd722601.aspxและถ้าทุกอย่างซับซ้อนเกินไปการเขียนงานที่กำหนดเองก็เป็นเรื่องง่ายเช่นกัน
stijn

1
จากวิกิพีเดีย: " MSBuildเคยรวมอยู่กับ. NET Framework แต่เริ่มด้วย Visual Studio 2013 แต่จะถูกรวมกับ Visual Studio แทน"
DavidRR

MSBuild (เครื่องมือรูปร่างไมโครซอฟท์ 2013) นอกจากนี้ยังสามารถดาวน์โหลดได้เป็นอิสระจาก Visual Studio 2013 ที่นี่
DavidRR

45

ส่วนตัวผมใช้ทั้งสองอย่าง - สำหรับโครงการเดียวกัน

MSBuild ยอดเยี่ยมในการสร้างโซลูชันและโครงการ Visual Studio - นั่นคือสิ่งที่มันทำขึ้นมา

NAnt สามารถแก้ไขได้ง่ายขึ้นในความคิดของฉัน - โดยเฉพาะถ้าคุณรู้จัก Ant แล้ว NAnt สามารถโทร MSBuild ได้อย่างง่ายดายด้วย NAntContrib ดังนั้นฉันจึงสร้างสคริปต์ NAnt ด้วยตนเองเพื่อทำสิ่งต่าง ๆ เช่นการคัดลอกไฟล์ที่สร้างขึ้นการล้างข้อมูล ฯลฯ - และเรียก MSBuild ให้ทำจริง "เปลี่ยนรหัสต้นฉบับ C # ของฉันเป็นชุดประกอบ"

หากคุณต้องการตัวอย่างของการว่าให้ดูที่ฉันสร้างไฟล์พิธีสารบัฟเฟอร์ (ฉันจะไม่อ้างว่ามันเป็นสคริปต์ที่ยอดเยี่ยม แต่มันทำงานได้ดี)


1
และมันรองรับโมโน การสนับสนุน MSBuild ของ Mono นั้นแย่มาก
Mehrdad Afshari

@ Mehrdad: ใช่ ณ จุดหนึ่งฉันต้องพยายามที่จะรวบรวม Protocol Buffers เพื่อรวบรวมใน Mono ... ขณะนี้มีข้อผิดพลาด gmcs ที่หยุดมันจากการทำงาน :( ความคิดก็คือว่ามันจะทำงานในโมโนในที่สุด
จอน Skeet

1
Guys, โมโนใช้ XBuild และง่ายต่อการย้าย MSBuild ไปยัง XBuild ตรวจสอบนี้: mono-project.com/Porting_MSBuild_Projects_To_XBuild
fyasar

20

NAntมีคุณสมบัติเพิ่มเติมนอกกรอบ แต่MSBuildมีโครงสร้างพื้นฐานที่ดีกว่ามาก (รายการ metadata stones) ซึ่งทำให้ง่ายต่อการสร้างสคริปต์ MSBuild ที่นำมาใช้ซ้ำได้

MSBuild ใช้เวลาสักครู่ในการทำความเข้าใจ แต่เมื่อคุณทำมันเป็นสิ่งที่ดีมาก

สื่อการเรียนรู้:


38
เฮ้ฉันเคยได้ยินจากหนังสือเหล่านั้น :)
38411 Ibrahim Hashimi พูด

19

จูบ = ใช้ MSBuild

ทำไมต้องเพิ่มอย่างอื่นลงในมิกซ์เมื่อคุณมีบางอย่างที่จะทำงานออกมาอย่างสมเหตุสมผล? เมื่อ MSBuild มาถึง NAnt ก็ตาย และโมโนจะมีการติดตั้ง MSBuild ( xbuild )

DRY = ใช้ MSBuild

ถามตัวเองว่าคุณต้องการอะไรจากระบบ build ฉันต้องการระบบบิลด์ที่ IDEของฉันใช้แทนการดูแลรักษาคอนฟิกูเรชันสองแบบ

ส่วนตัวฉันชอบที่จะได้ยินข้อโต้แย้งที่แท้จริงสำหรับ NAnt เพราะฉันแค่คิดไม่ออกเลยว่ามีน้ำจริงๆ


2
"เมื่อ msbuild เกิดขึ้น nant ได้เสียชีวิต" - ฉันคิดว่านี่เป็น clincher แม้ไม่มี VS (ซึ่งฉันไม่ได้ใช้)
harpo

ฉันเห็นด้วย. DotNet 1.1 ไม่มี msbuild.exe ดังนั้นเราจึงเมาไปในตอนนั้น ตั้งแต่ 2.0, msbuild.exe และไลบรารี่พิเศษมีให้เลือกมากมาย และการเขียน MsBuild-Task แบบกำหนดเองมีช่วงการเรียนรู้ แต่ฉันได้เขียนประมาณ 10 เรื่องในช่วงหลายปีที่ผ่านมา
granadaCoder

1
ฉันต้องยอมรับคุณควรใช้เครื่องมือเดียวกับบิวด์ในฐานะนักพัฒนาเพราะบิลด์เซิร์ฟเวอร์จะใช้เพื่อให้คุณล้มเหลวเร็วขึ้น
krystan ให้เกียรติ

14

สิ่งหนึ่งที่ฉันสังเกตเห็นผู้โพสต์หลายคนพูดถึงคือต้องแก้ไขไฟล์. csproj (หรือ. vbproj ฯลฯ ) ด้วยมือ

MSBuild อนุญาตให้ปรับแต่งไฟล์เหล่านี้ได้ * proj ผ่านการใช้ไฟล์. user ถ้าฉันมีโครงการชื่อMyCreativelyNamedProject.csprojและต้องการกำหนดภารกิจ MSBuild เองฉันสามารถสร้างไฟล์ชื่อMyCreativelyNamedProject.csproj.userและใช้CustomBeforeMicrosoftCommonTargetsและCustomAfterMicrosoftCommonTargetsเพื่อกำหนดไฟล์เหล่านั้นเอง

นอกจากนี้ทั้ง NAnt และ MSBuild สามารถปรับแต่งให้เข้ากับเนื้อหาของหัวใจผ่านงาน MSBuild ที่กำหนดเองและผ่านทางส่วนขยายของ NantContrib

ดังนั้นการใช้ NAnt หรือ MSBuild จึงทำให้เกิดความคุ้นเคย:

  • หากคุณคุ้นเคยกับ Ant อยู่แล้วให้ใช้ NAnt เส้นโค้งการเรียนรู้จะง่ายมาก
  • หากคุณไม่คุ้นเคยกับเครื่องมือใด MSBuild จะรวมเข้ากับ Visual Studio แล้วและไม่ต้องใช้เครื่องมือเพิ่มเติม

นอกจากนี้ยังมีมูลค่าเพิ่มที่ MSBuild รับประกันมากที่จะทำงานกับ. NETและ Visual Studio รุ่นใหม่ทั้งหมดทันทีที่มีการเปิดตัวในขณะที่ NAnt อาจมีความล่าช้าบ้าง


1
+1 สำหรับการชี้ให้เห็นความล่าช้าระหว่าง. net release และ nant release ฉันจำได้เมื่อ. net 3.5 ออกมาและต้องใช้ nant.exe.config ที่แฮ็คจาก out on on 'nets เพื่อให้สิ่งต่าง ๆ ทำงานได้ ไม่สนุก.
mmacaulay

9
ตามโพสต์มากมายที่นี่ไฟล์. USER เหล่านั้นมี + ข้อมูลเฉพาะผู้ใช้ + ที่ไม่ควรได้รับการตรวจสอบเพื่อที่จะเป็นที่สุดท้ายที่ฉันต้องการใส่การปรับแต่งบิลด์ ... การปรับแต่งบิลด์ตามนิยาม 'T จะเฉพาะเจาะจงของผู้ใช้และจึงไม่ควรไปในแฟ้ม .user ที่ ...
DarinH

1
เห็นด้วยกับ drventure; .user-files เป็นชื่อที่แนะนำผู้ใช้ pr และไม่ควรเช็คอินในที่เก็บแหล่งควบคุมของคุณ นี่ไม่ใช่สถานที่สำหรับการสร้างอัตโนมัติ
Kjetil Klaussen

10

ฉันใช้ทั้งในที่สคริปต์NAntของฉันเรียก MSBuild เหตุผลหลักของฉันสำหรับการเข้าพักกับ NAnt คือการแยก ให้ฉันอธิบายว่าทำไมฉันถึงรู้สึกว่าสิ่งนี้สำคัญ

  1. การเพิ่มการพึ่งพาโครงการของคุณ ไฟล์สร้างของ NAnt นั้นเป็นเอเลี่ยนของ Visual Studio (ในกรณีของฉันฉันคิดว่านี่เป็นโปร) ดังนั้น Visual Studio จะไม่พยายามทำอะไรกับมัน งาน MSBuild จะถูกฝังไว้เพื่อเป็นส่วนหนึ่งของการแก้ปัญหาและสามารถอ้างถึงงาน MSBuild อื่น ๆ ฉันได้รับซอร์สโค้ดจากบุคคลอื่นเพื่อค้นหาว่าฉันไม่สามารถสร้างได้เพราะงานชุมชน MSBuild ไม่ได้ถูกติดตั้ง สิ่งที่ฉันพบโดยเฉพาะอย่างยิ่งที่น่าผิดหวังคือ Visual Studio จะไม่สร้างและโยนข้อผิดพลาดจำนวนมากซึ่งทำให้ฉันเสียเวลาในการดีบัก สิ่งนี้แม้ว่าข้อเท็จจริงที่ว่าบิลด์ที่ร้องขอนั้นสามารถดำเนินต่อไปได้ (เช่นการสร้างการดีบักเป็นต้น) โดยไม่มีความพิเศษบางอย่างของงาน MSBuild ในระยะสั้น: ฉันทำไม่ได้เช่นการเพิ่มการอ้างอิงให้กับโครงการของฉันถ้าฉันสามารถหลีกเลี่ยงได้

  2. ฉันไม่เชื่อถือ Visual Studio เท่าที่ฉันสามารถโยนทีมพัฒนา สิ่งนี้เกิดขึ้นในยุคแรก ๆ ของ Visual Studio เมื่อมันจะสังหารหมู่ HTML ของฉัน ฉันยังไม่ได้ใช้นักออกแบบเช่น (ในการประชุมเมื่อเร็ว ๆ นี้ฉันพบว่าเพื่อนร่วมงานทำแบบเดียวกัน) ฉันพบว่า Visual Studio สามารถทำให้เสียการพึ่งพาและหมายเลขรุ่นในไฟล์ DLL (ฉันไม่สามารถทำซ้ำได้ แต่มันเกิดขึ้นในโครงการอย่างสม่ำเสมอและทำให้เกิดความโศกเศร้าและเสียเวลา) ฉันใช้วิธีการสร้างที่ใช้ Visual Studio เพื่อสร้างในโหมดดีบักเท่านั้น สำหรับการผลิตผมใช้ NAnt เพื่อที่ฉันควบคุมทุกอย่างภายนอก Visual Studio ไม่สามารถเข้าไปยุ่งอีกต่อไปถ้าฉันสร้างโดยใช้ NAnt

PS: ฉันเป็นนักพัฒนาเว็บและไม่ทำการพัฒนา Windows Forms


6

ในขณะที่ฉันไม่คุ้นเคยกับ MsBuild มากฉันอยู่ภายใต้ความประทับใจที่ความแตกต่างที่สำคัญบางประการของทั้งสองด้านสามารถเพิ่มเติมได้ด้วยการเพิ่มเติม:

ฉันเพิ่งต้องสร้างโครงการ Silverlight ที่ Nant ฉันค้นพบว่าชีวิตจะง่ายขึ้นถ้าฉันเพิ่งทำสิ่งนี้กับ MsBuild - ฉันลงเอยด้วยการเรียกงาน MsBuild จากภายในสคริปต์ Nant ดังนั้นฉันคิดว่ามันไม่ธรรมดาเกินกว่าที่จะผสมและจับคู่ทั้งสองได้

นอกเหนือจากนั้นฉันคิดว่ามันจะเป็นคำถามของการตั้งค่าส่วนตัว - เห็นได้ชัดว่าคุณสามารถจัดการบางส่วน / ส่วนใหญ่ของฟังก์ชั่นของ MsBuild จากภายใน Visual Studio ถ้านั่นคือสิ่งที่คุณ ดูเหมือนว่า Nant จะมีความยืดหยุ่นและเหมาะสมกว่าหากคุณต้องการเขียนสคริปต์ด้วยมือและถ้าคุณมาจากโลกของ Java คุณอาจจะอยู่บ้านด้วยตัวเอง


จุดดี. ทั้งสองโซลูชั่นสามารถขยายและปรับแต่งได้ตามต้องการ
CleverPatrick

2

ฉันลงเอยด้วยการใช้ทั้งคู่ เมื่อออกแบบระบบสร้างของเราใหม่ฉันกำลังประสบปัญหายุ่งยาก คือฉันไม่สามารถกำจัด. vcproj (และครอบครัว) เพราะเราทุกคนใช้ VS เพื่ออัปเดตไฟล์โครงการการตั้งค่าและการกำหนดค่า ดังนั้นหากไม่มีกระบวนการซ้ำซ้อนและข้อผิดพลาดใหญ่เราจึงไม่สามารถสร้างระบบการสร้างของเราบนไฟล์ชุดใหม่ได้

ด้วยเหตุนี้ฉันตัดสินใจเก็บไฟล์ 'proj' ของ VS และใช้ MSBuild (เป็นไฟล์ MSBuild อย่างน้อย VS2005 และ VS2008 ใช้ไฟล์โครงการ MSBuild) สำหรับทุกอย่างอื่น (การกำหนดค่าที่กำหนดเองการทดสอบหน่วยการบรรจุการเตรียมเอกสาร ... ) ฉันใช้ NAnt

สำหรับการรวมอย่างต่อเนื่องฉันใช้ CruiseControl ดังนั้นเราจึงมีสคริปต์ CC ที่เรียกใช้งาน NAnt ซึ่งสำหรับการสร้างใช้ MSBuild

หมายเหตุสุดท้ายสุดท้าย: MSBuild ไม่สนับสนุนโครงการติดตั้ง! ดังนั้นคุณติดกับการโทร DevEnv.com หรือใช้ Visual Studio โดยตรง นั่นคือสิ่งที่ฉันทำ แต่ฉันปิดการใช้งานโครงการติดตั้งโดยค่าเริ่มต้นจากการกำหนดค่าโซลูชั่นทั้งหมดเนื่องจากนักพัฒนาไม่จำเป็นต้องสร้างพวกเขาและถ้าพวกเขาทำพวกเขาสามารถเลือกที่จะสร้างพวกเขาด้วยตนเอง


1

ฉันเปลี่ยนจาก NAnt เป็น MSBuild เมื่อเร็ว ๆ นี้เนื่องจากความสามารถในการสร้างโซลูชัน VS ฉันยังคงใช้ NAnt อยู่เป็นครั้งคราว

คุณอาจต้องการตรวจสอบงานชุมชน MSBuildซึ่งเป็นเหมือน NAntContrib


NAnt สนับสนุนโซลูชั่น VS บางเวอร์ชัน nant.sourceforge.net/release/0.85/help/tasks/solution.html
Denise Skidmore

1

เอกสารและแบบฝึกหัดสำหรับ NAnt ช่วยให้การเริ่มเรียนรู้การสร้างสคริปต์ด้วย NAnt ทำได้ง่ายขึ้น เมื่อฉันติดแฮงค์ NAnt และสร้างสคริปต์สร้างฉันเริ่มแปลความรู้นั้นไปยัง MSBuild (ฉันทำ X เป็น NAnt ฉันจะทำ X ใน MSBuild ได้อย่างไร) เอกสารของ Microsoft มักจะมีระดับความรู้ค่อนข้างสูงก่อนที่จะมีประโยชน์

เหตุผลในการเปลี่ยนจาก NAnt เป็น MSBuild เป็นเพราะ MSBuild เป็นปัจจุบันมากกว่า น่าเสียดายที่รุ่นล่าสุดของ NAnt นั้นอยู่ในวันที่ 8 ธันวาคม 2550 ในขณะที่ MSBuild 4.0 (.NET 4.0) อยู่ไม่ไกล ดูเหมือนว่าโครงการ NAnt จะตาย

หากคุณพบเอกสารที่ดีสำหรับใครบางคนเพิ่งเริ่มเรียนรู้การสร้างสคริปต์สร้างโดยใช้ MSBuild ให้ข้าม NAnt แล้วไปที่ MSBuild ถ้า NAnt ออกมาพร้อมกับรีลีสใหม่แล้วฉันจะพิจารณาที่จะยึดติดกับ NAnt แต่ตอนนี้พวกเขาล้าหลังแล้ว


1
เมื่อวันที่มิถุนายน 2012, รุ่น 0.92 ของ NAnt สามารถใช้ได้จากเว็บไซต์: nant.sourceforge.netและรองรับ. Net 4.0
Brett Rigby

0

เราใช้ทั้งสองอย่าง NAnt มีหน้าที่รับผิดชอบในทุกสิ่ง "สคริปต์" เช่นการคัดลอกการปรับใช้บนIISการสร้างแพ็คเกจและ MSBuild รับผิดชอบในการสร้างโซลูชัน จากนั้นเราสามารถหลีกเลี่ยงปัญหาที่ไม่รองรับ. NET 4.0 โดย NAnt เวอร์ชันใหม่

ไม่สามารถปรับขนาดได้อีก หากเราต้องการโอนย้ายสคริปต์การปรับใช้ไปยังเซิร์ฟเวอร์การผลิตเราเพียงคัดลอกไฟล์บิลด์และติดตั้ง. NET รุ่นที่เหมาะสม - ไม่มีปัญหา Visual Studio กับไฟล์ csproj :)


0

YDeliverโดย Manoj เป็นกรอบการสร้างที่สร้างขึ้นบน PSake มันมีชุดของฟังก์ชั่นห้องสมุดมากมายความสามารถในการกำหนดเวิร์กโฟลว์และเราได้ใช้มันเพื่อส่งมอบโครงการองค์กรมากกว่าหกโครงการเพื่อการผลิต

ใช้ร่วมกับTeamCity , CruiseControlหรือสิ่งที่สามารถทำงานPowerShell


0

เราใช้ FlubuCore มันเป็นโอเพ่นซอร์ส C # ไลบรารี่สำหรับการสร้างโครงการและดำเนินการสคริปต์การปรับใช้โดยใช้รหัส C #

ตัวอย่างง่ายๆของวิธีการใช้งาน Flubu:

protected override void ConfigureTargets(ITaskContext session)
{           

    var compile = session.CreateTarget("compile")
        .SetDescription("Compiles the solution.")
        .AddTask(x => x.CompileSolutionTask())
        .DependsOn("generate.commonassinfo");
}

คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับ flubu และวิธีเริ่มต้นที่นี่: choice-for-build-tool-msbuild-nant-or-something-else

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.