C# 積木模組 ABC(二)在C#中部署應用程式

來源:互聯網
上載者:User
程式 在C#中部署應用程式

在Visual Studio.NET中部署工程非常簡單。大部分程式都可以通過一些方便的嚮導自動完成,而不需要費什麼力氣。但是要記住,根據請看,可能還需要在機器上安裝Windows組件的更新Beta 1版。當然還需要Microsoft .NET架構。還要注意一點:Microsoft說當前的部署到了將來可能會無效。


一旦在Visual Studio中完成了應用程式的編寫,就可以按照下述步驟開始部署:


首先,從檔案菜單中選擇增加新的工程檔案:



然後,選擇設定和部署工程,這時Visual Studio會提供一個部署工程的選項列表,根據是否要部署到Web上,再決定是採取壓縮的.cab檔案形式,還是採取Windows Setup程式的形式:




下表是不同類型的工程檔案設定以及它們的描述和用途:


工程設定類型 描述 用途

CAB工程: 一個Microsoft壓縮Cabinet檔案,可以用cabarc.exe開啟。 用於部署可從網上下載的應用程式。

部署嚮導:為web建立部署檔案,或者為使用.msi設定檔案的windows安裝程式建立部署檔案,並且將它們部署到遠程機器或本地機器上。 用於同時為工程建立設定檔案和部署檔案。

合併模組:被不同應用程式共用的包組件。 部署一個組件庫。
Web設定嚮導 為基於web的應用程式建立一個安裝程式,程式將安裝在一個web伺服器的虛擬根目錄中。 用於為web伺服器建立安裝程式。

設定嚮導:使用一個.msi設定檔案為windows安裝程式建立設定檔案。 用於建立設定檔案。看起來好象只建立了.msi檔案,但所有東西都壓縮在這個檔案中。運行時將程式放在程式檔案目錄中。



我們選擇使用設定嚮導來部署這個特定的應用程式。設定嚮導為建立設定工程檔案提供了很好的step by step對話方塊:



同對話方塊中所指出的一樣,嚮導建立了一個安裝器,你可以用它來安裝工程檔案。下一屏詢問希望建立哪種類型的安裝器:



我們想要的是一個完全的老式Windows安裝樣式,因此選擇“Create a setup for a rich client application”。下一屏提示要安裝到哪個檔案中:



如果只是想部署沒有原始碼或文檔的應用程式,那麼就選擇“Primary output”(基本輸出)。這樣就為應用程式部署了必要的exe檔案和dll檔案。

下一屏提示想要包含在安裝檔案中而Microsoft沒有包括的附加檔案,如readme.txt、web pages等。在Hangman的情況下,我們增加了音效檔:



最後一屏是一個報告,告訴完成了什麼以及建立的vdp(visual deployment project)在哪裡:



點擊“Finish”(結束)之後,就為部署建立了一個目錄。現在需要建立工程檔案以便部署它,因此從“建立”菜單中選擇“建立方案”(build solution),這樣就建立了安裝應用程式所需要的MySetupProject.msi檔案。


建立MySetupProject.msi後,雙擊它就會啟動安裝程式。對於大多數安裝程式來說,這隻是意味著將所有必要的檔案全部複製到program files下的目錄中。在這裡的hangman工程檔案中,這些檔案指的是所有System.xxx.dll檔案、Microsoft.xxx.dll檔案(CLR 庫)、nlp檔案(通用語言資源)、已耗用時間類庫mscorlib.DLL、mngdist.dll(可能是管理髮送的)、xxx.wav(音效檔),當然還有可執行檔,在這裡是Hangman.exe。


擷取主機的IP地址

可以用.Net的DNS類來擷取一個主機名稱或一個給定主機的IP地址。要想在程式中使用DNS類,就需要包含System.Net:


Include System.Net Reference


比如說想擷取http://www.mindcracker.com/的IP地址,以下代碼就會完成這個任務:


// Call DNS.GetHostName to get IPHostEntry and get the IP address list.

IPHostEntry ipEntry = DNS.GetHostByName ("www.mindcracker.com");


IPAddress [] IpAddr = ipEntry.AddressList;



for (int i = 0; i < IpAddr.Length; i++)


{


Console.WriteLine ("IP Address {0}: {1} ", i, IpAddr.ToString ());


}


另外,使用無參數的GetHostName可以返回本地機器的主機名稱:


string strHostName = DNS.GetHostName ();


然後將這個主機名稱作為參數傳遞給GetHostByName,就可以擷取本地機器的IP地址資訊。


如何調用對話資訊框?


MessageBox.Show("Inavlid File", "File Open Result", MessageBox.OKCancel | MessageBox.IconHand);


如何調用Windows API?

在C#中調用一個API同在VB中調用API一樣。我們應該知道API的DLL名稱,並且使用sysimport引入它。下面這個例子顯示了如何調用MessageBox API:


using System;


class callAPICls {


[sysimport(dll="user32.dll")]


public static extern int MessageBoxA(int h, string m, string c, int type);


public static int Main()


{


return MessageBoxA(0, "Hello World!", "Caption", 0);


}


}


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.