C# 开发的程序 如何 不让 使用者 看到 程序使用了啥dll

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 开发的程序 如何 不让 使用者 看到 程序使用了啥dll相关的知识,希望对你有一定的参考价值。

如果你的dll也是C#生成的dll,你可以把程序和你的dll合并在一起,用工具 ILMerge (微软出的小工具),c/c++ dll藏不了,不过也有变态方法,把它们添加为项目的Resources,用时保存到本地。 参考技术A 因为一个程序最重要的就是算法和数据,每个人编程所用的数据库都是个人的,不存在数据共享。dll就是动态数据库,比如瑞星杀毒更新的病毒库,如果其他的普通杀毒软件也可以用的话,那还用瑞星干嘛,

如何编辑 C# 库文件

【中文标题】如何编辑 C# 库文件【英文标题】:How to edit C# library files 【发布时间】:2016-08-11 09:53:18 【问题描述】:

我在使用我正在使用的套接字库 Fleck 将我的 C# 应用程序与我的 Web 应用程序通信时遇到问题。

我正在尝试发送一个数组,但套接字库只能发送/接收字符串作为消息。我知道我可以将数组作为字符串发送并在我的 C# 应用程序上将其字符串化,但我有一些特定的理由不这样做。

根据上图,您可以看到 .cs 文件已被锁定,我无权进行任何更改。我相信开发人员有充分的理由将消息变量设置为 String ONLY

有什么想法吗?

【问题讨论】:

您已链接到 Fleck 的源代码 - 您不能简单地更改代码以满足您的需求,而不用担心库被锁定吗? 由于只有字符串的原因,它看起来像是基于在支持二进制数据之前创建的Nugget。见这里:nugget.codeplex.com/discussions/267587 @JamesThorpe 很高兴知道这一点。是否可以更改程序集文件?我不知道如何获取原始来源... 【参考方案1】:

您可以序列化数组并使用 Send(byte[]) 通过 BinaryFormatter 将对象作为字节传输,或者您可以使用 XmlSerializer 并使用 Send(string)

【讨论】:

【参考方案2】:

该文件显示为“已锁定”,因为它不是真实文件 - 它是根据您引用的程序集的内容自动生成的,向您显示原始源 可能的外观.如果您想进行任何实际更改,您需要获取原始源(您在问题中链接到的),更改它(许可允许)并重建它。

话虽如此,它似乎是 Web 套接字的包装接口,无论如何它们只支持二进制或字符串数​​据,因此在某种程度上,您必须将消息转换为其中一种类型。您也可以在代码进入库之前在代码中执行该转换。

【讨论】:

【参考方案3】:

这是一个库文件,这意味着您只能访问代码,不能编辑它

可以做的是创建扩展属性或方法,这意味着您可以将覆盖方法传递给Send 方法并将其传递给一个数组。

您使用:IWebSocketConnection 继承代码:

public interface IMyWebSocketExtended : IWebSocketConnection

然后创建接受您需要的类型的覆盖方法。

或者,您可以在将数据传递给IWebSocketConnection 之前从数组中提取数据,这样就省去了麻烦:)

【讨论】:

【参考方案4】:

实现这一点的方法之一是扩展方法。

public interface CustomWebSocket : IWebSocketConnection

例如,一旦你扩展了方法,你就可以修改内容并使用它。

您可能需要先查看源代码并检查内容。

【讨论】:

以上是关于C# 开发的程序 如何 不让 使用者 看到 程序使用了啥dll的主要内容,如果未能解决你的问题,请参考以下文章

如何使 C# 枚举与数据库中的表保持同步

C# - Winform: 在窗体加载的过程中截获异常,如何不让窗体显示出来。

处理器关联组 C#

如何使两个进程通信?

微信小程序怎么让数据动态显示?或者绑定点击事件?

如何使子进程窗口在我的进程中显示为模态?