การแก้ไขปัญหา 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 ใช้ความรู้นี้เพื่อปรับปรุงการทำงานของคุณและทำให้ประสบการณ์การพัฒนาของคุณราบรื่นยิ่งขึ้น!