Vị trí mặc định cho nhật ký MSBuild là gì?


101

Tôi đang sử dụng Visual Studio Express 2012. Vị trí của tệp nhật ký ở đâu? Tôi đã tìm kiếm trong thư mục lưu trữ giải pháp và dự án của mình, nhưng không thể tìm thấy bất kỳ tệp .log nào.

Đây là cấu hình để ghi nhật ký:

nhập mô tả hình ảnh ở đây


1
Không có tệp .log mặc định. Tìm trong cửa sổ Đầu ra.
Hans Passant

13
@Hans, Trong trường hợp của tôi, cửa sổ đầu ra có thông báo "có thêm thông tin trong nhật ký xây dựng." vì vậy có một bản ghi riêng ở đâu đó. Tôi vẫn chưa tìm thấy nó.
Brandon Kuczenski

Câu trả lời:


106

Tệp nhật ký từ Visual Studio chỉ được hỗ trợ cho các dự án C ++. Bạn chỉ phải làm việc với cửa sổ đầu ra cho những người khác.

Xem chủ đề tương tự này: VS2010: đầu ra đăng nhập bản dựng tối thiểu và tệp nhật ký đăng nhập chi tiết

Và trong trường hợp bạn tình cờ làm điều này cho một dự án C ++, tệp ở :

... bản ghi bản dựng trong thư mục tệp trung gian ... Đường dẫn và tên của bản ghi bản dựng được biểu thị bằng biểu thức macro MSBuild $(IntDir)\$(MSBuildProjectName).log,.


14
Tôi nghĩ điều đó thật ngớ ngẩn khi Visual Studio không đăng nhập chi tiết vào một tệp. Mà thôi, một thực tế mà tôi phải chấp nhận. Cám ơn câu trả lời của bạn, @Dmitry
Hanxue

8
@hanxue - Nó có nhật ký. Nhật ký đó chỉ không được gửi đến một tệp. Nếu bạn muốn có tệp nhật ký, hãy chạy msbuild từ dòng lệnh.
Ritch Melton

43
THEN tại sao nó không nói như vậy :-(
Simon_Weaver

2
Chúa Trời. Chết tiệt. Tại sao đây không chỉ là một thuộc tính trên giải pháp? Tại sao cửa sổ đầu ra có hiệu suất khủng khiếp như vậy, bạn buộc phải giữ nó ở mức đầu ra tối thiểu mọi lúc, và tại sao nó giống như 8 bước để thay đổi từ mức đầu ra này sang mức đầu ra khác? Xin vui lòng sửa chữa bất kỳ trong số này.
James

@James Tôi đoán bạn có thể viết macro và gán nó vào nút trên thanh công cụ. Các liên kết này có thể là một điểm bắt đầu stackoverflow.com/questions/12062515/...vlasovstudio.com/visual-commander
Dmitry Pavlov

23

Tài liệu msdn khá rõ ràng về điều này (Và bạn sẽ không thích nó!):

https://msdn.microsoft.com/en-us/library/jj651643.aspx

Nơi nó nói:

Để tạo tệp nhật ký bản dựng cho một dự án mã được quản lý Trên thanh menu, chọn Bản dựng, Giải pháp bản dựng.

Trong cửa sổ Đầu ra, đánh dấu thông tin từ bản dựng, sau đó sao chép nó vào Bảng tạm.

Mở trình soạn thảo văn bản, chẳng hạn như Notepad, dán thông tin vào tệp, sau đó lưu nó.


15
Tất cả đều tốt và tốt cho đến khi bạn đang sử dụng đầu ra chẩn đoán và VS quyết định đưa ra ngoại lệ 'hết bộ nhớ' khi bạn cố gắng sao chép vào khay nhớ tạm. Thực sự là một quyết định ngu ngốc về cơ bản khi không hỗ trợ gửi bản ghi xây dựng đến một tệp trong IDE. Nhưng hey ho, cuộc sống là vậy.
Steve Pettifer

1
Đưa bản dựng vào một tệp văn bản? msbuild mysln.sln> output.txt (có thể sẽ cần thêm các tham số vào đó để biên dịch sln của bạn, nhưng bạn sẽ có thể lấy nó từ cửa sổ xuất so với iirc ở mức độ chi tiết chính xác)
Daniel M

Thông thường, khi tôi xây dựng trên dòng lệnh, tôi làm cho hệ thống xây dựng của mình xuất thông tin tối thiểu ra cửa sổ đầu cuối, nhưng là một nhật ký chi tiết cho một tệp. MSBuild có thể làm được điều đó.
C Johnson

"Và bạn sẽ không thích nó!" Điều đó nói lên mọi thứ bằng 6 từ, cảm ơn
FIV

23

Sử dụng đầu ra bản dựng thay vì ghi vào tệp. Thay vì sao chép / dán, chỉ cần nhấp vào một nơi nào đó trong đầu ra và nhấn CTRL + S để lưu. Visual Studio sẽ nhắc bạn một vị trí (được thử nghiệm với Visual Studio 2017, nhưng tôi giả sử điều này cũng hoạt động trong các phiên bản trước đó).

nhập mô tả hình ảnh ở đây


Điều này là tốt. Họ cũng nên đặt nó trong menu ngữ cảnh.
Sheen

2

Mặc dù đúng là VS không cho phép điều này trực tiếp, nhưng vẫn có thể xây dựng bằng MSBuild "bên trong" VS2015 và lấy cả đầu ra cửa sổ xây dựng và tệp nhật ký, như sau: (Có thể cho rằng đây là một chút hack.)

  1. Trong giải pháp VS Managed của bạn, hãy thêm một dự án mới (Hãy gọi nó là 'Make'). a. Loại dự án bạn muốn là dự án Visual C ++ / NMake.
  2. Xác định các lệnh MSBuild bạn cần trên dòng lệnh (xem bên dưới).
  3. Thay đổi cấu hình giải pháp để xây dựng dự án NMake thay vì các dự án được quản lý thông thường.

Thao tác này sẽ tạo một dự án có các dòng lệnh Build, Rebuild và Clean, nơi bạn có thể thực thi MSBuild trực tiếp. Ví dụ:

Xây dựng lại: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean,Build

Xây dựng: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Build

Dọn dẹp: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean

Bạn cũng có thể chỉ định nhiều dòng lệnh MSBuild.EXE để xây dựng nhiều dự án. Đối với kết quả xây dựng-toàn bộ-giải pháp thông thường, bạn chỉ có thể nhắm mục tiêu các cụm cuối cùng và để biểu đồ phụ thuộc tạo ra các mục tiêu riêng lẻ.

Thao tác này sẽ tạo ra một tệp .log, trong đó NAME là tên của dự án NMake mà bạn đã sử dụng. Trong ví dụ trên, nhật ký sẽ là make.log.

Một ví dụ hoạt động có sẵn trên GitHub: https://github.com/bitblitz/VS_MsbuildExample (Đã thử nghiệm với VS2015)

Lưu ý rằng việc xây dựng các dự án riêng lẻ trực tiếp sẽ vẫn xây dựng với hành vi VS bình thường, nhưng bạn có thể xây dựng giải pháp đầy đủ bên trong VS và lấy nhật ký xây dựng.


1
Liên kết đến VS_MsbuildExample bị hỏng.
JPaget

Xin chào @brad, điều gì đã xảy ra với ví dụ của bạn trên GitHub?
Yann Duran

Đã sửa lỗi github, xin lỗi vì sự cố. @YannDuran
Brad
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.