这里的许多人可能对Joel Spolsky篇最受欢迎的博客帖子之一Please Sir, May I Have a Linker很熟悉,在这篇博文中,他迫切希望找到一种方法来消除对.NET框架的依赖,这样就可以开发和销售独立的应用程序.
当时,Visual Studio开发团队的Jason Zander名成员回答了with his views on the topic个问题,认为这个话题有点没有意义--在运行时修复安全问题(以及其他问题)的能力是他们主要关心的问题.总体而言,很小的管理费用是值得的.
快进到2009年.现在有一些团体声称拥有C#Linker.(杰森·赞德甚至说,实施一项计划不需要太多时间.)而不是十几个可爱的梅格下载的.NET 1.0,我们现在已经完成了一个200-300 mb的大规模跨平台测试.NET 3.5安装程序,其中包含的版本.NET,用于x86、x64和ia64.微软减少运行时大小的建议包括:
- 解压可再发行文件,移除你不想要的目标平台,然后重新组装
- 使用只下载平台库的web bootstrap 程序
- 使用客户端配置文件安装程序(2008年末的新功能),它的库有限,只能在x86上运行
更糟糕的是,据我所知(如果我错了,请纠正我),客户端配置文件甚至没有在windows中注册为有.NET 3.5已安装.这意味着如果有多个.NET 3.5客户端应用程序安装在计算机上,没有任何应用程序会看到彼此,并且运行时会一次又一次地重新安装!
我真的不知道微软在想什么.即使假设最坏的安装情况是针对一个目标平台(例如x64),并且只需要包含这些库,你的应用程序的开销仍然会超过60MB.哪怕是最知名的.网络应用,绘画.如果他们在发布一个免费应用程序时遇到问题,那么世界其他地方呢?最后,他们必须在安装自己的应用程序之前完成Make a bootstrapper that installed Microsoft Installer 3.1, the .NET runtime bootstrapper, and all their other dependent libraires个步骤.
那怎么样.链接器.有没有好的工具存在?或者有没有一个工具可以让用户在不需要安装大规模应用程序的情况下构建一个C#应用程序.NET运行时?
更新:看来有几个 Select :
单声道:
- Mono has its own linker美元.从下面的答案来看,它看起来工作得很好.
.NET:
- Xenocode似乎是一个可用的和有效的.
- Thinstall是VMware推荐的另一款产品.
- There's another linker by Remotesoft.他们称之为"混淆器".有什么 idea 吗?
- Found another by Rustemsoft called Skater .NET Obfuscator美元.有人认识他们吗?
- ILmerge by Microsoft was also suggested;这看起来只执行任务的一部分(即合并库,而不是剥离未使用的位).
看起来Mono工具正在被使用;那这个呢.基于网络的工具?还有其他的体验吗,还是我们只能等待微软推出3.5版给所有人?想到要花多长时间,我不寒而栗.NET 4.0即将发布...