我一个书面方式插件程序,我希望把我的代码DLL内,所以我可以自由地共享插件不暴露(放弃)我的代码。
这是基本结构我有机会获得:
using System;
public class Plugin
{
public void Initialize()
{
//do stuff here
doWork();
}
}
然后我就引用.cs文件我的代码是在和节目“吃”了这个插件。 现在,我已经把几个逻辑在里面,包括主要的arent直接与功能“初始化()”,仅在的doWork()函数,启动整个系统。
现在,我希望把我所有的代码DLL里面,然后刚从里面初始化(),myDll.doWork(呼叫)(或类似的东西)。
PS:这个DLL会被OFC编译的C#库(可以把它称为动态组装进口它wouldnt真的是动态的,因为它会反正编译执行前,右?)
PS2:这样我还可以添加喜欢的形式,图片和自定义资源,无权太大的困难?
PS3:是否有保护代码中的DLL里面一个免费的工具? (即从beeing轻松地重新设计的保护)
由于事先=)
发现正是我一直在寻找的,那就是:
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);
}
最好的办法是使用一个框架来创建可扩展的应用程序:
- 托管扩展性框架 (MEF)
- Mono.Addins
如果你想要做手工,您可以使用Assembly.Load *()方法在运行时加载的程序集。 您可以搜索组件,其实现一个特定的接口,然后创建一个使用实例类型Activator.CreateInstance 。 所述组件可单独被编译,你只需要引用包含由应用和插件共享接口的组件。
对于模糊,有一对夫妇的混淆工具可用。
使用静态Assembly.Load()/ Assembly.LoadFile()/ Assembly.LoadFrom()方法来动态加载组件。
仅供参考,请记住使用类似的工具红门的.net反射检查你的DLL,以确保它是正确的混淆。 这个免费的,可视化的工具可以让你看到的DLL的用户将看到它,所以如果你的代码是暴露你就知道
替代文字http://img149.imageshack.us/img149/2025/screenshotfullscreen.gif
.NET自带的Dotfuscator社区版可以用来混淆你的代码。 无需编码,看到自己的用户手册 ,了解周围的GUI自己的方式,如果你需要帮助。