2008-11-11 28 views
25

Điều này có lẽ dễ dàng nhưng tôi gặp khó khăn: khi tôi xây dựng một giải pháp trong Visual Studio - làm thế nào để trích xuất dòng cmd chính xác cho lệnh xây dựng hiện tại để có thể thực hiện cùng một bản dựng từ bảng điều khiển VisualStudio?Làm thế nào để có được lệnh xây dựng dòng cmd cho giải pháp VS?

Trong cửa sổ đầu ra tôi có thể thấy các dự án đơn lẻ trong các lệnh xây dựng giải pháp nhưng không phải là dự án cho toàn bộ giải pháp.

Tôi đang sử dụng VS2005.

Bất kỳ trợ giúp nào sẽ được đánh giá

Trả lời

13

Ngoài những gì @JohnIdol nói chính xác, tôi thấy bạn cần thiết lập một số biến môi trường VS. Tôi không có tên của tập tin thực thi trước mặt tôi, nhưng bạn có thể sửa đổi hoặc 'tôi nghĩ' sử dụng nó. Nó nằm trong cây tệp chương trình VS ở đâu đó. Ngoài ra, như tôi nhớ bạn không muốn được trong một vỏ tiêu chuẩn nhưng một vỏ thiết lập .NET cho một số đường dẫn và như vậy. Tôi sẽ thêm chi tiết sau khi tôi đang ở một máy tính Windows với VS.

EDIT: Tệp lô được đề cập là lối tắt trong menu ProgFiles. Đây là chi tiết về các thuộc tính của nó.

%comspec% /k ""C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat""x86" 

Đây là tệp bó của tôi, sử dụng MSBuild để gọi giải pháp.

@echo off 

:: setup VS2005 command line build environment 
set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8 
set VCINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8\VC 
set FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework 
set FrameworkVersion=v2.0.50727 
set FrameworkSDKDir=C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0 
set DevEnvDir=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE 
set PATH=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Com 
mon7\Tools;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin;C:\Program Files\Microsoft 
Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;%PATH% 
set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\Program Files\Microsoft Visual 
Studio 8\VC\PlatformSDK\include;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include;%INCLUDE% 
set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\VC 
\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB% 
set LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB 

echo %0 %* 
echo %0 %* >> %MrB-LOG% 
cd 
if not ""=="%~dp1" pushd %~dp1 
cd 
if exist %~nx1 (
     echo VS2005 build of '%~nx1'. 
     echo VS2005 build of '%~nx1'. >> %MrB-LOG% 
     set MrB-BUILDLOG=%MrB-BASE%\%MrB-WORK%.%MrB-NICEDATE%.%MrB-NICETIME%.build-errors.log 
     msbuild.exe %~nx1 /t:Rebuild /p:Configuration=Release > %MrB-BUILDLOG% 
     findstr /r /c:"[1-9][0-9]* Error(s)" %MrB-BUILDLOG% 
     if not errorlevel 1 (
       echo ERROR: sending notification email for build errors in '%~nx1'. 
       echo ERROR: sending notification email for build errors in '%~nx1'. >> %MrB-LOG% 
       call mrb-email "Mr Build isn't happy about build errors in '%~nx1'" %MrB-BUILDLOG% 
     ) else (
       findstr /r /c:"[1-9][0-9]* Warning(s)" %MrB-BUILDLOG% 
       if not errorlevel 1 (
         echo ERROR: sending notification email for build warnings in '%~nx1'. 
         echo ERROR: sending notification email for build warnings in '%~nx1'. >> %MrB-LOG% 
         call mrb-email "Mr Build isn't happy about build warnings in '%~nx1'" %MrB-BUILDLOG% 
       ) else (
         echo Successful build of '%~nx1'. 
         echo Successful build of '%~nx1'. >> %MrB-LOG% 
       ) 
     ) 
) else (
     echo ERROR '%1' doesn't exist. 
     echo ERROR '%1' doesn't exist. >> %MrB-LOG% 
) 
popd 
+0

cảm ơn điều này thực sự hữu ích – JohnIdol

3

Bạn có thể bắt đầu msbuild từ dòng lệnh. msbuild hiểu các tệp .sln (giải pháp). Bạn có thể chỉ định tệp .sln và cấu hình xây dựng (gỡ lỗi, phát hành, v.v.) từ dòng lệnh.

