Pergunta

Estou escrevendo um plug-in para um programa, e eu quero colocar meu código dentro de uma DLL para que eu possa compartilhar o plugin livremente sem expor (dando) meu código.

Aqui é a estrutura básica i têm acesso a:

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

Então eu apenas referenciar o arquivo .cs meu código está e os "come" do programa até este Plugin. Agora, eu ter colocado vários lógica lá, que consiste principalmente de funções que Arent amarrados diretamente para "Inicializar ()", apenas na função doWork (), que começa todo o sistema.

Agora, eu quero colocar todo o meu código dentro de uma DLL, e depois é só chamar de dentro Initialize (), myDll.doWork () (ou algo parecido).

PS: Este dll seria OFC ser uma biblioteca C # compilado (? Poderia ser chamado de importação conjunto dinâmico, não tomaria realmente ser dinâmico, uma vez que seria compilado de pré-execução de qualquer maneira, direita)

PS2:? Dessa forma eu também pode adicionar recursos personalizados como formas, imagens e tal sem muita dificuldade direita

PS3: Existe uma ferramenta gratuita para proteger o código dentro de tais DLL? (Ie proteger da beeing facilmente re engenharia)

Agradecemos antecipadamente =)

Foi útil?

Solução

Encontrado exatamente o que eu estava procurando, aqui está:

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);            
}

Outras dicas

A melhor opção seria a utilização de uma estrutura para a criação de aplicativos extensíveis:

Se você quiser fazê-lo manualmente, você pode usar o Assembly.Load * () métodos para carregar um conjunto no tempo de execução. Você pode pesquisar a montagem para tipos que implementam uma interface específica e, em seguida, criar instâncias usando Activator.CreateInstance . Os conjuntos podem ser compilados separadamente, você apenas tem que fazer referência a um assembly que contém a interface compartilhada por aplicação e plugin.

Para ofuscação, existem um par de ofuscação ferramentas disponível.

Use o Assembly.Load estática () / Assembly.LoadFile () / Assembly.LoadFrom () métodos para montagens de carga dinâmica.

FYI, lembre-se de usar uma ferramenta como da Red-Gate Net Reflector para inspecionar sua DLL para se certificar de que está devidamente ofuscado. Esta ferramenta gratuita, visual permite que você veja a DLL como os usuários irão vê-lo assim que você saberá se o seu código é exposta

alt texto http://img149.imageshack.us/img149/2025/screenshotfullscreen .gif

Net vem com Dotfuscator Community Edition , que pode ser usado para ofuscar seu código. Nenhuma codificação é necessária, consulte o seu para aprender o caminho de volta a GUI se você precisar de ajuda.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top