ตำแหน่งเริ่มต้นสำหรับบันทึก MSBuild คืออะไร


102

ฉันใช้ Visual Studio Express 2012 ตำแหน่งของล็อกไฟล์อยู่ที่ไหน ฉันค้นหาในโฟลเดอร์ที่จัดเก็บโซลูชันและโปรเจ็กต์ของฉันแล้ว แต่ไม่พบไฟล์. log ใด ๆ

นี่คือการกำหนดค่าสำหรับการบันทึก:

ป้อนคำอธิบายภาพที่นี่


1
ไม่มีไฟล์. log เริ่มต้น ดูในหน้าต่างผลลัพธ์
Hans Passant

13
@ ฮันในกรณีของฉันหน้าต่างผลลัพธ์มีข้อความว่า "มีข้อมูลเพิ่มเติมในบันทึกการสร้าง" ดังนั้นจึงมีบันทึกแยกกันอยู่ที่ไหนสักแห่ง ฉันยังไม่พบมัน
Brandon Kuczenski

คำตอบ:


108

ไฟล์บันทึกจาก Visual Studio รองรับเฉพาะโปรเจ็กต์ C ++ คุณต้องทำงานกับหน้าต่างผลลัพธ์สำหรับผู้อื่น

ดูเธรดที่คล้ายกันนี้: VS2010: เอาต์พุตล็อกอินบิลด์ขั้นต่ำและล็อกอินล็อกไฟล์โดยละเอียด

และในกรณีที่คุณทำเช่นนี้กับโปรเจ็กต์ C ++ ไฟล์จะอยู่ที่ :

... สร้างบันทึกในสมุดไฟล์กลาง ... เส้นทางและชื่อของการสร้างบันทึกที่เป็นตัวแทนจากการแสดงออกแมโคร $(IntDir)\$(MSBuildProjectName).logMSBuild,


15
ฉันคิดว่าเป็นเรื่องโง่ของ Visual Studio ที่ไม่มีการบันทึกรายละเอียดในไฟล์ โอ้ความเป็นจริงฉันต้องยอมรับ ขอบคุณสำหรับคำตอบ @Dmitry
Hanxue

8
@hanxue - มันมีบันทึก บันทึกนั้นจะไม่ถูกส่งไปยังไฟล์ หากคุณต้องการล็อกไฟล์ให้รัน msbuild จากบรรทัดคำสั่ง
Ritch Melton

