【发布时间】:2015-02-24 17:45:23
【问题描述】:
潜伏已久,第一次提问。
我有一个问题,我需要能够反编译为在 Windows 上运行而构建的 DLL……但我需要在 Linux 上执行此操作……在非交互式自动化工具中。我通过获取 ILSpy 源代码、撕下 GUI、将 ILSpy EXE 敲入 DLL、为其编写 CLI、在 Mono 下构建和运行它解决了这个难题。效果很好,但存在许可问题。
我问我们的居民许可机构“对于我们的目的,这是可以接受的 MIT 许可的 ILSpy 的使用吗?”他的回答的核心是
MIT 许可证没问题。但是使用 Mono 运行 .NET 应用程序可能会出现问题。如果它们需要任何 Windows DLL,您可能无法这样做,因为大多数 Windows DLL 明确表示它们只能在 Windows 操作系统上运行。当它在 Mono 下运行时,我们必须 [竭尽全力] 避免 [在另一个项目上] 尝试使用 Windows API。
然后他离开了公司。甜的。有谁知道“标准”.NET DLL(系统、System.Core 等)是否真的仅限于 Windows 平台?如果是这样,如何为 Mono 编写任何重要的 .NET 应用程序?必须使用 Mono 重新构建解决方案才能在 Mono 上运行 - 该进程是否链接到 Mono DLL 以代替 MS DLL?
我在此处和 Interwebulator 上查看了答案,但我发现的只是有关 Mono 许可的问题/答案。我感谢任何人对该主题的见解。
【问题讨论】:
-
Mono 提供自己的 System、System.Core 等版本。它们没有 Windows 依赖项。反编译您不拥有其源代码的 DLL 是否可以接受也是显而易见的。从来都不是。
-
我们确实拥有源代码。那我们为什么要反编译呢?血淋淋的细节太长了,这里就不赘述了。感谢您的洞察力 - 作为一个单声道菜鸟,这非常有帮助。
-
@HansPassant:我相当肯定世界上有些地方逆向工程是一种受保护的活动。所以它不像你建议的那样切割和干燥。