C#AddReferencesOnlyUsingCode(没有IDE“AddReference”功能)将我的代码放在一个DLL中,这样我就可以自由共享插件而不会暴露(泄露)我的代码。这是我可以访问的基本结构:usingSystem;publicclassPlugin{publicvoidInitialize(){//在这里做事doWork();然后我只引用我的代码所在的.cs文件,程序“吃掉”这个插件。现在,我把几块逻辑放在那里,主要包括不直接绑定到“Initialize()”的函数,只放在启动整个系统的doWork()函数上。现在,我想将所有代码放入DLL中,并从Initialize()、myDll.doWork()(或类似的东西)中调用它。PS:这个dll会是一个编译好的C#库(是不是可以叫动态汇编导入?不会真的是动态的吧,执行前会先编译对吧?)PS2:这样我也可以加上self不是吗太难定义资源,例如表单、图像等?PS3:有没有免费的工具可以保护这种DLL里面的代码?(即避免重新设计)提前致谢=)找到我要找的东西,在这里:usingSystem.Reflection;使用System.IO;尝试{程序集a=null;a=Assembly.LoadFrom(Application.StartupPathstartupPath+"MyAssembly.dll");输入classType=a.GetType("MyNamespace.MyClass");objectobj=Activator.CreateInstance(classType);MethodInfomi=classType.GetMethod("MyMethod");mi.Invoke(obj,null);}catch(Exceptione){AddLog(e.Message);最好的办法是使用框架来创建可扩展的应用程序:如果您想手动执行此操作,则可以在运行时使用Assembly.Load*()方法加载程序集时。您可以在程序集中搜索实现特定接口的类型,然后使用Activator.CreateInstance创建实例。程序集可以单独编译,你只需要引用包含应用程序和插件共享接口的程序集。对于混淆,有几种混淆工具可用。使用静态Assembly.Load()/Assembly.LoadFile()/Assembly.LoadFrom()方法动态加载程序集。仅供参考,请记住使用Red-Gate的.NetReflector等工具检查您的DLL,以确保它已正确混淆。这个免费的可视化工具让您可以像用户看到的那样查看DLL,因此您会知道您的代码是否暴露于替代文本http://img149.imageshack.us/img149/2025/screenshotfullscreen.gif.Net带有Dotfuscator可用于混淆代码的社区版。无需编码,如果需要帮助,请参阅其用户指南了解如何绕过GUI。以上是C#学习教程:C#只是用代码来添加引用(没有IDE的“添加引用”功能)。网络收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
