C# إضافة مرجع فقط باستخدام الشفرة (لا IDE "إضافة مرجع" وظائف)

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

سؤال

أنا ريتينغ البرنامج المساعد البرنامج و أريد أن أضع الكود داخل ملف DLL إذا كنت يمكن أن نشارك في البرنامج المساعد بحرية دون تعريض (التخلي) قانون بلدي.

هنا هو الهيكل الأساسي لدي الوصول إلى :

using System;
public class Plugin
{
    public void Initialize()
    {
        //do stuff here
        doWork();
    }
}

ثم أنا مجرد الإشارة .cs ملف قانون بلدي هو في برنامج "يأكل" هذا البرنامج المساعد.الآن, لقد وضعت عدة المنطق في هناك ، تتألف في معظمها من الوظائف التي ليست مرتبطة مباشرة إلى "تهيئة ()" فقط على doWork (وظيفة) ، الذي يبدأ النظام برمته.

الآن أريد أن أضع كل ما عندي كود داخل ملف DLL ثم فقط اتصل من داخل تهيئة(), myDll.doWork() (أو شيء من هذا القبيل).

PS:هذا dll أن ofc تكون جمعت C# مكتبة (يمكن أن تسمى ديناميكية الجمعية الاستيراد ؟ فإنه لن يكون حقا دينامية لأنه سيكون جمعت ما قبل التنفيذ على أي حال, أليس كذلك؟)

PS2:بهذه الطريقة أستطيع أن أضيف أيضا مخصص الموارد مثل الأشكال والصور هذه من دون الكثير من الصعوبة صحيح ؟

PS3:هناك أداة مجانية لحماية كود داخل هذا DLL?(أي حماية من بيينغ بسهولة إعادة هندسة)

شكرا مقدما =)

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

المحلول

وجدت ما كنت أبحث عنه، ومن هنا بالضبط:

using System.Reflection;
using System.IO;

try
{
    Assembly a = null;

    a = Assembly.LoadFrom(Application.StartupPath startupPath + "MyAssembly.dll"); 

    Type classType = a.GetType("MyNamespace.MyClass");
    object obj = Activator.CreateInstance(classType);
    MethodInfo mi = classType.GetMethod("MyMethod");

    mi.Invoke(obj, null);
}
catch (Exception e)
{                 
    AddLog(e.Message);            
}

نصائح أخرى

أفضل خيار هو استخدام إطار خلق الموسعة التطبيقات:

إذا كنت تريد أن تفعل ذلك يدويا, يمكنك استخدام الجمعية.التحميل*() طرق لتحميل الجمعية في وقت التشغيل.يمكنك البحث الجمعية الأنواع التي تنفذ واجهة معينة ثم إنشاء مثيلات باستخدام المنشط.CreateInstance.الجمعيات يمكن جمعها بشكل منفصل ، عليك فقط أن مرجع التجميع الذي يحتوي على واجهة مشتركة من قبل تطبيق البرنامج المساعد.

من أجل التشويش ، هناك زوجين من التشويش أدوات المتاحة.

استخدم في Assembly.Load ثابت () / Assembly.LoadFile () / Assembly.LoadFrom () طرق لتحميل المجالس بشكل حيوي.

لمعلوماتك, تذكر أن استخدام أداة مثل الأحمر-البوابة .صافي عاكس لتفقد DLL الخاص بك للتأكد من أنه يتم بشكل صحيح غموض.هذا حر, البصرية أداة تمكنك من رؤية DLL الخاص بك المستخدمين سوف نرى ذلك لذلك عليك أن تعرف إذا كان لديك رمز يتعرض

النص البديل http://img149.imageshack.us/img149/2025/screenshotfullscreen.gif

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

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