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的主要内容,如果未能解决你的问题,请参考以下文章