C# 在C语言中创建可移植(非安装)windows应用程序#

C# 在C语言中创建可移植(非安装)windows应用程序#,c#,.net-3.5,dll,exe,portability,C#,.net 3.5,Dll,Exe,Portability,我有一个.NET3.5应用程序,我想让它可移植。 它很简单,运行非常完美,我已经将.EXE+.DLL发送给了一些朋友,当在同一个文件夹中运行带有.DLL和.ICO(我在其中使用过)的EXE时,它可以正常工作 我想要的很简单:创建一个单独的EXE文件,它关心dll、图像和我想要的任何东西,而不需要设置,也不需要安装。(又称便携式) 我可以考虑将它迁移到.NET 2,如果需要的话,我不使用任何3.5唯一的功能,事实上,我不太清楚为什么我使用3.5(无论如何我是新的编程)< /P> 我想要任何关于如何

我有一个.NET3.5应用程序,我想让它可移植。 它很简单,运行非常完美,我已经将.EXE+.DLL发送给了一些朋友,当在同一个文件夹中运行带有.DLL和.ICO(我在其中使用过)的EXE时,它可以正常工作

我想要的很简单:创建一个单独的EXE文件,它关心dll、图像和我想要的任何东西,而不需要设置,也不需要安装。(又称便携式)

我可以考虑将它迁移到.NET 2,如果需要的话,我不使用任何3.5唯一的功能,事实上,我不太清楚为什么我使用3.5(无论如何我是新的编程)< /P> 我想要任何关于如何做的提示、链接或解释,因为将.rar发送给我的朋友并告诉他们在他们调用的所有“奇怪文件”中提取并运行.exe真的很烦人(此外,不是每个人的文件夹中都有扩展名显示,所以这是一场噩梦)

(我在StackOverflow中搜索过,没有找到任何回答我所问问题的问题,我发现唯一一个类似的问题是在讨论windows机器中的框架可用性、语言选择和没有好的答案。)

您可以使用将所有程序集合并到可执行文件中。我希望你的图标已经是一个嵌入式资源——或者你至少应该能够创建它

以.NET 2.0为目标将使该应用程序具有更广泛的可移植性,因为它只能在只安装了.NET 2.0的机器上工作-但我不知道2.0与3.5部署的比例是什么,更重要的是,它们可能与在目标受众之外部署的比例不同。

您也可以使用它们来虚拟化应用程序。特别是针对.NET的Xenocode。

您可以将应用程序所需的任何数据(程序集、图标等)添加为资源或嵌入文件

使用资源编辑器,或者如果您想让您的手更脏,您可以通过在解决方案资源管理器中右键单击项目并执行“添加现有项”、获取文件属性并将Build Aciton设置为“Embedded resource”来添加任何文件

像图标这样的资源可以直接使用-如DrawIcon(Properties.Resources.MyIcon)


可以使用Application.GetManifestResource(和相关方法)加载数据文件,以获取要从中加载的流。例如,对于一个程序集,您可以直接从清单资源流中为您的资源使用assembly.Load()。

我认为您的意思是易于分发-不可移植(可移植意味着运行在不同的操作系统和/或硬件体系结构上)。来吧,大家,让我们来讨论一下,这个问题的一个答案(这可能会引起很多人的兴趣)太少了!我在这里提供任何其他可能有助于回答的信息。@Oded-portable现在是一个有多种含义的词,它确实用来表示跨平台,但现在它通常(更多?)的意思是“从U盘或同等设备运行,无需安装”@Marcelo——你的答案来自Jon Skeet,这里的#1用户…@Austin Salonen我完全知道,但我不认为在他回答后,任何其他用户都应该犹豫回答,因为我注意到了,谢谢!关于图标,我不确定如何做,但我会找到答案。我会继续等待,也许会有更好的答案omes up!P.S.这样做的好处是,将数据文件和程序集嵌入到.exe中非常容易,维护非常容易,所有文件都自动列在解决方案资源管理器中,并且不需要任何第三方工具或后期构建步骤就可以正常工作-它完全依赖于内置的VS/C#/.net2.0功能。