在没有.NET Framework的情况下运行基于.NET的应用程序

36

有没有一种方法可以在没有安装 .NET Framework 的情况下运行基于 .NET 的应用程序?有没有软件可以实现这一点?商业软件也可以。

补充:

有没有人使用过VMWare Thin Client


7
为什么.NET是免费的? - Lucas B
6
你的情况是什么?也许有一种解决方案不是你所询问的。"Slim-installation"?一些奇怪的设备?Java公司的秘密项目,而企业政策检测.NET? - Anthony Mastrean
3
.NET客户端框架是.NET 3.5的一个子集。自.NET 3.0起,不支持Windows 2000。由于原帖需要在Win2k上安装,我敢打赌客户端框架不是一个选项。 - Joe White
不,使用客户端档案能否创建命令行应用程序? - crauscher
没错,我们部署了一个 .net 2.0 应用程序。 - crauscher
显示剩余2条评论
13个回答

27

有几种不同的工具可供选择,我尝试过的有:

您可以通过搜索 ".NET Linker" 找到更多工具。

我试用过上述两种工具,似乎效果还可以,但我没有广泛测试使用这些工具构建的代码。我主要出于好奇而尝试使用它们。

我的.NET应用程序主要由IT部门使用。对他们来说,安装.NET框架并不是什么大问题。

如果您想编写更针对最终用户的软件,则.NET安装可能会让他们失去兴趣。


你的目标平台是什么? - crauscher
我在Windows XP和Server 2003上使用MS .NET 2.0进行了测试。 - TWA
1
@crauscher - 是的,它们似乎工作正常,但我没有完全测试所有功能。 - TWA
Spoon Studio似乎是一种虚拟机。我猜它并不是轻量级的东西。Salamander在2008年进行了最后一次更新,支持Vista。我认为它现在已经死了。 - Alois Kraus
沙漠蝾螈不响应信息或演示的请求。对我来说已经死了。 - codenheim

16

您可以使用mono将所有需要的框架dll进行静态链接。

当然,这会限制您使用框架的mono实现,它正在变得越来越好,但在某些地方仍然不完全。


更新:
根据您的各种评论,我最好的建议是使用2.0版本的框架。这样可以轻松安装在Windows 2000上,如果需要的话,您可以从Visual Studio 2008目标它。


我也有点好奇您对Windows 2000的要求。您是部署到商业还是家庭环境中?

几乎没有家用户使用Windows 2000。家庭用户最终选择了(恶心)Windows ME,该系统与Windows 2000几乎同时发布,因此他们几乎完全转移到了Windows XP。在家庭中,您更有可能看到Windows 98机器而不是Windows 2000,即使微软也不再支持Windows 98。

另一方面,许多企业仍大量使用Windows 2000机器。但是,企业环境通常不会安装.NET框架出现问题。他们甚至可以通过组策略部署自动向机器添加它。


我更倾向于支持Mono的实现,希望微软的.NET变得无关紧要。不过这不太可能发生。 - Aiden Bell
1
@Unknown - 不是LGPL许可。如果它是在普通的GPL下许可,那么你就必须开源你所有的代码。 - Jason Baker
2
@Jason,不,那是错误的。如果你静态链接LGPL库,那么最终用户将无法使用自己的LGPL库版本重新编译应用程序(这是LGPL的要求)。因此,你必须开源。因此,你必须动态链接LGPL库以避免这种情况。 - Unknown
@TwistedAphid:你上次尝试是什么时候?在过去的一年左右,它已经取得了长足的进步。 - Joel Coehoorn
4
@Unknown,那不是严格的事实。如果您实际阅读LGPL(第6节),您会发现,只要还提供一种方式让最终用户修改LGPL部分,您就可以静态链接。例如,您可以按自己选择的条款提供LinkedWithMono.exe,同时还需提供JustMyAssembly.exe和Mono.zip,以使最终用户可以更改Mono部分。 - Kevin
显示剩余3条评论

6

使用Mono,它是由Novell开发的开源软件

编辑:问题是关于在没有安装运行时环境的情况下运行,而不管“供应商”如何。即便如此,这里有一个指向Mono维基百科条目的链接。享受吧。

http://en.wikipedia.org/wiki/Mono_(software)


2
我认为问题不在于安装 the .NET框架,而在于安装 a .NET框架。Mono 仍然是一个 .NET框架。 - EMP

4
我的团队遇到了类似的问题。我们需要在没有可用.NET框架的Windows PE下运行我们的.NET 3.5 WPF应用程序。我评估了所有选项,并发现Xenocode PostBuild是最好的选择。
它的GUI有点反直觉,并且在让它工作时会遇到一些问题,但自从使用以来一直很可靠。
如果你选择这条路,请注意在生成非托管可执行文件之前确保你的代码已经完全调试好,因为你不能调试生成的应用程序(除非你喜欢汇编语言)。
还要注意,嵌入.NET框架会使可执行文件变得很大。2.0版本约为20MB,3.5版本约为40MB。

你尝试过哪个链接器软件? - crauscher
我们最终使用的Xenocode PostBuild产品可以完成整个过程,包括使用.NET fw构建最终可执行文件。 - anelson

3

如果不想使用.NET框架,我认为最好考虑使用其他编程语言,生成独立的可执行文件。例如Delphi或者如果奖金重要的话,可以考虑Lazarus。但我相信还有其他选择。


3
您没有提到想要运行的软件类型,所以我认为我应该做出贡献。

Microsoft发布了Silverlight,这是一个基于.NET的浏览器插件,他们一直在与Novell合作,推出了一个基于上述Mono编译器的Silverlight版本,称为Moonlight。Microsoft原生支持Windows和Mac OS X 10.5。

如果您想获取更多信息,以下是一些链接: http://en.wikipedia.org/wiki/Microsoft_Silverlight http://www.microsoft.com/silverlight/


2
这似乎是在使用支持 .net 的操作系统时,更麻烦而不值得的事情。
现在甚至可以通过 Windows 更新安装 .net 2.0,只有 26mb,且仅需安装一次。如果您需要 Win32 原生支持,请返回非托管 C++。
此外,还应查看:SmallestDotNet(尽管它不适用于 Windows 2000,但提到“很快,微软将为没有任何 .NET Framework 版本的 XP SP2 机器发布一个超小型下载”)。

1

虽然这是一个旧问题,但它可以帮助其他读者

您可以使用IKVM的二进制文件来运行Mono/.Net/Java应用程序,而无需预先安装框架。 只需记住以下几点:

您应该能够成功执行它。(在Windows .NET上,请记得将IKVM dll复制到当前目录。)

请参阅文档以获取更好的视图。


1
它被称为静态链接 .net framework。Mono 允许它,其他供应商也一样。一个例子是如果你需要在 Windows PE 中运行。

1
我所知道的替代.NET框架的唯一选择是MONO(适用于LINUX)。

4
Mono也可以运行在Windows操作系统上。 - Joel Coehoorn
谢谢Joel,我不知道,太好了。 - tekBlues

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接