មករា
វេចខ្ចប់ឯកសារផ្សេងៗ រួមទាំង DLL ទៅក្នុង កម្មវិធីតែមួយ (.exe)
♦ រៀបរៀងអត្ថបទដោយ លោក គឹម សូឡី នៅខែមករា ឆ្នាំ ២០២៣
អត្ថបទនេះអាចនឹងមានប្រយោជន៍សម្រាប់អ្នកសរសេរកម្មវិធី .NET ផ្នែក Desktop application (WinForms ឬ WPF) ។ ជាទូទៅយើងតែង តែទុកដាក់ឯកសារនានានៅទីតាំង (path) ជាក់លាក់ណាមួយ បន្ទាប់មកក៏ហៅវាមកប្រើប្រាស់វិញតាមរយៈទីតាំងដែលបានកំណត់នោះ ។ សម្រាប់កម្មវិធីខ្លះគេបានវេចខ្ចប់រួចជាស្រេចនូវឯកសារចាំបាច់មួយចំនួនរបស់កម្មវិធី ដូចជាឯកសារប្រភេទជា រូបភាព សំឡេង DLL (dynamic linked library) ។ ល ។ ទៅក្នុងកម្មវិធីតែមួយ (.exe) ។ ហេតុផលដែលត្រូវវេចខ្ចប់ឯកសារទាំងនោះ គឺចង់ឲ្យវាមានភាពសាមញ្ញ និងងាយ ស្រូលចែកចាយកម្មវិធីទៅកាន់អ្នកប្រើប្រាស់ ។ ប្រហែលជាអ្នកធ្លាប់ដឹងមកហើយអំពីកម្មវិធីប្រភេទជា portable version មានន័យថាវា មិនតម្រូវឲ្យដំឡើងសាំញ៉ាំឡើយ គឺចម្លង និងប្រើប្រាស់តែម្តង ។ ហេតុផលផ្សេងទៀតគឺចង់ការពារមិនឲ្យអ្នកប្រើប្រាស់អាចផ្លាស់ប្តូរ ឯកសាររបស់កម្មវិធីយើងបាន ឧទាហរណ៍ថា កម្មវិធីរបស់យើងប្រើប្រាស់ឯកសារសំឡេងមួយដែលនឹងបញ្ចេញសំឡេងថា ‘សួស្តី’ អ្នកប្រើប្រាស់អាចនឹងផ្លាស់ប្តូរឯកសារ សំឡេងនោះដោយអ្វីផ្សេងបាន ហើយអ្នកប្រើប្រាស់ក៏អាចនឹងច្រឡំផ្លាស់ប្តូរទីតាំង ឬលុបឯកសារ នោះដែលជាហេតុនាំឲ្យកម្មវិធីរបស់យើងដំណើរការខុសប្រក្រតី ។ យើងនឹងលើកយក Project មួយជាប្រភេទ WinForms មកបង្ហាញនៅ ពេលនេះ៖
ឧទាហរណ៍ថាយើងមានឯកសារ១ជាប្រភេទ .wav ដែលផ្ទុកនៅទីតាំង folder “sounds” ពេលយើងហៅវាមកប្រើប្រាស់គឺប្រាកដណាស់ យើងនឹងហៅវាតាមរយៈ external file ដោយទីតាំងរបស់វា និងជាចាំបាច់យើងត្រូវចម្លងឯកសារសំឡេងនោះទៅតាមកម្មវិធី (.exe) ជានិច្ច ។
ដើម្បីវេចខ្ចប់វាទៅក្នុងកម្មវិធី (.exe) យើងត្រូវទាញវាចូលទៅផ្នែក Resources នៃ project របស់យើង ដោយចូលទៅកាន់ Solution Explorer> បើកផ្ទាំង Properties> ចូលទៅកាន់ផ្នែក Resources> ចុចលើ Add Resource> ស្វែងរកតាមទីតាំងជាក់ស្តែង
កូដខាងក្រោមយើងបានផ្លាស់ប្តូរពីការហៅឯកសារតាមរយៈ external file មកជាតាមរយៈ file stream វិញម្តង ។ រាល់ពេល project built ពេលនោះឯកសារទាំងឡាយនៅក្នុងផ្នែក Resources នឹងវេចខ្ចប់ចូលទៅក្នុងកម្មវិធី (.exe) ដោយស្វ័យប្រវត្តិ ហើយរាល់ពេលយើងហៅ ឯកសារទាំងនោះមកប្រើវិញនៅក្នុងកូដគឹត្រូវហៅតាមរយៈឈ្មោះរបស់វាដែលកំណត់នៅក្នុងផ្នែក Resources ។ ប្រភេទទិន្នន័យរបស់ ឯកសារក៏ទៅតាមនោះដែរ អាចជា stream, bitmap, byte [ ] ,… ដែលយើងអាចយកទៅបំប្លែងតាមតម្រូវការជាក់ស្តែង ។
សូមមើលឧទាហរណ៍៖
♦ ខ្ចប់ DLL ទៅក្នុងកម្មវិធី (.exe)
DLL ដែលយើងធ្លាប់ស្គាល់មកហើយថាវាជាបណ្តុំកូដដែលសរសេរឡើង ដើម្បីជាជំនួយក្នុងការដោះស្រាយឲ្យកម្មវិធីដទៃទៀត ។ ជាទូទៅ DLL ត្រូវនៅជាមួយកម្មវិធីគោល (.exe) ជានិច្ច ។ ដោយសារ DLL ផ្ទុកនូវបណ្តុំកូដផ្សេងៗសម្រាប់ហៅមកប្រើ ដូចនេះយើងមិនអាច ទាញវាចូលទៅផ្នែក Resources ដូចវិធីសាស្រ្តដែលបានបង្ហាញខាងលើនោះទេ ។ ក្នុងអត្ថបទនេះយើងនឹងប្រើប្រាស់ tool មួយដែលយើងទាញយកពី NuGet Library បាន នោះគឺ Costura.Fody ។ បញ្ជាក់៖ ដើម្បីទាញយក tool ពី NuGet Library ត្រូវភ្ជាប់ Internet ជាចំបាច់
នៅលើ Microsoft Visual Studio សូមចូលទៅកាន់ Tools> NuGet Package Manager> Package Manager Console រួចប្រើ Command : PM> install-package costura.fody រួចរង់ចាំដំណើរការទាញយក និងដំឡើង ឬប្រើប្រាស់ wizard ដោយ Right click លើឈ្មោះ Project> Manage NuGet Packages… រួចស្វែងរកពាក្យ costura.fody និងជ្រើសរើស Version ណាមួយដែលត្រូវនឹង Project របស់យើង ឧទាហរណ៍ដូចជា .NET4, .NET4.5,… ជាដើម ។ មិនមានកំណត់អ្វីទៀតឡើយ tool មួយនេះនឹងរៀបចំ DLL នានាដោយស្វ័យប្រវត្តិនៅពេល project ត្រូវបាន build ។ ដូច្នេះ (.exe) ជាកម្មវិធីគោលតែមួយគត់ដែលត្រូវចែកចាយទៅកាន់អ្នកប្រើប្រាស់ព្រោះវាបានផ្ទុកនូវឯកសារផ្សេងៗនៅក្នុងនោះជាស្រេចហើយ ។
♦ សង្ខេប៖
អត្ថបទនេះគ្រាន់តែជាការង្ហាញអំពីគន្លិះខ្លះៗដែលអ្នកសរសេរកម្មវិធី .NET គួរដឹងប៉ុណ្ណោះ មិនមែនត្រូវយកវិធីសាស្រ្តទាំងអស់នេះទៅប្រើប្រាស់គ្រប់ពេលនោះទេ ។ យើងគួរប្រើវាឲ្យសមស្របទៅនឹងស្ថានភាពរបស់កម្មវិធីនីមួយៗ ។ ការផ្ទុកឯកសារច្រើនទៅក្នុង exe វានឹងនាំឲ្យ exe មានទំហំកាន់តែធំទៅតាមទំហំនៃឯកសារទាំងនោះ និងពេលខ្លះវានឹងនាំឲ្យកម្មវិធីដំណើរការមិនបានល្អផងដែរ ។ មុនពេលយើងដាក់ឯកសារណាមួយចូលទៅក្នុង exe យើងត្រូវប្រាកដថាតើវាចាំបាច់ដែរ ឬទេ?
♦ ប្រសិនបើមានចង្ងល់ផ្សេងៗសូមផ្ញើសារចូល Inbox : https://web.facebook.com/anttrainning ឬ https://t.me/anttechnology
♦ វគ្គ C# Beginning តម្លៃ ៧០ដុល្លា http://training.antkh.com/csharp_for_beginner.aspx
♦ វគ្គ C# Database តម្លៃ ១០០ដុល្លា http://training.antkh.com/csharp_database.aspx
ឬ Facebook: https://www.facebook.com/anttrainning
Facebook Page: https://web.facebook.com/ant.com.kh
គេហទំព័រ http://training.antkh.com
មតិ និងយោបល់ទៅលើអត្ថបទនេះ (តាម Facebook)
ខាងក្រោមនេះជាយោបល់ផ្សេងៗរបស់អ្នកទស្សនា