ฉันจะรวบรวมโครงการ Visual Studio จากบรรทัดคำสั่งได้อย่างไร


113

ฉันกำลังเขียนสคริปต์การชำระเงินสร้างแจกจ่ายทดสอบและคอมมิตสำหรับโซลูชัน C ++ ขนาดใหญ่ที่ใช้Monotone , CMake , Visual Studio Express 2008 และการทดสอบแบบกำหนดเอง

ส่วนอื่น ๆ ทั้งหมดดูเหมือนจะตรงไปตรงมา แต่ฉันไม่เห็นวิธีการรวบรวมโซลูชัน Visual Studio โดยไม่ได้รับ GUI

สคริปต์นี้เขียนด้วย Python แต่คำตอบที่ช่วยให้ฉันโทรไปที่: os.system จะทำ

คำตอบ:


116

ฉันรู้สองวิธีที่จะทำ

วิธีที่ 1 วิธี
แรก (ซึ่งฉันชอบ) คือการใช้msbuild :

msbuild project.sln /Flags...

วิธีที่ 2
คุณสามารถเรียกใช้:

vcexpress project.sln /build /Flags...

อ็อพชัน vcexpress จะส่งคืนทันทีและไม่พิมพ์เอาต์พุตใด ๆ ฉันคิดว่านั่นอาจเป็นสิ่งที่คุณต้องการสำหรับสคริปต์

โปรดทราบว่า DevEnv ไม่ได้รับการแจกจ่ายพร้อมกับ Visual Studio Express 2008 (ฉันใช้เวลาส่วนใหญ่ในการพยายามคิดว่าเมื่อครั้งแรกมีปัญหาคล้ายกัน)

ดังนั้นผลลัพธ์อาจเป็น:

os.system("msbuild project.sln /p:Configuration=Debug")

นอกจากนี้คุณจะต้องตรวจสอบให้แน่ใจว่าตัวแปรสภาพแวดล้อมของคุณถูกต้องเนื่องจาก msbuild และ vcexpress ไม่ใช่ค่าเริ่มต้นบนเส้นทางของระบบ เริ่มต้นสภาพแวดล้อมการสร้าง Visual Studio และเรียกใช้สคริปต์ของคุณจากที่นั่นหรือแก้ไขเส้นทางใน Python (ด้วยos.putenv )


นอกจากนี้ยังใช้ได้กับ Visual Studio 2010 Express
Samuel Harmer

msbuild ดูเหมือนจะไม่จัดส่งด้วย VS 2008
Lucky Luke

46

MSBuild มักจะใช้งานได้ แต่ฉันเคยประสบปัญหามาก่อน คุณอาจมีโชคดีขึ้นด้วย

devenv YourSolution.sln /Build 

MSBuild ไม่ทำงานกับโปรเจ็กต์ Visual Fortran (* .vfproc) ขอบคุณที่ชี้ให้ฉันไปที่ devenv ซึ่งทำ
Maik Beckmann

ฉันต้องใช้: devenv YourSolution.sln / Build แต่ใช้งานได้ดีขอบคุณ
bobwah

7
คุณยังสามารถระบุการกำหนดค่า:devenv YourSolution.sln /Build Debug
Josh Stribling

ใช้งานได้ดี คุณสามารถสร้างใหม่โดยใช้คำสั่งด้านล่างdevenv YourSolution.sln /rebuild
Abhineet

1
นอกจากนี้คุณยังสามารถสร้างใหม่สำหรับโหมดรีลีสหรือดีบักโดยเพียงแค่ต่อท้ายดีบักหรือรีลีสหลังจากเว้นวรรคหนึ่งครั้ง เช่น: devenv YourSolution.sln /rebuild releaseหรือdevenv YourSolution.sln /rebuild debug
Abhineet

21

พูดตามตรงฉันต้องเพิ่ม 2 เซ็นต์

คุณสามารถทำมันได้ด้วยmsbuild.exe มีหลายรุ่นที่มี msbuild.exe

C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ msbuild.exe C: \ Windows \ Microsoft.NET \ Framework64 \ v3.5 \ msbuild.exe C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe
C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ msbuild.exe C: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ msbuild.exe C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ msbuild.exe

ใช้เวอร์ชันที่คุณต้องการ โดยพื้นฐานแล้วคุณต้องใช้ตัวสุดท้าย

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe

ดังนั้นวิธีการทำ

  1. เรียกใช้หน้าต่างคำสั่ง

  2. ป้อนเส้นทางไปยัง msbuild.exe

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe

  1. ป้อนเส้นทางไปยังโซลูชันโครงการเช่น

"C: \ Users \ Clark.Kent \ Documents \ visual studio 2012 \ Projects \ WpfApplication1 \ WpfApplication1.sln"

  1. เพิ่มแฟล็กที่คุณต้องการหลังเส้นทางโซลูชัน

  2. กดENTER

โปรดทราบว่าคุณสามารถขอความช่วยเหลือเกี่ยวกับแฟล็กที่เป็นไปได้ทั้งหมดเช่น

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ msbuild.exe / help


6
ฉันชอบวิธีที่คุณเพิ่มรายละเอียดสำหรับนักพัฒนาใหม่ ๆ เช่นจะหา msbuild ได้ที่ไหนเป็นต้น
Ayushmati

9

การใช้msbuildตามที่ผู้อื่นชี้ให้เห็นได้ผลสำหรับฉัน แต่ฉันต้องทำมากกว่านั้นเล็กน้อย ก่อนอื่นmsbuildต้องมีการเข้าถึงคอมไพเลอร์ สามารถทำได้โดยเรียกใช้:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"

จากนั้นmsbuildไม่ได้อยู่ใน $ PATH ของฉันดังนั้นฉันจึงต้องเรียกใช้ผ่านเส้นทางที่ชัดเจน:

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" myproj.sln

สุดท้ายโครงการของฉันใช้ประโยชน์จากตัวแปรบางอย่างเช่น$(VisualStudioDir). ดูเหมือนว่าจะไม่ได้รับการตั้งค่าmsbuildดังนั้นฉันจึงต้องตั้งค่าด้วยตนเองผ่าน/propertyตัวเลือก:

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" /property:VisualStudioDir="C:\Users\Administrator\Documents\Visual Studio 2013" myproj.sln

บรรทัดนั้นในที่สุดก็อนุญาตให้ฉันรวบรวมโครงการของฉัน

โบนัส : ดูเหมือนว่าเครื่องมือบรรทัดคำสั่งไม่จำเป็นต้องลงทะเบียนหลังจากใช้งาน 30 วันเหมือนกับที่ Visual Studio Community Edition ที่ใช้ GUI "ฟรี" ด้วยข้อกำหนดการลงทะเบียนของ Microsoft เวอร์ชันนั้นแทบจะไม่ฟรี ฟรีเหมือนใน facebook ถ้ามีอะไร ...



3

DEVENV ทำงานได้ดีในหลาย ๆ กรณี แต่ใน WIXPROJ เพื่อสร้างตัวติดตั้ง WIX ของฉันสิ่งที่ฉันได้รับคือข้อผิดพลาด "CATASTROPHIC" ในบันทึกการออก

ใช้งานได้: MSBUILD /Path/PROJECT.WIXPROJ / t: Build / p: Configuration = Release

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