Category dotnet

บันทึก Migrate .NET Framework > .NET6

Blog นี้เขียนดองมานานมาก ตั้งแต่กลางปีที่แล้ว แล้วค้างไปทำเรื่องอื่นๆ ตอนนี้จะเปิดตัว .NET8 แล้ว ถ้ารออีก อาจจะได้แชร์ปีปลายปีหน้าแทน 555 เลยคิดว่า เขียนให้หมดดีกว่า เดี๋ยวลืม Stage แรก เป็นส่วนของการเริ่มต้นเลย ตอนแรก Code มันจะยุ่งเหยิงนิดนึง แยกให้เป็นส่วนๆ นอกจากจัดกลุ่มตาม DLL ผมเอาตัว Layer Architecture มาช่วยได้ โดยแบ่งหน้าที่ ต้องคุยตามชั้นจากบน ลงล่าง ซึ่งมีรายละเอียดดังนี้ Stage1 แยก Logic ที่มันมั่วๆ มาปน UI Code-Behide / Controller มาแตกเป็น…

XRLabel ตัดคำไทยผิดเมื่อ Export PDF

ช่วงนี้มีช่วยน้องแก้ไข Report ที่ทำด้วย DevExpress ครับ แล้วที่นี้มันเจอปัญหากับภาษาไทย ในเคสที่ว่าถ้ามีข้อความยาวๆ มันตัดได้ไม่ถูกต้องครับ มันจะแหว่งๆ แทน ตามตัวอย่างด้านล่าง เวลาเจอประโยคยาวๆ ที่ไม่มี Space เว้นวรรค มันจะตัดคำแปลกๆ ถ้าใครที่ทำพวกเอกสารคงหงุดหงิด ใน MS Word มันมี Thai Distributed ทำไมไม่ทำ อะไรประมาณนี้ – Forward Contract คือสัญญาที่ลูกค้าและธนาคารตกลงซื้อเงินตราต่างประเทศสกุลหนึ่ง และขายเงินตราต่างประเทศอีกสกุลหนึ่ง โดยกำหนดจำนวนเงิน สกุลเงิน อัตราแลกเปลี่ยน และวันที่ทำการส่งมอบล่วงหน้าที่แน่นอน ซึ่งอัตราแลกเปลี่ยนล่วงหน้าที่กำหนดนั้น ไม่ใช่อัตราตลาดในอนาคต โดยในวันที่ทำการส่งมอบ อัตราแลกเปลี่ยนล่วงหน้าอาจสูงหรือต่ำกว่าอัตราแลกเปลี่ยนในตลาด ณ วันที่ส่งมอบก็ได้…

