部署c#应用程序 - 用户需要安装.net框架?
嘿家伙 - 我刚刚用c#写了一个应用程序,并准备部署它。之前从未部署过c#应用程序。部署c#应用程序 - 用户需要安装.net框架?
我部署了它,VC#输出了一个.application文件,应用程序文件夹和一个安装程序。我的一位用户运行安装程序(Windows 7),并被提示下载/安装.net框架 - 这花费了10分钟。这对我的应用程序的简单程度来说是不可接受的。
此外,我将需要这个应用程序能够在mac osx和linux上运行,如果可能的话。我是否应该用Java写这个(我的计划很差)。我有什么选择?
C#编译到上CLR,虚拟机这是在.NET框架的核心运行字节码。所以是的,你需要.NET框架来运行它。的Windows(XP,Vista中,7等)的
最新版本附带一些版本预装了.NET框架,使您的用户不必下载并安装它。但是,您可能使用了尚未安装在您的(某些)用户的计算机上的版本。
对于Linux和Mac OS X,有Mono,它是.NET的开源实现,但它不包含Microsoft的.NET包含的所有内容,因此您的程序可能无法在Mono上完全运行。
使用Java是不是在你的用户需要下载并安装JRE(Java运行时环境)运行Java程序,非常类似于.NET框架意义上的真正的解决方案。如果您使用过Java,这样做的好处是Java比.NET更具跨平台兼容性(Microsoft对于使.NET运行于Windows以外的其他方面没有真正的兴趣)。
有没有任何理由为什么用户与Windows 7没有安装框架?我如何知道我使用的是哪个版本?我可以将.net框架更改为旧版本,以获得更好的兼容性吗? – 2010-07-22 16:44:45
@whydna你可以在这里找到这个信息:http://en.wikipedia.org/wiki/.NET_Framework - 在Windows 7中,.NET 3.5是默认的。 – Jesper 2010-07-22 16:47:53
您最好将.NET框架与您的应用程序一起分发。 http://support.microsoft.com/kb/324733 – MCain 2010-07-22 16:48:19
.NET应用程序需要.NET框架。 Java应用程序需要JRE。你的应用很简单,因为.NET为你做了很多工作。许多公司使用C++编写桌面应用程序,但您必须注意跨平台问题。
现在我已经在c#中编写了应用程序,对于跨平台兼容性有什么选择? – 2010-07-22 16:50:37
跨平台C#最好的选择是使用单声道(就像我和其他人在他们的答案中所说的那样)。 – Justin 2010-07-22 16:58:51
是的,编译为一个管理运行时运行任何语言(.NET或单声道的CLR,Java的JVM),你将需要有安装运行。 C#应用程序可以编译为在.NET CLR上的Windows上运行,也可以在您提到的在Mono运行时上运行的所有平台上运行。或者,Java应用程序将编译为在Java JRE上运行,这也与您提到的所有平台兼容。
所以用两种语言有可能这个额外的安装成本,以及与任何一种语言,你可以达到你想要的。
为了使用您的应用程序,您需要在客户端的系统上安装.NET。
至于运行跨平台 - 取决于您的应用程序如何编写,这可能很简单或困难。
你可能想看看Silverlight。这在OS X上直接支持,并通过Moonlight在Linux上运行。
另一种方法是使用Mono运行其他平台上的.NET应用程序。
C#应用程序需要在本地机器上运行的CLR(.NET)的实现才能运行。一个Java应用程序将需要JVM的实现,所以它确实没有什么不同。在Windows上,我希望大多数人有.NET安装。
看看Mono项目尽可能在Linux和Mac上运行它:
可以考虑http://mono-project.com/Main_Page
的一件事是使用.NET Framework的旧版本,以确保最大它已经安装了多少人。我会使用.NET 3.5甚至2.0,如果你不需要花哨的新功能。例如,这已经在Windows 7上安装。
由于Windows 7的用户必须下载框架我假设你正在指定.NET 4,你必须使用Visual Studio 2010(或明示的版本),这意味着。这里告诉你一个链接如何针对不同版本的框架:
http://msdn.microsoft.com/en-us/library/bb398202.aspx
一个快速笔记单,这是一个很好的跨平台的选项,但它不支持为Windows Presentation Foundation( WPF)GUI框架。您将不得不使用Windows窗体或为不同的平台创建不同的前端。
如果你想创建一个Linux GUI(也可以在Windows和Mac),你可以尝试GTK#:
http://www.mono-project.com/GtkSharp
对于Mac机GUI你可以检查出的MonoMac:
http://mjhutchinson.com/journal/2010/06/09/monomac_in_monodevelop
跨平台.NET开发一个优秀的IDE是MonoDevelop的(它会读取你的VC#项目文件):
谢谢贾斯汀的链接,你摇滚! – 2010-07-22 17:04:22
感谢whydna,我很高兴我能帮上忙。如果我们能够帮助你,请考虑接受别人的回答。 – Justin 2010-07-22 17:08:55
Java一样,网络语言需要安装运行。完整的.Net框架对于小型应用程序来说有时候太大了,所以它有一个小型版本,叫做紧凑型框架,占用空间更小,可以更快地安装和下载。你可以在http://msdn.microsoft.com/en-us/netframework/aa497273.aspx阅读。正如其他答案所指出的,大多数当前版本的Windows都带有各种版本的.Net框架,因此每个用户可能不需要此安装。
至于你跨平台的需求去单允许在Linux上运行.NET应用程序,我不知道OSX上运行它们。我的假设是你不能。不幸的是,您的跨平台需求使.Net成为一个不好的选择,你应该已经用Java去了。
其他人给了你复杂的答案。那么这是我的简单答案。需要.NET框架来运行.NET应用程序,Java也需要JVM(如MCain所说)。从Windows Vista开始,Microsoft包括Windows内置的.NET Framework。此外,.NET的版本从1.0到4.0。使用Vista和Windows 7时,默认安装.NET 3.5。我认为你的应用程序是针对.NET 4.0的,这就是为什么Windows 7用户需要安装.NET框架。对我来说,如果我必须写一个简单的程序,我将使用.NET 2.0(更高版本=大库等),让我的用户(如果他们是Vista或Windows 7)没有安装。 NET再次运行我的软件。您可以从Visual Studio中的“新建项目”窗口中选择要将哪个版本的.NET作为目标。
您可以更改属性选项卡中的目标框架。如果你在VS2008中启动一个项目,默认是.net 3.5,VS2010是.net 4.0。如果你不需要高级功能,你可以将你的目标变回2.0,而现在大多数计算机上都应该可以使用这个功能(我猜可能会有90%以上)。确保删除2.0中不可用的依赖关系(如System.Linq,System.DataSet.Extensions)和相关的导入(但编译器会告诉你该怎么做)。
Java与.NET类似,因为用户必须下载JRE才能运行Java应用程序。这两个选项都可以正常工作。查阅Mono在OSX和Linux上运行.NET。 – drharris 2010-07-22 16:42:55
感谢球员的所有帮助。学到了很多。我的问题是,如何使用旧版本的框架分发我的应用程序,以便更多用户不需要安装新的.net版本?我正在使用VC#2010 – 2010-07-22 16:55:45
更改目标框架http://msdn.microsoft.com/en-us/library/bb398202.aspx – 2010-07-22 17:03:07