문제

프로그램 용 플러그인을 작성하고 있으며 코드를 DLL 내에 넣고 코드를 노출 (제공)하지 않고 플러그인을 자유롭게 공유 할 수 있습니다.

다음은 다음에 액세스 할 수있는 기본 구조입니다.

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

그런 다음 코드가있는 .CS 파일을 참조하고 프로그램은이 플러그인을 "먹습니다". 이제 나는 전체 시스템을 시작하는 dowork () 함수에서만 "initialize ()"에 직접 연결된 기능으로 구성된 몇 가지 논리를 거기에 넣었습니다.

이제 모든 코드를 DLL 내부에 넣은 다음 Inside Internatize (), mydll.dowork () (또는 그와 비슷한)에서 호출하고 싶습니다.

추신 :이 DLL은 컴파일 된 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);            
}

다른 팁

가장 좋은 옵션은 확장 가능한 응용 프로그램을 만들기 위해 프레임 워크를 사용하는 것입니다.

수동으로하고 싶다면 Assembly.load*() 런타임에 어셈블리를로드하는 방법. 특정 인터페이스를 구현하는 유형에 대해 어셈블리를 검색 한 다음 사용하는 인스턴스를 만들 수 있습니다. Activator.CreateInstance. 어셈블리는 별도로 컴파일 될 수 있으며 응용 프로그램 및 플러그인이 공유하는 인터페이스가 포함 된 어셈블리를 참조하면됩니다.

난독 화에는 있습니다 부부난독 화 도구 사용 가능.

정적 어셈블리.load () / assembly.loadfile () / Assembly.loadfrom () 메소드를 사용하여 어셈블리를 동적으로로드하십시오.

참고로,와 같은 도구를 사용해야합니다 레드 게이트의 .NET 리플렉터 DLL이 올바르게 난독 화되었는지 확인하십시오. 이 무료 시각적 도구는 사용자가 사용자가 볼 수 있으므로 코드가 노출되었는지 알 수 있도록 DLL을 볼 수 있습니다.

Alt Text http://img149.imageshack.us/img149/2025/screenshotfullscreen.gif

.NET과 함께 제공됩니다 Dotfuscator Community Edition 코드를 난독 화하는 데 사용할 수 있습니다. 코딩이 필요하지 않습니다 사용자 설명서 도움이 필요한 경우 GUI를 중심으로 배우기 위해.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top