For Android device For iOS device
១២
មករា

វេចខ្ចប់ឯកសារផ្សេងៗ រួមទាំង 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)

ខាងក្រោម​នេះ​ជា​យោបល់​ផ្សេងៗ​របស់​អ្នកទស្សនា