47
แล้วทำไมถึงไม่พูดว่า :-(
Simon_Weaver

2
พระเจ้า. เหี้ย. เหตุใดจึงไม่เป็นเพียงคุณสมบัติในการแก้ปัญหา เหตุใดหน้าต่างเอาต์พุตจึงมีประสิทธิภาพที่แย่มากดังนั้นคุณจึงถูกบังคับให้เก็บไว้ที่เอาต์พุตน้อยที่สุดตลอดเวลาและเหตุใดจึงมี 8 ขั้นตอนในการเปลี่ยนจากระดับเอาต์พุตหนึ่งไปเป็นอีกระดับหนึ่ง โปรดแก้ไขสิ่งเหล่านี้
James

@ เจมส์ฉันเดาว่าคุณสามารถเขียนมาโครและกำหนดให้กับปุ่มแถบเครื่องมือได้ ลิงก์เหล่านี้อาจเป็นจุดเริ่มต้นstackoverflow.com/questions/12062515/…และvlasovstudio.com/visual-commander
Dmitry Pavlov

26

ใช้สร้างเอาต์พุตแทนการบันทึกลงไฟล์ แทนที่จะคัดลอก / วางเพียงคลิกที่ใดที่หนึ่งในผลลัพธ์แล้วกด CTRL + S เพื่อบันทึก Visual Studio จะแจ้งให้คุณทราบตำแหน่ง (ทดสอบด้วย Visual Studio 2017 แต่ฉันคิดว่าสิ่งนี้ใช้ได้ในเวอร์ชันก่อนหน้าด้วย)

ป้อนคำอธิบายภาพที่นี่


ดีจัง. พวกเขาควรใส่สิ่งนี้ในเมนูบริบทด้วย
Sheen

23

เอกสาร msdn ค่อนข้างชัดเจนเกี่ยวกับเรื่องนี้ (และคุณจะไม่ชอบมัน!):

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

ที่กล่าวว่า:

ในการสร้างไฟล์บันทึกการสร้างสำหรับโครงการรหัสที่มีการจัดการบนแถบเมนูให้เลือกสร้าง, สร้างโซลูชัน

ในหน้าต่างผลลัพธ์ให้ไฮไลต์ข้อมูลจากโครงสร้างจากนั้นคัดลอกไปที่คลิปบอร์ด

เปิดโปรแกรมแก้ไขข้อความเช่น Notepad วางข้อมูลลงในไฟล์แล้วบันทึก


17
ซึ่งทั้งหมดดีและดีจนกว่าคุณจะใช้เอาต์พุตการวินิจฉัยและ VS ตัดสินใจที่จะยกเลิกข้อยกเว้น 'หน่วยความจำไม่เพียงพอ' เมื่อคุณพยายามคัดลอกไปยังคลิปบอร์ด เป็นการตัดสินใจที่โง่เง่าโดยพื้นฐานที่ไม่สนับสนุนการส่งบันทึกการสร้างไปยังไฟล์ใน IDE แต่เดี๋ยวก่อนนี่คือชีวิต
Steve Pettifer

1
บีบบิวด์ลงในไฟล์ข้อความ? msbuild mysln.sln> output.txt (อาจจะต้องเพิ่มพารามิเตอร์เพื่อให้ sln ของคุณคอมไพล์ แต่คุณควรจะสามารถขัดขวางจากหน้าต่าง vs เอาต์พุต iirc ในระดับ verbosity ที่ถูกต้อง)
Daniel M

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

"และคุณจะไม่ชอบมัน!" ที่บอกทุกอย่างเป็น 6 คำขอบคุณ
FIV

2

แม้ว่า VS จะไม่อนุญาตโดยตรง แต่ก็ยังคงเป็นไปได้ที่จะสร้างด้วย MSBuild "inside" VS2015 และรับทั้งเอาต์พุตหน้าต่างบิลด์และไฟล์บันทึกดังต่อไปนี้: (อาจเป็นเพียงการแฮ็กเล็กน้อย)

  1. ในโซลูชันที่มีการจัดการ VS ของคุณให้เพิ่มโปรเจ็กต์ใหม่ (เรียกว่า 'สร้าง') ก. ประเภทโครงการที่คุณต้องการคือโครงการ Visual C ++ / NMake
  2. กำหนดคำสั่ง MSBuild ที่คุณต้องการในบรรทัดคำสั่ง (ดูด้านล่าง)
  3. เปลี่ยนคอนฟิกูเรชันโซลูชันเพื่อสร้างโปรเจ็กต์ NMake แทนโปรเจ็กต์ที่มีการจัดการตามปกติ

สิ่งนี้จะสร้างโปรเจ็กต์ที่มีบรรทัดคำสั่ง Build, Rebuild และ Clean ซึ่งคุณสามารถรัน MSBuild ได้โดยตรง ตัวอย่างเช่น:

สร้างใหม่: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean,Build

สร้าง: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Build

ทำความสะอาด: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean

คุณยังสามารถระบุบรรทัดคำสั่ง MSBuild.EXE หลายบรรทัดเพื่อสร้างหลายโปรเจ็กต์ สำหรับผลลัพธ์การสร้างโซลูชันทั้งหมดตามปกติคุณสามารถกำหนดเป้าหมายเฉพาะชุดประกอบสุดท้ายสุดท้ายและปล่อยให้กราฟการอ้างอิงสร้างเป้าหมายแต่ละรายการ

สิ่งนี้จะสร้างไฟล์. log โดยที่ NAME คือชื่อของโปรเจ็กต์ NMake ที่คุณใช้ ในตัวอย่างด้านบนบันทึกจะเป็น make.log

ตัวอย่างการทำงานมีอยู่ใน GitHub: https://github.com/bitblitz/VS_MsbuildExample (ทดสอบกับ VS2015)

โปรดทราบว่าการสร้างแต่ละโครงการโดยตรงจะยังคงสร้างด้วยพฤติกรรม VS ปกติ แต่คุณสามารถสร้างโซลูชันทั้งหมดภายใน VS และรับบันทึกการสร้างได้


1
ลิงก์ไปยัง VS_MsbuildExample เสีย
JPaget

เฮ้ @brad เกิดอะไรขึ้นกับตัวอย่างของคุณใน GitHub?
Yann Duran

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