Mahalliy ravishda nusxa ko'chirmasdan uchinchi tomon yig'ilishlariga qanday murojaat qilish mumkin?

Men SDKlar bilan sukut bo'yicha o'rnatilgan ko'plab uchinchi tomon yig'ilishlari bilan ishlayapman. Biroq, Reflection dan foydalanilganda, .NET quyidagi xato bilan ishlamay qoladi “Fayl yoki assembly [Name.dll] yuklanmadi”. Shunday qilib, men 3 ta yechim borligini topdim:

  • "Mahalliy nusxa" ni yoqing, bu kompilyatorni barcha yig'ilishlarni qurish papkasiga nusxalashga majbur qiladi (fayl hajmini sezilarli darajada oshiradi)

  • To'g'ridan-to'g'ri uchinchi tomon dastur fayllari jildiga kompilyatsiya qiling, bu .NET ish vaqtiga yig'ilishlarni osongina topish imkonini beradi (chunki ular bir papkada). Bu o'rnatishni boshqarishni qiyinlashtiradi, chunki 2 ta ilova umumiy papkaga ega.

  • Uchinchi tomon yig'ilishlarining ko'p qismini GACga qo'shing (gacutil yordamida) va kuchli nomidan foydalanib, unga havola qiling. Ammo bu boshqa turdagi "Fayl topilmadi" xatosini keltirib chiqaradi, ehtimol yig'ilish faqat GAC dan ishlamasligi mumkin, chunki u o'zining asosiy Program Files katalogidagi ba'zi fayllarni talab qiladi.

Shuning uchun men uchinchi tomon yig'ilishlari katalogini .NET ish vaqtiga ko'rsatishning bir yo'li bormi, shuning uchun men o'z ilovamni boshqa joyda kompilyatsiya qilishim va uchinchi tomon yig'ilishlarining yuklarini olib yurishga majbur bo'lmasligim uchun hayronman. (Ular allaqachon oxirgi foydalanuvchi kompyuterlariga o'rnatilgan bo'lar edi)


person Robin Rodricks    schedule 19.12.2011    source manba
comment
Ushbu yig'ilishlar server yoki mashinada GAC ​​bo'lishi mumkin emasmi yoki ilovangiz uchun .MSI o'rnatuvchisini yaratib, versiyani joriy qila olasizmi? shunchaki fikr..   -  person MethodMan    schedule 19.12.2011
comment
Bu borada sizga tezda yordam bera olganimdan xursandman.. OVOZ BERING ..   -  person MethodMan    schedule 19.12.2011


Javoblar (3)


Assambleyalar hozirda alohida "umumiy" katalogda bo'lganligi sababli, bu ularni ularga havola qiladigan dasturdan mustaqil ravishda versiyalash mumkinligini anglatadi. Bu erda "Mahalliy nusxani nusxalash" afzalroq, chunki aks holda siz o'zingiz bilmasdan almashtirilgan mos kelmaydigan versiyalarning eski "DLL do'zaxiga" tushib qolishingiz mumkin.

GAC ushbu muammoni hal qilish uchun mo'ljallangan, ammo keyin, albatta, siz kuchli nomlashni qo'llashingiz kerak va ularga havola qilingan barcha yig'ilishlar kuchli nomga ega bo'lishi va GACga ham kirishi kerak. Bu versiya yaratish va o'rnatishni boshqarish uchun qo'shimcha ishlarni yaratadi, lekin u parallel versiyalarni yaratishga imkon beradi va takrorlanishning oldini oladi. Shunga qaramay, agar siz faqat bir nechta ilovalardan yig'ilishga murojaat qilsangiz, uni GACga qo'yish ortiqcha bo'lishi mumkin. Yangilanishlar paytida versiyalar to'planishi tufayli siz uzoq muddatda diskda ko'proq joy egallashingiz mumkin, holbuki Mahalliy nusxa ko'chirish sizga yuklangan har bir ilova uchun faqat bitta versiyani qoldiradi.

person Dan Bryant    schedule 19.12.2011

Ushbu yig'ilishlar server yoki mashinada GAC ​​bo'lishi mumkin emasmi yoki ilovangiz uchun .MSI o'rnatuvchisini yaratib, versiyani joriy qila olasizmi? shunchaki fikr.

person MethodMan    schedule 19.12.2011
comment
Bu yordam berdi, lekin men hozirda uni ishlashi uchun №2 ga murojaat qilyapman. Sizning yechimingiz (№3) sabablarga ko'ra postni ko'rmaydi. - person Robin Rodricks; 19.12.2011

Agar yig'ilishlar tarmoq papkasida bo'lsa, .NET standart xavfsizlik ularni yuklamaydi. Siz .NET konfiguratsiyasi boshqaruv paneli ostida xavfsizlik sozlamalarini o'zgartirishingiz kerak, "Ish vaqti xavfsizligi siyosati" ostida "Hudud xavfsizligini sozlash" ustasi mavjud va keyin "To'liq ishonch" bilan "Mahalliy Internet" ni tanlang.

.NET Security Adjust

person John Alexiou    schedule 19.12.2011