如果你想分发一个 .net 网络应用程序,并且你想要禁用应用程序中的某个模块,并且你不希望与其一起发布源代码,那么是否仅不包括该模块所需的 .dll 是一个合理的解决方案?
我知道你可以通过编程来做事,但只要不导出.dll文件,一切都应该没问题,对吧?
原因是一些.dll文件需要您以商业方式销售产品,如果我想免费赠送或作为演示,则会受阻。
如果你想分发一个 .net 网络应用程序,并且你想要禁用应用程序中的某个模块,并且你不希望与其一起发布源代码,那么是否仅不包括该模块所需的 .dll 是一个合理的解决方案?
我知道你可以通过编程来做事,但只要不导出.dll文件,一切都应该没问题,对吧?
原因是一些.dll文件需要您以商业方式销售产品,如果我想免费赠送或作为演示,则会受阻。
只要您所发货的二进制图像实际上不需要您未发货的 dll 中的任何内容,您应该是无事的。这包括“不揭示由缺失的 dll 提供的功能”。
例如:如果您的 PDF 工具未“安装”,请勿展示“下载为 PDF”按钮。
我以前曾经做过这样的事情,通过一种插件系统扫描预定义目录中的.dll文件,构建一个实现特定接口的所有公开类的列表。尽管对于您想要的可能有些过度,并且这种方法也略有不同于您的建议。
一个可能的方法(假设您不想或不能使用插件方法)是创建一个虚假的DLL,其中包含所有相同的类和方法,但实际上什么也不做。
根据您的DLL的大小和复杂程度,这可能是可行的或不可行的行动。
插件路线将是我处理的方式,因为每当“真实”的DLL发生变化时,您都需要更新您的虚拟DLL。
你肯定需要某种代码中的DLL元素,因为缺少DLL将比简单地禁用你打算使用的模块更糟糕地破坏事物。
如果您使用的是Web Site而不是Web Application Project,则这将绝对会出错,因为DLL引用必须位于您的web.config中...当它缺失时,将会抛出错误。
你可以在 Web 应用程序项目中应付过关,但这是一个非常丑陋的方法。使用一些插件架构会更好,正如其他人所建议的那样。