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

本文关键字:应用程序 可移植 net 何使 | 更新日期: 2023-09-27 18:34:02

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

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

有没有办法将 dll "绑定"到 exe?

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

为什么不直接使用 ClickOnce 部署?

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

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

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

可以使用

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

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

试试 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

基本上,用.net编写的程序是"可移植的" - 你不需要安装它。(但兼容的 .NET 框架必须安装在客户端计算机上)

如果你想提供单个程序集,你需要下载并安装 IlMerge 使用(参见 Dai 的答案),然后定义构建后命令,或者我通常做一个包含以下内容的 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

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

我还建议"混淆"您的程序集 - 例如,您可以使用良好的开源实用程序"ConfuserEx"