[C#] ลองใช้งานตัว DebuggerDisplayAttribute

.NET Core

หลายครั้ง เราอยากดูค่าของ Property ต่างๆ ใน Object ที่สนใจ เมื่อก่อนเราต้องมาไล่ดูทีละตัว ซึ่งมันไม่สะดวกเลยครับ ตามรูปด้านล่างเลย หรือ ถ้า Advance ขึ้นมาหน่อยใช้วิธี Override ToString() เอาครับ ซึ่งมันตอบโจทย์ระดับนึง แต่ถ้าเราต้องการใช้ ToString() ในเคสอื่นๆหละมันไม่จะไปขัดกับตอนแรกที่ทำ เพื่อจะ Debug ครับ DebuggerDisplayAttribute พระเอกของเราครับ เจ้าตัว DebuggerDisplayAttribute เอามาช่วยให้เราดูค่าของ property ที่ใช้ประจำได้สะดวกขึ้น โดยเพิ่ม Attribute นี้ที่หัวของ Class และกำหนด Property + Expression ที่ต้องการแสดงครับ…

บันทึกการปรับ format data ที่ใช้รับส่งผ่าน TCP จาก BinaryFormatter มาเป็น JSON แทน

เรื่องมีอยู่ว่ามี Code เก่าอยู่ชุดนึงที่ใช้ TCPClient+TcpListener ส่ง Data ระหว่าง App กัน โดยก่อนจะส่งใช้ตัว BinaryWriter + BinaryFormatter อย่างที่หลายคนน่าจะทราบกันตัว BinaryFormatter จะถูกเอาออกใน .NET8 ถาวร เนื่องจากเรื่องของความปลอดภัย ตอนนี้ยังใช้ได้อยู่นะ แต่เจ็บแล้ว ทำทีเดียวให้จบเลยดีกว่า และไม่อยากมาแก้ไขเยอะ เพราะยังมีบางส่วนทียังเป็น .NET 4.7.2 และไป .NET6 ต่อไม่ได้อย่าง VSTO ด้วย ภาพรวมเป็นตามนี้เลยครับ Code เดิม – Client Snippet – Server Snippet…

TCP + JSON บน Windows7 แล้ว JSON แหว่งง

.NET Core

วันนี้เจอเคสแปลกครับ น้องที่อยู่ Onsite แจ้งว่าตัว VSTO Office Add-ins ที่ Run บน Windows 7 เจอ Error ไม่สามารถ Deserialize JSON ได้ครับ สำหรับผมเอ๊ะ มันมีอะไรผิดไปหว่า จำได้ว่าตอน Migrate .NET6 ตัว ตัว VSTO Office AddIns ผมได้ทดสอบบน Windows 8.1 / 10 / 11 เรียบร้อยตาม Environment ที่ลูกค้าแจ้งสามารถทำงานได้ครับ แต่ทว่าดันมีเคสเกิดขึ้นกับ Windows…

[.NET] บันทึกการจัดการ NuGet ที่ต้องแยกเฉพาะตาม Platform ครับ

เนื่องจากมีบาง NuGet ที่มันมีความพิเศษ แม้ตัว .NET Core / .NET 5++ มันจะใช้ได้แบบ Cross Platform แล้ว แต่มันมี Third Party บางตัว มันจะยังต้องแยกตาม Platform อยู่ครับ ยกตัวอย่าง เช่น IBM DB2 ครับ แล้วที่นี่ ถ้าเรามีโจทย์/เงื่อนไขประมาณนี้ Solution แก้ที่ตัว csproj ของเราครับ โดยเราต้องมาดูกันก่อนว่าตัว cs project มันใส่เงื่อนไขได้ไหม ซึ่งมันทำได้ครับ อ๋อ แต่การแก้แบบนี้ อาจจะต้องตรวจสอบด้วยนะครับ ว่า…

[VS2022] แก้ไขปัญหา There is no project properties provider for “Persistence = ProjectFileWithInterceptionViaSnapshot”. Projects are not loaded

ช่วงนี้มีเคสให้ไปช่วยตรวจสอบบ่อยๆครับ ล่าสุดที่เจอ Error ตามรูปด้านบนเลยครับ มี output log ประมาณนี้ครับ Solution จากที่ลองหาใน Stackoverflow แนะนำให้ลอง Repair ตัว Visual Studio ก่อนครับ แต่ลองแล้วไม่ได้ 555 พอลองมาไล่ดู Log มีข้อมูลแนะนำที่น่าสนใจอันนึงครับ The project file cannot be opened. Unable to locate the .NET SDK. Check that it is installed, your…

dockerfile สำหรับ .NET6 + DB2

จดไว้ก่อน เพราะ documentation ของ DB2 ในส่วนนี้มันไม่ค่อยดีครับ และตัว Library ของมันเอง มีความ Unique ด้วยตัวมันเองอีกครับ ใช้ alpine ไม่ได้นะ DB2 Environment Full dockerfile ตรง Reference บางอันดูไม่เกี่ยวกับ .NET นะ แต่มันมีอธิบายเรื่อง DB2 ผมเลยเอามา Reference ด้วยนะ Reference

dockerfile สำหรับ jenkins ที่ build . NET Core3 / .NET6

หลังจากวันเจ้าตาก65 ตัดสินใจ Merge Code เข้าเส้นหลักไปแล้ว ขอแปะ dockerfile ของ Jenkins ที่ใช้ build .NET Core3 และ .NET6 เผื่อต้องกลับหาใหม่ครับ .NET Core3 .NET6 อ๋อ หลายคนอาจจะสงสัยว่าทำไมไม่ใช้งาน Multi-Stage Build ไปเลย Storage มันไม่พอครับ เวลามีหลายๆ Build เพราะตอน Build มัน Pull Image Build ลงมาชุดนึง + Restore Dependency เลยทำ multi-Stage…