首页 > 开发 > 综合 > 正文

C# 积木模块 ABC(二)在C#中部署应用程序

2024-07-21 02:22:08
字体:
来源:转载
供稿:网友
在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);


}


}

最大的网站源码资源下载站,

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表