كيف تعمل مع العديد من إصدارات الجمعية في المجلدات الخاصة باستخدام التكوين?

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

سؤال

لدي سيناريو حيث لديك إصدارات متعددة من نفس الجمعية التي لا تحتاج إلى تخزين في تطبيق المجلدات الخاصة في الهيكل مثل هذا:

.\My.dll          // latest version, say 1.1.3.0
.\v1.1.1\My.dll   // version 1.1.1.0
.\v1.1.2\My.dll   // version 1.1.2.0

مشكلتي هي أن .وقت تشغيل Net, عندما سئل عن واحدة من الإصدارات القديمة ، يجد دائما أحدث نسخة ثم فشل بسبب بناء عدد تطابق قبل محاولة تحقيق أفضل مباراة.

جمعيات قوية اسمه و أنا باستخدام هذا التكوين في التطبيق.التكوين:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="My" 
                publicKeyToken="xxxxxxxx" culture="netural" />

                <bindingRedirect oldVersion="1.0.0.0-1.1.1.0" 
                    newVersion="1.1.1.0" />
                <bindingRedirect oldVersion="1.1.3.0-1.1.65535.65535" 
                    newVersion="1.1.3.0" />

                <codeBase version="1.1.1.0" href="v1.1.1\My.dll" />
                <codeBase version="1.1.2.0" href="v1.1.2\My.dll" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

نأمل هناك شيء فاتني هنا.أعرف أن هذا يمكن أن يكون حلها في كود عن طريق الاستماع AppDomain.AssemblyResolve الحدث ولكن أنا أحب أن أرى نقية التكوين الحل.

تحديث: إذا وجدت علة ، كينت يفترض خطأ مطبعي. culture="netural" يجب أن يكون culture="neutral".وقال دون الخطأ المطبعي, حل يعمل كبيرة عند استخدام codeBase العناصر التي تشير إلى كل إصدار.السبر عنصر لا يبدو أن العمل في هذا السيناريو.

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

المحلول

دون رؤية حل كامل ، لا أستطيع إلا أن نفترض أن لديك خطأ مطبعي في مكان ما.لقد جربت هذا بنفسي مع مساعدة من fuslogvw, لقد كنت قادرا على الحصول على عمل.

لدي ثلاثة إصدارات الجمعية و تطبيق مضيعة المراجع نسخة قديمة من ذلك في دليل الإخراج.CLR يجد الموجهات و codeBase دخول كميات الصحيح (كبار السن) الإصدار.

يمكنني أن أرسل لك الحل إذا توفر عنوان بريد إلكتروني.

كينت

نصائح أخرى

يمكنك استخدام probepath?نحن نستخدم هذه القوة غير المنضبط (مثلا ، الطرف الثالث محللات - مثل MSTest) للبحث عن الجمعيات حيث يجب لها أن تكون.

<?xml version ="1.0"?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <probing privatePath="v1.1.1;v1.1.2;"/>
        </assemblyBinding>
    </runtime>
</configuration>

انظر هنا للحصول على مزيد من المعلومات

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