不使用.NET Framework运行基于.net的应用程序

时间:2009-06-04 21:14:23

标签: .net deployment .net-2.0

有没有办法在没有安装.net框架的情况下运行基于.net的应用程序。有没有办法做到这一点。有没有可以实现这一目标的软件。商业软件也是可能的。

添加了:

有没有人有VMWare thin client的经验?

13 个答案:

答案 0 :(得分:27)

有几种不同的工具,我试过的几个是:

您可以通过搜索“.NET Linker”找到更多信息。

上面的两个,我试过,似乎工作正常,但我从来没有广泛测试我用它们构建的代码。我主要是出于好奇而尝试过它们。

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

如果您想编写更多针对最终用户的软件,那么.NET安装可能会将其关闭。

答案 1 :(得分:16)

您可以使用mono来静态链接所需的所有框架dll。

当然,这限制了你对框架的单声道实现,这种情况越来越好,但在一些地方仍然不完整。


<强>更新
根据您的各种评论,我最好的建议是使用框架的2.0版本。这将在Windows 2000上安装得很好,没有问题,如果需要,你可以从Visual Studio 2008中定位它。


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

几乎没有家庭用户拥有Windows 2000.家庭用户最终得到(颤抖)Windows ME,大约在同一时间发布,因此几乎完全转向Windows XP。你更有可能在家中看到Windows 98机器而不是Windows 2000,甚至微软仍然不支持Windows 98。

另一方面,很多企业仍然大量使用Windows 2000机器。但是,业务环境通常不会在安装.Net框架时出现问题。如果必须,他们甚至可以通过组策略部署自动将其添加到计算机中。

答案 2 :(得分:6)

使用Mono,它由Novell开发并且是开源的

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

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

答案 3 :(得分:4)

我的团队遇到了类似的问题。我们需要在Windows PE下运行我​​们的.NET 3.5 WPF应用程序,它没有可用的.NET框架。我评估了所有选项,发现Xenocode PostBuild是最好的。

它的GUI有点违反直觉,并且在使其工作的道路上有一些障碍,但它自那以后一直很可靠。

如果你走这条路,建议你在生成非托管可执行文件之前确保你的代码已经完全调试,因为你无法调试生成的应用程序(除非你喜欢汇编程序)。

另请注意,嵌入.NET框架会产生很大的可执行文件。 2.0的约20MB,3.5的约40MB。

答案 4 :(得分:3)

你没有提到你想要运行的软件类型,所以我想我会增加两美分。

微软发布了基于.NET的浏览器插件Silverlight,他们一直在与Novell合作推出基于上面提到的Mono编译器的Silverlight版本。 Microsoft原生支持Windows和Mac OS X 10.5。

如果您想了解更多信息,请点击以下链接: http://en.wikipedia.org/wiki/Microsoft_Silverlight http://www.microsoft.com/silverlight/

答案 5 :(得分:2)

当您使用支持.net的操作系统时,这听起来比它的价值更麻烦。

.net 2.0我认为现在甚至作为Windows Update发布,它只有26mb,你只需安装一次。如果你想要win32本地的东西回到非托管C ++。

同时退房:SmallestDotNet(虽然不是Windows 2000,但它提到“不久,微软将为没有.NET Framework版本的XP SP2机器发布超小型下载”。)

答案 6 :(得分:2)

如果不想使用.NET框架,我认为最好考虑使用其他编程语言,它生成一个独立的可执行文件。像德尔福这样的东西,或者如果奖品很重要的话,拉撒路。但我相信还有其他选择。

答案 7 :(得分:1)

我知道.NET框架的唯一替代方法是MONO(对于LINUX)。

答案 8 :(得分:1)

旧问题,但它可以帮助其他读者

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

  

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

请参阅documentation以获得更好的观点。

答案 9 :(得分:1)

它被称为静态链接.net框架。 Mono允许它,也有其他供应商。一种情况是你需要在windows pe中运行。

答案 10 :(得分:0)

如果您的意思是“我可以运行.NET应用程序而无需安装框架吗?”然后答案是否定的,你不能。

如果您的意思是“我可以运行.NET应用程序而无需安装Microsoft的.NET框架和CLR吗?”那么只有你能找到另一种选择才能得到答案,Mono是我唯一知道的。

答案 11 :(得分:0)

为了完整性和需要考虑的事项以及MONO的回应。

您是否考虑过用本机代码编写应用程序?这样你就可以简单地部署你的exe。如果你需要一个RAD环境来提高工作效率,那么像Delphi或C ++ Builder这样的工具会给你一个非常FCL的感觉(Delphi的VCL是由Anders Hejlsberg在他搬到MS之前构建的,所以可能没有C#感觉非常熟悉的共同发生Delphites)

答案 12 :(得分:-1)

This是我发现的更好的解释之一(<众多)

  

实际上,这是不可能的。从理论上讲,编译器可以检查       您的应用程序正在使用的所有类,并在您的应用程序中包含该代       应用程序,并将整个事物编译为本机代码。但是,这仍然没有       CLR本身的帐户,其中包含垃圾等核心功能       收集器,装配装载器,元数据读取器等。所有这些都是原生的       代码,所以它们必须重复。

     

此外,并非.NET类中的所有方法都在托管代码中。如果你看看       在Reflector中反汇编的代码,你会看到一些方法被标记出来       使用MethodImplAttributes.InternalCall标志。这意味着实际       该方法的实现是CLR的内部。任何编译C#的系统       (或任何其他.NET语言)本机代码必须复制所有这些,       那将是一项艰巨的努力。由此产生的应用程序可能会相当       大。