การสาธิตการกำหนดเวอร์ชัน
ตัวอย่างวิธีในเวอร์ชันโปรเจ็กต์ .NET Core ทั้งที่มีและไม่มีการปรับใช้แบบต่อเนื่อง (CD)
หากคุณโคลนไซต์นี้และเรียกใช้ภายในเครื่องในโหมดแก้ไขข้อบกพร่องและเผยแพร่ คุณจะเห็นผลลัพธ์ที่แตกต่างออกไป คุณสามารถเยี่ยมชมเวอร์ชันสดได้ที่ https://versioningdemos.azurewebsites.net/ ซึ่งได้ส่งผ่าน Git และ VSTS ของฉันเพื่อสร้างข้อมูลเวอร์ชัน
คุณจะสังเกตเห็นว่า Microsoft มีกลยุทธ์การกำหนดเวอร์ชันที่แตกต่างกันภายในไลบรารี .Net ของตนเอง ซึ่งสันนิษฐานว่าไม่ได้มาจากทีมเดียวกัน
โดยทั่วไปมี 3 เวอร์ชันที่อ้างอิงภายในแอสเซมบลี .NET Core
- File Version - ใช้เพื่อดูว่า DLL ใดเป็นรุ่นหลัง
- มันมีรูปแบบ xybr ที่ปกติถือว่าเป็น Major.Minor.Build.Revision
- เวอร์ชันผลิตภัณฑ์ - หรือที่เรียกว่า InformationalVersion ภายในแอสเซมบลี นี่คือเวอร์ชันข้อความรูปแบบอิสระที่ใช้เพื่อวัตถุประสงค์ในการอธิบาย
- ปัจจุบันรูปแบบของสิ่งนี้มีแนวโน้มที่จะเป็นไปตามรูปแบบการกำหนดเวอร์ชันเชิงความหมาย (นำเสนอโดย GitHub)
- xyp-buildinfo Major.Minor.Patch [-ข้อมูลเมตา]
- คุณสามารถอ่านเพิ่มเติมได้ที่ semver.org
- Assembly Version - เวอร์ชันของ Assembly
วิธีการปกติที่คุณเห็นในการดึงข้อมูลเวอร์ชันจะใช้ได้กับกรณีการใช้งานบางกรณีเท่านั้น และจะแตกสลายเมื่อวางไว้ในไลบรารี
โครงการตัวอย่างเวอร์ชัน
โปรเจ็กต์ทั้งหมดเหล่านี้ใช้ไฟล์ .vbproj (อาจเป็น .csproj ก็ได้) แทนที่จะเป็นเทคนิคก่อนหน้านี้ที่ใช้ AssemblyInfo.cs หรือ project.json
ไม่มีการตั้งค่า - ค่าเริ่มต้น
การตั้งค่า - ด้วยตนเอง
การใช้ Visual Studio UI (คุณสมบัติของโครงการ / แพ็คเกจ)
- แม้ว่าคุณจะไม่ได้ใช้สิ่งนี้เพื่อตั้งค่าข้อมูล ก็จะแสดงค่าที่คำนวณได้
- ระวังอย่าแทนที่ค่าที่คำนวณจากที่อื่นโดยไม่ตั้งใจ
- กำลังแก้ไข
.csproj
การตั้งค่าทั้งหมด - Manual.AllDifferent
- การใช้ Visual Studio UI
- กำลังแก้ไข
.csproj
เพียงใช้ VersionPrefix - VersionPrefix
VersionSuffix - VersionSuffix
BuildRevision - BuildRevision
- ทำซ้ำการสร้างและแก้ไขไวด์การ์ดโดยใช้ลอจิกรูปแบบเวอร์ชันของโรสลิน
- ใช้การคำนวณในไฟล์ csproj
BuildDateTime - BuildDateTime
- ใช้ x.YYYY.MDD.HHMM เพื่อสร้างค่าอัตโนมัติ
การสร้างบริการทีม Visual Studio - VSTS
- เพิ่ม BUILDNUMBER ที่กำหนดค่าจาก VSTS ไปยัง VersionSuffix
Visual Studio Team Services สร้างด้วยสาขา Git - VSTS.WithGit
- เพิ่มสาขา Git ลงใน Version Suffix เช่นกัน
ผู้ช่วยแท็ก
เมื่อใช้ Taghelpers จะมี Gotcha อยู่หลายตัว
- หน้าต่างๆ จะถูกจัดวางในแอสเซมบลีที่แตกต่างจากที่คุณคาดหวัง
- การรันใน Debug หรือ Release อาจให้ค่าที่แตกต่างกันและแอสเซมบลีที่สร้างขึ้น
- การวาง TagHelper ในไลบรารีภายนอกจะเปลี่ยนผลลัพธ์ของแอสเซมบลีที่ทำงานอยู่ในปัจจุบัน