سؤال

نحن attemtping دمج لدينا DLL في واحدة للنشر ، وبالتالي ILMerge.تقريبا كل شيء يبدو على العمل العظيم.لدينا عدة عناصر تحكم ويب التي تستخدم ClientScript.RegisterClientScriptResource و هذه هي 404-ing بعد الدمج (هذه عملت قبل الدمج).

على سبيل المثال واحدة من الضوابط من شأنه أن تبدو وكأنها

namespace Company.WebControls
{
  public class ControlA: CompositeControl, INamingContainer
  {
    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);
        this.Page.ClientScript.RegisterClientScriptResource(typeof(ControlA), "Company.WebControls.ControlA.js");                
    }      
  }
}

وسوف يكون موجودا في المشروع WebControls, الجمعية الشركة.WebControls.تحت سيكون ControlA.cs ControlA.js.ControlA.js يتم وضع علامة عليها باعتبارها جزءا لا يتجزأ من الموارد.في AssemblyInfo.cs لا تشمل ما يلي:

[assembly: System.Web.UI.WebResource("Company.WebControls.ControlA.js", "application/x-javascript")]

بعد هذا يتم دمجها في CompanyA.dll ما هو الطريق السليم إلى مرجع ويب هذه الموارد ؟ على ILMerge سطر الأوامر كما يلي (من bin بعد بناء): "C:\Program Files\Microsoft\ILMerge\ILMerge.exe" /keyfile:../../CompanySK.snk /wildcards:True /copyattrs:True /out:Company.dll Company.*.dll

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

المحلول

حسنا لقد حصلت على هذا العمل.يبدو الأولية الجمعية الوحيدة التي تجمع سمات يجري نسخها.مع copyattrs مجموعة, آخر واحد في سيفوز وليس دمج (بقدر ما أستطيع أن أقول).أنا خلقت دمية المشروع إلى مرجعية أخرى DLL وشملت جميع الموارد على شبكة الإنترنت من تلك المشاريع وهمية الجمعية معلومات - الآن موارد متعددة من مشاريع متعددة كلها التحميل بشكل صحيح.

النهائي بعد بناء سطر الأوامر دمية المشروع:"C:\Program Files\Microsoft\ILMerge\ILMerge.exe" /المفتاح:../../الشركة.snk /البدل:صحيح /out:Company.dll Company.Merge.dll الشركة.*.dll

نصائح أخرى

تحتاج إلى تعيين /allowMultiple جنبا إلى جنب مع /copyattrs.وبعد ذلك فقط ILMerge دمج الموارد المضمنة من جميع الجمعيات.

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