سؤال

أحاول إضافة ملف سياسة الناشر إلى GAC وفقًا لهذا مسلك لكنني أواجه مشاكل عندما أحاول إضافة الملف على خادم الاختبار الخاص بي.

أحصل على "وحدة نمطية محددة في بيان التجميع".

يبدو ملف سياستي هكذا:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="*assemblyname*"
                          publicKeyToken="7a19eec6f55e2f84"
                          culture="neutral" />
        <bindingRedirect oldVersion="3.0.0.0"
                         newVersion="3.0.0.1"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

الرجاء المساعدة!

شكرًا

بن


لقد قمت بإعادة إنشاء المشكلة من نقطة الصفر بتجميع جديد ليس له تعتمدات (بصرف النظر عن الإعدادات الافتراضية) نفسها - كلها تعمل بشكل جيد على جهاز التطوير المحلي الخاص بي (ويعيد توجيهه بشكل جيد أيضًا) ولكنه يعطي نفس الخطأ في إضافة ملف السياسة إلى GAC على الخادم!

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="TestAsm"
                          publicKeyToken="5f55456fdcc9b528"
                          culture="neutral" />
        <bindingRedirect oldVersion="3.0.0.0"
                         newVersion="3.0.0.1"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

مرتبط بالطريقة التالية

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\al.exe /link:PublisherPolicy.xml /out:policy.3.0.TestAsm.dll /keyfile:..\..\key.snk /version:3.0.0.0
pause

الرجاء المساعدة!

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

المحلول

واو - حسنًا ، حصلت عليه.

كان يجب أن أولي المزيد من الاهتمام لما يعنيه هذا بالضبط

(MSDN) كيفية: إنشاء سياسة ناشر

ملاحظة مهمة: لا يمكن إضافة تجميع سياسة الناشر إلى ذاكرة التخزين المؤقت للتجميع العالمي ما لم يكن ملف سياسة الناشر الأصلي موجودًا في نفس الدليل مثل التجميع.

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

نصائح أخرى

طيب ... فقط أريد التحقق من بعض الأساسيات ....

بالتأكيد لديك كلا الإصدارين من التجميع التابع المثبت على GAC؟

وهل التحقق من أن أرقام الإصدار في سمة [Assembly: AssemblyVersion ()] صحيحة.

وقد استخدمت [التجميع: التجميع()] و ليس المجسم: AssemblyFileversion("1.0.0.1")].

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

أيضًا عندما تقوم بإنشاء ملف السياسة ، تأكد من استخدام مفتاح /الإصدار في رابط التجميع لتعيين رقم الإصدار بشكل صريح إلى 3.0.0.0 و لا تحدد مفتاح /منصة. على سبيل المثال

al.exe /link:assembly.config /out:policy.3.0.assembly.dll 
         /keyfile:mykey.snk /version:3.0.0.0

لإضافة مجموعات سياسات إلى GAC باستخدام Wise ، يمكنك فعل الشيء نفسه كما تفعل لإضافة التجميع التي تهدفها السياسة. لذلك يمكنك إضافة مجموعة السياسة إلى "ذاكرة التخزين المؤقت للتجميع العالمي" في حالة حكيمة ، وطالما أن لديك ملف السياسة (.config) في نفس الموقع على الجهاز ، ستضيفه الحكيم تلقائيًا إلى GAC أيضًا.

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