如何使 c#.net 应用程序可移植
本文关键字:应用程序 可移植 net 何使 | 更新日期: 2023-09-27 18:34:02
我正在寻找一种使我的c#.net应用程序可移植的方法(或至少不需要安装)。一些背景:我正在为我们的客户开发一个小型文件管理器。由于并非我们客户的每个员工都拥有管理员权限,因此我需要尽可能轻松地使用它。
我的想法是只提供一个.exe或Zip(包含.net的.exe + dll),所有员工都可以通过双击使用它。
有没有办法将 dll "绑定"到 exe?
为什么不直接使用 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"