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

问题描述 投票:0回答:5

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

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

有什么方法可以将dll“绑定”到exe吗?

c# .net portable-executable
5个回答
0
投票

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

它在概念上有点等同于 C/C++ 中的静态链接器(除了假装

.lib
文件是直接可执行的)。


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

0
投票

基本上,用 .net 编写的程序是“可移植的”——您不需要安装它。 (但客户端机器上必须安装兼容的.NET框架)

如果您想提供单个程序集,则需要下载并安装 IlMerge 实用程序(请参阅戴的答案),然后定义构建后命令,或者我通常会创建一个包含如下内容的bat文件:

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

注意,路径取决于您的系统上的情况...

我还建议“混淆”你的程序集 - 你可以使用例如好的开源实用程序“ConfuserEx


0
投票

在项目的 Visual Studio 中选择发布。 (注意:我使用的是 .NET 控制台应用程序)

使用以下发布配置文件:

如果您单击“发布”,它应该创建一个每个人都可以运行的 .exe 文件,而无需安装 .NET 框架。


-1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.