ข้ามไปที่เนื้อหาหลัก

[C# .net Win App] Show Publish Version ที่ Title Bar

               ในกรณีที่เราทำ Windows application ในรูปแบบที่ Publish ออกมาเป็น “Clickone”
ถ้าเราต้องการที่จะให้ Version แสดงที่ Title bar อัตโนมัติ จะทำอย่างไร เรามีวิธีครับ

Using สองตัวนี้ก่อน
Code:
using System.Xml;
using System.Reflection;

ในส่วนของ Public Class นอกสุดให้ประกาศตัวแปรไว้ เป็นชนิด Version ชื่อ myVersion
Code:
Version myVersion;

ในส่วนของ Function  หลักFormLogin (ทดลองทำที่หน้า Login) หลังจาก InitializeComponent();
ก็ให้เราเรียกใช้ Function GetPublishedVersion() ได้ผลลัพธ์ เก็บที่ myVersion
โดยค่าที่ได้จะมาในรูปแบบ ของ
myVersion.Major.ToString();
myVersion.Minor .ToString();
myVersion.Build.ToString();
myVersion.Revision.ToString();
เรียงลำดับ โดยเราจะนำมาใส่ค่า Text ของ Table โดยใช้
this.Text = "Program v" + myVersion.Major.ToString() + "." + myVersion.Minor.ToString() + "." + myVersion.Revision.ToString();

Code:
public FormLogin()
        {
            InitializeComponent();
            myVersion = GetPublishedVersion();
            this.Text = "Program v" + myVersion.Major.ToString() + "." + myVersion.Minor.ToString() + "." + myVersion.Revision.ToString();
        }

ใช้ Function นี้  GetPublishedVersion() Copyไปเลยไม่ต้องแก้ไขอะไร
ก็
Copy ไปวางไว้ที่ Formนั้น หรือทำเป็น Class กลางเพื่อความง่านในการเรียกใช้ใน Form อื่นๆ

Code:
//** return type Version
        public static Version GetPublishedVersion()
        {
            XmlDocument xmlDoc = new XmlDocument();
            Assembly asmCurrent = System.Reflection.Assembly.GetExecutingAssembly();
            string executePath = new Uri(asmCurrent.GetName().CodeBase).LocalPath;

            xmlDoc.Load(executePath + ".manifest");
            string retval = string.Empty;
            if (xmlDoc.HasChildNodes)
            {
                retval = xmlDoc.ChildNodes[1].ChildNodes[0].Attributes.GetNamedItem("version").Value.ToString();
            }
            return new Version(retval);
        }



ลองดูนะครับได้มั้ย
มีคำถามอะไรฝากไว้ได้ครับ
^^

อ้างอิง
โดยคุณ Stakx

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

เชื่อมเหล็กฉุกเฉิน ใช้แค่แบต2ลูกกับสายพ่วงแบต และเหล็กเชื่อม

เอามาฝากครับ จากเว็บท่องไพรนะครับ น่าสนใจดี เผื่อฉุกเฉิน ใครจะคิดบ้างว่า "แบตเตอรี่รถยนต์" จะมีประโยชน์ใช้สอยที่มากกว่าการเป็นแหล่งเก็บพลังงานไฟฟ้าและต้นกำเนิด ไฟฟ้าที่ไว้ใช้ในรถยนต์ วันนี้อยากจะขอนำเสนอความอเนกประสงค์ของแบตเตอรี่อีกรูปแบบหนึ่งในการนำมา ประ ยุกต์ใช้เป็นเครื่องเชื่อมไฟฟ้า เผื่อยามว่างอยากจะซ่อมเชื่อมเครื่องใช้ในภายในบ้าน หรือกับการซ่อมแซมรถก็สามา- รถ ทำได้ด้วยตนเอง 1. พระเอกของฉบับนี้ แบตเตอรี่อย่างน้อย 2 ลูก สำหรับ เป็นแหล่งกำเนิดกระแสไฟ    2. สายพ่วงแบตเตอรี่ อันนี้อาจหาหยิบยืมเพื่อน บ้านมาใช้ก่อนก็ได้ (ใช้เสร็จแล้วอย่าลืมคืน) ควรมีสัก 3 เส้น สำหรับการใช้ทำเครื่องเชื่อมเหล็ก     3. อันนี้เพื่อการจำ ไม่ให้สับสนเกี่ยวกับขั้วของแบตเตอรี่ ตามหลักสากลแล้วสายไฟของขั้วลบ หรือสายกราวนด์ จะใช้สีดำแทนขั้ว ทั้งนี้ เพื่อป้องกันการสับสน ส่วนสายสีอื่นให้ใช้แทนขั้วบวกได้ จะได้ไม่สับสน 4. อันนี้เขาเรียกว่าลวดเชื่อมแบบไฟฟ้า ลักษณะคล้ายธูป ที่เราใช้ไหว้พระ ข้อแตกต่างระหว่างลวดเชื่อม แบบใช้ แก๊สและไฟฟ้าคือ ลวดเชื่อมแบบใช้แก๊สจะเป็นลวดโลหะ ที่ไม่มีการเคลื...

[SQL SERVER] ตัด 0 นำหน้าในตัวแปร Varchar

ตัด 0 นำหน้าในตัวแปร Varchar ผมได้เจอปัญหาว่าบางครั้งการแปลงข้อมูลตัวเลขเช่นเดือน Month = ‘02’ เมื่อต้องการเอามาใช้งานหรือเข้าสูตรต่อ โดยให้ Type Varchar เช่นเดิมนั้นเกิดปัญหา เพราะแหล่งข้อมูลที่เข้ามามีทั้ง ‘04’ และ ‘4’ ไปเจอที่ http://blog.sqlauthority.com/ 2012/11/19/ sql-server-removing-leading-zeros-from-column-in-table/ ของตาพิเนา....ตามนี้ ******************************************************** Code:             SUBSTRING ( ชื่อ Cloumn ,   PATINDEX ( '%[^0 ]%' ,   ชื่อ Cloumn +   ' ' ),   LEN ( ชื่อ Cloumn )) ******************************************************** ตัวอย่าง : USE   tempdb GO -- Create sample table CREATE TABLE   Table1   ( Col1   VARCHAR ( 100 )) INSERT INTO   Table1   ( Col1 ) SELECT   '0001' UNION   ALL SELECT   '000100' UNION   ALL SELECT   '100100' UNION   ALL SELECT   '000 0001' ...

[C# .net WinApp] Solved error : An error occurred during local report processing

C# .net 4.0 rdlc report   Solved error : An error occurred during local report processing พบปัญหาเมื่อ run rdlc report แล้ว Error ตามด้านบน ที่ผมเจอคือ เมื่อ Run debug ไม่พบ Error แต่พอ publish ออกมากลับ Error แก้ไขโดย 1. ไปที่ ไฟล์ .rdlc report ของเรา คลิ๊กขวา Properties   ที่ Build Action: เปลี่ยนจาก Embedded Resource เป็น Content ลอง publish แล้วทดสอบดูอีกครั้งครับ