Làm cách nào để biên dịch một dự án Visual Studio từ dòng lệnh?


112

Tôi đang viết kịch bản cho chu trình kiểm tra, xây dựng, phân phối, kiểm tra và cam kết cho một giải pháp C ++ lớn đang sử dụng Monotone , CMake , Visual Studio Express 2008 và các thử nghiệm tùy chỉnh.

Tất cả các phần khác có vẻ khá dễ hiểu, nhưng tôi không biết cách biên dịch giải pháp Visual Studio mà không nhận GUI.

Tập lệnh được viết bằng Python, nhưng một câu trả lời sẽ cho phép tôi thực hiện lệnh gọi tới: os.system.

Câu trả lời:


116

Tôi biết hai cách để làm điều đó.

Phương pháp 1 Phương pháp
đầu tiên (mà tôi thích hơn) là sử dụng msbuild :

msbuild project.sln /Flags...

Phương pháp 2
Bạn cũng có thể chạy:

vcexpress project.sln /build /Flags...

Tùy chọn vcexpress trả về ngay lập tức và không in bất kỳ đầu ra nào. Tôi cho rằng đó có thể là những gì bạn muốn cho một kịch bản.

Lưu ý rằng DevEnv không được phân phối với Visual Studio Express 2008 (Tôi đã dành rất nhiều thời gian để tìm ra điều đó khi lần đầu tiên gặp sự cố tương tự).

Vì vậy, kết quả cuối cùng có thể là:

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

Bạn cũng sẽ muốn đảm bảo rằng các biến môi trường của mình là chính xác, vì msbuild và vcexpress không nằm trên đường dẫn hệ thống theo mặc định. Khởi động môi trường xây dựng Visual Studio và chạy tập lệnh của bạn từ đó hoặc sửa đổi các đường dẫn bằng Python (với os.putenv ).


Điều này cũng có thể áp dụng cho Visual Studio 2010 Express.
Samuel Harmer

msbuild dường như không được vận chuyển với VS 2008
Lucky Luke

46

MSBuild thường hoạt động, nhưng tôi đã gặp khó khăn trước đây. Bạn có thể gặp may mắn hơn với

devenv YourSolution.sln /Build 

MSBuild không hoạt động với các dự án Visual Fortran (* .vfproc). Cảm ơn vì đã chỉ tôi đến devenv, điều đó có.
Maik Beckmann

Tôi đang phải sử dụng: devenv YourSolution.sln / Build nhưng rất hiệu quả, cảm ơn.
bobwah

7
Bạn cũng có thể chỉ định cấu hình:devenv YourSolution.sln /Build Debug
Josh Stribling

Hoạt động tuyệt vời. Người ta cũng có thể làm xây dựng lại bằng cách sử dụng dưới đây lệnhdevenv YourSolution.sln /rebuild
Abhineet

1
Ngoài ra, người ta có thể xây dựng lại cho chế độ phát hành hoặc gỡ lỗi bằng cách thêm gỡ lỗi hoặc phát hành sau một khoảng trống. Ví dụ: devenv YourSolution.sln /rebuild releasehoặcdevenv YourSolution.sln /rebuild debug
Abhineet

20

Thành thật mà nói, tôi phải thêm 2 xu của mình.

Bạn có thể làm điều đó với msbuild.exe . Có nhiều phiên bản của 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

Sử dụng phiên bản bạn cần. Về cơ bản bạn phải sử dụng cái cuối cùng.

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

Vậy phải làm như thế nào.

  1. Chạy COMMAND cửa sổ

  2. Nhập đường dẫn đến msbuild.exe

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

  1. Nhập đường dẫn đến giải pháp dự án như

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

  1. Thêm bất kỳ cờ nào bạn cần sau đường dẫn giải pháp.

  2. Nhấn ENTER

Lưu ý rằng bạn có thể nhận trợ giúp về tất cả các cờ như

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


6
Tôi thực sự thích làm thế nào bạn đã thêm các chi tiết cho các nhà phát triển mới như nơi để tìm msbuild, vv
Ayushmati

8

Sử dụng msbuildnhư những người khác đã chỉ ra hiệu quả cho tôi nhưng tôi cần phải làm nhiều hơn một chút. Trước hết, msbuildcần có quyền truy cập vào trình biên dịch. Điều này có thể được thực hiện bằng cách chạy:

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

Sau đó msbuildkhông có trong $ PATH của tôi vì vậy tôi phải chạy nó qua đường dẫn rõ ràng của nó:

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

Cuối cùng, dự án của tôi đang sử dụng một số biến như $(VisualStudioDir). Có vẻ như những thứ đó không được thiết lập bởi msbuildvậy tôi đã phải đặt chúng theo cách thủ công thông qua /propertytùy chọn:

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

Dòng đó cuối cùng đã cho phép tôi biên dịch dự án của mình.

Phần thưởng : có vẻ như các công cụ dòng lệnh không yêu cầu đăng ký sau 30 ngày sử dụng chúng như phiên bản Visual Studio Community dựa trên GUI "miễn phí". Với yêu cầu đăng ký của Microsoft, phiên bản đó hầu như không miễn phí. Free-as-in-facebook nếu có ...



3

DEVENV hoạt động tốt trong nhiều trường hợp, nhưng trên WIXPROJ để xây dựng trình cài đặt WIX của tôi, tất cả những gì tôi nhận được là lỗi "CATASTROPHIC" trong bản ghi Out.

Điều này hoạt động: MSBUILD /Path/PROJECT.WIXPROJ / t: Build / p: Configuration = Release

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.