كيفية تسجيل مجموعة غير قوية لسماءها ليتم تحميلها كما لو كانت في GAC؟

StackOverflow https://stackoverflow.com/questions/2290006

  •  21-09-2019
  •  | 
  •  

سؤال

قدم لنا أحد شركائنا تجميعًا نحتاج إلى الوصول إليه من تطبيقنا. لسوء الحظ ، هذا ليس اسمًا قويًا ، لذا لا يمكننا تثبيته على GAC. ولا يمكننا وضعه في نفس المكان الذي يتم فيه تنفيذنا.

هل هناك حل لهذا؟

تحرير: سيكون هذا حلًا مؤقتًا فقط للاختبار ، عندما يذهبون إلى RC ، سيكون لدينا مجموعة قوية.

هل كانت مفيدة؟

المحلول

لديك بعض الخيارات في تلك المرحلة.

الأول هو وضع التجمع في دليل يحتوي على اسم التجميع (بدون التمديد) وهو دليل فرعي لدليل التطبيق.

والثاني هو تحديد الدليل الفرعي الذي تريد أن يحقق CLR للمراجع في ملف App.Config باستخدام عنصر التحقيق.

أخيرًا ، يمكنك تحميل التجميع ديناميكيًا باستخدام مختلف طرق التحميل على فئة التجميع لكني أقول أن هذا أ جداً فكرة سيئة في هذه الحالة ، بالنظر إلى أن لديك التجميع ، ولديك أنواع ملموسة تريد استخدامها فيه. عادةً ما يتم استخدام تحميل التجميع الزمني المتأخر مثل هذا عندما ترغب في دعم تنفيذ بعض التجريدات ، والتي لا يبدو أنها هي الحال هنا.

نصائح أخرى

حل بديل باستخدام إزالة الإلغاء والتوقيع (باستخدام موجه أوامر المطور لـ Visual Studio):

ildasm.exe /all /typelist /out=DataSystem.il DataSystem.dll
ilasm.exe /dll /optimize /key=DataSystem.snk DataSystem.il

يمكن إنشاء datasystem.snk كملف باستخدام Visual Studio IDEhttp://www.bloggedbychris.com/2011/09/29/signing-a-net-assembly-in-visal-studio/

ثم يجب أن تكون قادرًا على الجري

gacutil.exe -i DataSystem.dll

حل آخر هو إضافة ما يلي إلى ملف machine.config:

<runtime>
  <developmentMode developerInstallation="true"/>  
</runtime>

وأضف DevPath = المسار إلى متغيرات بيئة النظام.

كان الحل الأفضل والأكثر مباشرة للتوقيع وتسجيل مجموعة وجدتها هنا:http://codeingaddiction.blogspot.com/2011/06/how-to-ddd-strong-name-to-existing-dll_16.html

بالنسبة لي لأجعل هذا يعمل بسهولة ، فإنني أتعامل مع بعض الدليل مثل C: Temp - يبدو أن هذا يعمل بشكل أفضل بالنسبة لي ، ربما بسبب أذونات الملفات التي يمكن الوصول إليها في مكان من هذا القبيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top