Saya perlu mengakses perakitan proyek saya di C # .NET2.0.
Saya dapat melihat GUID dalam dialog 'Informasi Majelis' di bawah properti proyek, dan saat ini saya baru saja menyalinnya ke sebuah const dalam kode. GUID tidak akan pernah berubah, jadi ini bukan solusi yang buruk, tetapi alangkah baiknya untuk mengaksesnya secara langsung. Apakah ada cara untuk melakukan ini?
ctrl+.
adalah teman AndaSystem.AppDomain.DomainManager.get returned null.
untuk aplikasi konsol sederhana. SepertinyaAssembly.GetEntryAssembly()
cara yang disukai.Cara lain adalah dengan menggunakan Marshal.GetTypeLibGuidForAssembly .
Menurut msdn:
sumber
Assembly.ReflectionOnlyLoad
dan bahkan ketika rakitan dependen tidak dimuat.System.Runtime.InteropServices.Marshal.GetTypeLibGuidForAssembly(System.Reflection.Assembly.GetExecutingAssembly()).ToString()
. Terlihat jauh lebih sederhana daripada metode lainnya. Apakah ada kerugiannya?Atau, semudah:
Bekerja untuk saya ...
sumber
Anda harus dapat membaca atribut Guid dari assembly melalui refleksi. Ini akan mendapatkan GUID untuk perakitan saat ini
Anda juga dapat mengganti GuidAttribute dengan atribut lain, jika Anda ingin membaca hal-hal seperti AssemblyTitle, AssemblyVersion, dll.
Anda juga dapat memuat rakitan lain (Assembly.LoadFrom dan semua) daripada mendapatkan rakitan saat ini - jika Anda perlu membaca atribut rakitan eksternal ini (misalnya - saat memuat plugin)
sumber
Jika ada orang lain yang mencari contoh kerja di luar kotak, inilah yang akhirnya saya gunakan berdasarkan jawaban sebelumnya.
Memperbarui:
Karena ini mendapat sedikit perhatian, saya memutuskan untuk memasukkan cara lain untuk melakukannya yang telah saya gunakan. Dengan cara ini Anda dapat menggunakannya dari kelas statis:
sumber
Untuk mendapatkan appID Anda dapat menggunakan baris kode berikut:
Untuk ini, Anda perlu menyertakan file
System.Runtime.InteropServices;
sumber
Tidak beruntung di sini dengan jawaban lain tetapi berhasil menyelesaikannya dengan satu kalimat yang bagus ini:
Semoga ini membantu!
sumber