如何使c#.net应用程序可移植

时间:2014-12-12 11:34:41

标签: c# .net portable-executable

我正在寻找一种方法来使我的c#.net应用程序可移植(或者至少不需要安装)。一些背景:我正在为我们的客户开发一个小型文件管理器。由于并非我们客户的每个员工都获得了管理员权限,因此我需要尽可能轻松地使用它。

我的想法是只发送一个.exe或Zip(包含.net + dll的.net),所有员工都可以通过双击来使用它。

有没有办法将dll“绑定”到exe?

4 个答案:

答案 0 :(得分:0)

您可以使用ILMerge将多个.NET程序集组合在一起:http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx

它在概念上与C / C ++中的静态链接器有些相同(除了假装.lib文件可以直接执行)。

答案 1 :(得分:0)

为什么不直接使用ClickOnce?

http://msdn.microsoft.com/en-GB/library/142dbbz4%28v=vs.90%29.aspx

无需管理员权限...自动更新...什么不喜欢?

(只是部署可执行文件是一种消除更新客户端能力的好方法......为什么这样做?)

答案 2 :(得分:0)

尝试 ILMerge

ILMerge是一个用于将多个.NET程序集合并到单个.NET程序集中的实用程序

http://www.microsoft.com/en-in/download/details.aspx?id=17630

我也使用这个命令行工具将几个dll和exe合并到单个exe中,使用非常简单:

ilmerge /target:winexe /out:destination.exe source.exe dll_1.dll dll_2.dll dll_3.dll

答案 3 :(得分:0)

基本上,用.net编写的程序是“便携式的”。 - 您不需要安装它。 (但必须在客户端计算机上安装兼容的.NET框架)

如果你想提供单一程序集,你需要下载并安装IlMerge utitlity(参见戴的回答),然后定义后期构建命令或者我通常做一个包含这样内容的bat文件:

" c:\ Program Files(x86)\ Microsoft \ ILMerge \ ILMerge.exe" / target:winexe / targetplatform:" v4,C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0" /out:ALLINONE.exe PROGRAM.exe LIBRARY1.dll LIBRARY2.dll

注意,路径取决于它在您的系统上的位置......

我还建议{' obfuscate'您的程序集 - 您可以使用例如良好的开源实用程序' ConfuserEx'