2010-07-22 136 views
0

嘿傢伙 - 我剛剛用c#寫了一個應用程序,並準備部署它。之前從未部署過c#應用程序。部署c#應用程序 - 用戶需要安裝.net框架?

我部署了它,VC#輸出了一個.application文件,應用程序文件夾和一個安裝程序。我的一位用戶運行安裝程序(Windows 7),並被提示下載/安裝.net框架 - 這花費了10分鐘。這對我的應用程序的簡單程度來說是不可接受的。

此外,我將需要這個應用程序能夠在mac osx和linux上運行,如果可能的話。我是否應該用Java寫這個(我的計劃很差)。我有什麼選擇?

+3

Java與.NET類似,因爲用戶必須下載JRE才能運行Java應用程序。這兩個選項都可以正常工作。查閱Mono在OSX和Linux上運行.NET。 – drharris 2010-07-22 16:42:55

+0

感謝球員的所有幫助。學到了很多。我的問題是,如何使用舊版本的框架分發我的應用程序,以便更多用戶不需要安裝新的.net版本?我正在使用VC#2010 – 2010-07-22 16:55:45

+2

更改目標框架http://msdn.microsoft.com/en-us/library/bb398202.aspx – 2010-07-22 17:03:07

回答

8

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以外的其他方面沒有真正的興趣)。

+0

有沒有任何理由爲什麼用戶與Windows 7沒有安裝框架?我如何知道我使用的是哪個版本?我可以將.net框架更改爲舊版本,以獲得更好的兼容性嗎? – 2010-07-22 16:44:45

+0

@whydna你可以在這裏找到這個信息:http://en.wikipedia.org/wiki/.NET_Framework - 在Windows 7中,.NET 3.5是默認的。 – Jesper 2010-07-22 16:47:53

+0

您最好將.NET框架與您的應用程序一起分發。 http://support.microsoft.com/kb/324733 – MCain 2010-07-22 16:48:19

3

.NET應用程序需要.NET框架。 Java應用程序需要JRE。你的應用很簡單,因爲.NET爲你做了很多工作。許多公司使用C++編寫桌面應用程序,但您必須注意跨平臺問題。

+0

現在我已經在c#中編寫了應用程序,對於跨平臺兼容性有什麼選擇? – 2010-07-22 16:50:37

+0

跨平臺C#最好的選擇是使用單聲道(就像我和其他人在他們的答案中所說的那樣)。 – Justin 2010-07-22 16:58:51

2

是的,編譯爲一個管理運行時運行任何語言(.NET或單聲道的CLR,Java的JVM),你將需要有安裝運行。 C#應用程序可以編譯爲在.NET CLR上的Windows上運行,也可以在您提到的在Mono運行時上運行的所有平臺上運行。或者,Java應用程序將編譯爲在Java JRE上運行,這也與您提到的所有平臺兼容。

所以用兩種語言有可能這個額外的安裝成本,以及與任何一種語言,你可以達到你想要的。

1

爲了使用您的應用程序,您需要在客戶端的系統上安裝.NET。

至於運行跨平臺 - 取決於您的應用程序如何編寫,這可能很簡單或困難。

你可能想看看Silverlight。這在OS X上直接支持,並通過Moonlight在Linux上運行。

另一種方法是使用Mono運行其他平臺上的.NET應用程序。

1

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#項目文件):

http://monodevelop.com/

+0

謝謝賈斯汀的鏈接,你搖滾! – 2010-07-22 17:04:22

+0

感謝whydna,我很高興我能幫上忙。如果我們能夠幫助你,請考慮接受別人的回答。 – Justin 2010-07-22 17:08:55

0

Java一樣,網絡語言需要安裝運行。完整的.Net框架對於小型應用程序來說有時候太大了,所以它有一個小型版本,叫做緊湊型框架,佔用空間更小,可以更快地安裝和下載。你可以在http://msdn.microsoft.com/en-us/netframework/aa497273.aspx閱讀。正如其他答案所指出的,大多數當前版本的Windows都帶有各種版本的.Net框架,因此每個用戶可能不需要此安裝。

至於你跨平臺的需求去單允許在Linux上運行.NET應用程序,我不知道OSX上運行它們。我的假設是你不能。不幸的是,您的跨平臺需求使.Net成爲一個不好的選擇,你應該已經用Java去了。

0

其他人給了你複雜的答案。那麼這是我的簡單答案。需要.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作爲目標。

0

您可以更改屬性選項卡中的目標框架。如果你在VS2008中啓動一個項目,默認是.net 3.5,VS2010是.net 4.0。如果你不需要高級功能,你可以將你的目標變回2.0,而現在大多數計算機上都應該可以使用這個功能(我猜可能會有90%以上)。確保刪除2.0中不可用的依賴關係(如System.Linq,System.DataSet.Extensions)和相關的導入(但編譯器會告訴你該怎麼做)。

相關問題