การแก้ไขปัญหา CCNetArtifactDirectory
ใน CruiseControl.net
การตั้งค่าระบบการสร้างอัตโนมัติอาจเป็นเรื่องท้าทาย โดยเฉพาะเมื่อมีการตั้งค่าที่เฉพาะเจาะจงกับแพลตฟอร์ม ความท้าทายหนึ่งที่นักพัฒนาพบคือการรวม CruiseControl.net
กับงาน MSBuild
โพสต์บล็อกนี้มุ่งหวังที่จะชี้แจงวิธีการใช้งาน CCNetArtifactDirectory
อย่างมีประสิทธิภาพ เพื่อให้แน่ใจว่าผลลัพธ์การสร้างของคุณถูกจัดการอย่างถูกต้องโดยไม่ต้องดัดแปลงไฟล์โครงการโดยไม่จำเป็น
การทำความเข้าใจกับปัญหา
คุณอาจพบปัญหาในขณะตั้งค่า CruiseControl.net ที่เกี่ยวข้องกับการกำหนดค่าของงาน MSBuild
คำถามหลักที่นี่คือ:
ฉันจะใช้งาน
CCNetArtifactDirectory
ใน MSBuild อย่างมีประสิทธิภาพโดยไม่ทำให้เกิดข้อผิดพลาดในกระบวนการสร้างของฉันได้อย่างไร?
ความสับสนเกิดขึ้นเพราะแม้ว่า CCNetArtifactDirectory
ควรจะถูกส่งไปยัง MSBuild โดยอัตโนมัติ ผู้ใช้หลายคนพบว่าพวกเขาไม่สามารถอ้างถึงมันอย่างถูกต้องในอาร์กิวเมนต์การสร้างของพวกเขา ข้อผิดพลาดที่พบบ่อยที่คุณอาจเห็นคือ:
ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: การอ้างอิงไปยังสัญลักษณ์ที่ไม่รู้จัก CCNetArtifactDirectory
ให้เราลงลึกไปที่วิธีแก้ปัญหา
วิธีแก้ปัญหา
อย่ากังวลเกี่ยวกับ CCNetArtifactDirectory
ข่าวดีคือคุณไม่จำเป็นต้องกำหนด CCNetArtifactDirectory
โดยตรงในคำสั่ง MSBuild ของคุณ โดยค่าเริ่มต้น CruiseControl.net จะส่งไดเรกทอรีนี้ไปยัง MSBuild ซึ่งจะดูแลการวางผลลัพธ์การสร้างในตำแหน่งที่เหมาะสมตามไดเรกทอรีการทำงานที่ระบุในกำหนดการของคุณ
นี่คือตัวอย่างของการกำหนดค่า:
<executable>c:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\data\projects\FooSolution\</workingDirectory>
<projectFile>FooSolution.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug</buildArgs>
ตำแหน่งที่ตั้งของผลลัพธ์
การใช้การกำหนดค่าด้านบน ผลลัพธ์จากการสร้างของคุณจะถูกส่งไปยัง:
C:\data\projects\FooSolution\[ProjectName]\bin\Debug
นั่นหมายความว่าผลิตภัณฑ์กำลังถูกสร้างขึ้นอย่างถูกต้องโดยที่คุณไม่ต้องกังวลเกี่ยวกับการระบุ CCNetArtifactDirectory
การปรับแต่งตำแหน่งที่ตั้งของผลลัพธ์
อย่างไรก็ตาม หากคุณต้องการนำผลลัพธ์ไปยังตำแหน่งที่แตกต่าง คุณสามารถทำได้ผ่านส่วน <publishers>
ของการกำหนดค่า CruiseControl.net ของคุณ
นี่คือวิธีการปรับแต่งไดเรกทอรีผลลัพธ์:
<publishers>
<xmllogger />
<buildpublisher>
<sourceDir>C:\data\projects\FooSolution\FooProject\bin\Debug</sourceDir>
<publishDir>C:\published\FooSolution\</publishDir>
<useLabelSubDirectory>false</useLabelSubDirectory>
</buildpublisher>
</publishers>
ในตัวอย่างการกำหนดค่า:
sourceDir
: ระบุไดเรกทอรีที่ MSBuild จะใช้เผยแพร่ผลิตภัณฑ์publishDir
: กำหนดจุดหมายที่จะเผยแพร่ผลลัพธ์การสร้างuseLabelSubDirectory
: ตัวเลือกนี้สามารถสลับการเปิดหรือปิดการรวมไดเรกทอรีป้ายกำกับในเส้นทางการเผยแพร่ของคุณได้
สรุป
การรวม CruiseControl.net กับ MSBuild ไม่จำเป็นต้องเป็นงานที่น่ากลัว โดยการรับรู้ว่าคุณไม่จำเป็นต้องอ้างอิง CCNetArtifactDirectory
โดยตรง คุณสามารถทำให้กระบวนการสร้างของคุณมีประสิทธิภาพมากขึ้น หากคุณจำเป็นต้องเปลี่ยนเส้นทางผลลัพธ์การสร้าง เพียงแค่กำหนดส่วน <publishers>
ตามต้องการ
ด้วยวิธีแก้ปัญหาเหล่านี้ในมือ คุณจะพร้อมมากขึ้นในการจัดการการกำหนดค่าการสร้างอัตโนมัติของคุณอย่างราบรื่น
นี่คือการทบทวนของเราเกี่ยวกับการจัดการปัญหา CCNetArtifactDirectory
ใน CruiseControl.net เมื่อใช้ MSBuild ใช้ความรู้นี้เพื่อปรับปรุงการทำงานของคุณและทำให้ประสบการณ์การพัฒนาของคุณราบรื่นยิ่งขึ้น!