http://msdn.microsoft.com/en-us/library/ms164311.aspx
Đây là tài liệu về những gì bạn có thể làm với msbuild. MSBuild.exe được cài đặt với khung .net, không phải với studio trực quan. Bạn có thể tìm thấy nó trong c: \ windows \ microsoft.net \ framework \ v3.5 (hoặc v2.0.50727)

Tôi tìm kiếm một chút và thấy rằng bạn cũng có thể thực hiện xây dựng dòng lệnh bằng studio trực quan bằng cách sử dụng devenv. exe/build, thông tin thêm tại đây:
http://msdn.microsoft.com/en-us/library/xee0c8y7(VS.80).aspx

+0

sửa bài viết của tôi có liên hệ với nhiều thông tin chiều sâu. – Mendelt

+0

thanks - Tôi đã tìm kiếm thêm một cách để có được một dòng lệnh cụ thể (mà các thông số VS sử dụng khi thực hiện msbuild) – JohnIdol

3

Nếu bạn muốn xem dòng lệnh chính xác theo quy định của VS (chứ không phải là làm việc nó ra) sau đó bạn có thể thử thay thế msbuild.exe với ứng dụng giao diện điều khiển của riêng bạn mà in ra tất cả các thông số vào một tập tin .

Bạn cũng có thể viết ra tất cả các biến môi trường được cung cấp để kiểm tra xem biến VS nào cung cấp ở chế độ nền.

19

Điều hướng đến menu Chương trình> Microsoft Visual Studio 2005> Công cụ Visual Studio>Visual Studio 2005 Command Prompt.

Dấu nhắc lệnh này có tất cả các biến môi trường .NET cần thiết được đặt cho phiên dòng lệnh. Bạn có thể thay đổi thư mục vào thư mục giải pháp của bạn (ví dụ c: \ dự án \ mySolution) và chạy

Msbuild.exe mySolution.sln 

Bạn có thể thấy các tùy chọn khác nhau có sẵn sử dụng msbuild /?

Msbuild tọa lạc tại C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727

Ngày đầu msbuild /?kiểm tra nhanh tùy chọn, bạn có thể tham khảo trang MSBuild Command Line Reference để biết thêm giải thích về cách sử dụng của nó. Và how to build specific targets in solutions.

+2

yep - nhưng làm cách nào để tìm ra chính xác tùy chọn nào đang được sử dụng khi tôi chạy xây dựng thủ công? – JohnIdol

+0

Chỉnh sửa để biết thêm thông tin cho bạn. – icelava

+0

Làm việc cho VS2010. http://blogs.msdn.com/b/vcblog/archive/2010/01/11/vcbuild-vs-c-msbuild-on-the-command-line.aspx –

5

Đối với VS .NET 2003, bạn có thể sử dụng devenv.exe để xây dựng giải pháp/dự án từ dòng lệnh.

devenv solutionfile.sln /build solutionconfig 

Ví dụ: sử dụng trong tệp hàng loạt:

call "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat" 

devenv Tools.sln /build "Release" 
+0

Ha ... tuyệt vời của nó như thế nào thêm rằng " gọi "từ khóa thay đổi hành vi! Lol sai lầm ngớ ngẩn trên một phần của tôi. Cảm ơn! –

+0

Điều này cũng làm việc cho Visual Studio 2005 nhưng tập tin vsvars32.bat được đặt tại: C: \ Program Files \ Microsoft Visual Studio 8 \ Common7 \ Tools –

4

Tôi chỉ muốn cảm ơn Bejoy về ví dụ. Tôi đã có vấn đề lớn với giải pháp xây dựng lại trên thiết lập sự kiện xây dựng trước bởi vì họ đã loại bỏ hầu hết các macro và điều này đã giúp tôi rất nhiều.

Đây là giải pháp của tôi dựa trên Bejoy của (xem xét rằng .bat tập tin nằm trong thư mục gốc cài đặt mà là một phần của giải pháp):

call "%VS100COMNTOOLS%\vsvars32.bat" 

devenv "%CD%\..\soulutionfile.sln" /build "Release" 
Các vấn đề liên quan