如何使用C#使软件可移植?

时间:2014-01-24 01:18:04

标签: c#

我正在编写一个我需要可移植的简单应用程序(用户可以通过单击.exe运行它而无需运行安装程序)。

我在StackOverflow上找到的关于这个主题的所有其他问题都希望使.NET Framework与软件“可捆绑”,但我不需要。

我找到的解决方法是在项目文件夹中使用/ bin / Debug并在那里使用.exe,但这似乎是“错误的”。还有另一种方法可以用C#portable编写软件吗?

谢谢!

编辑:好的,我真的很蠢,我问了所有错误的问题。但是,你的回答指出了正确的方向。我想知道如何生成.exe发送给我的朋友。我必须做的是将其更改为“Release”并按F6。我添加了这个,所以如果有同样“怀疑”的人能够轻松找到答案。谢谢!

5 个答案:

答案 0 :(得分:5)

转到bin / Debug并使用DLL 错误。

而是从bin / Release中构建并复制一个。

如果文件夹中还有其他内容(* .pdb除外),请注意。您的应用程序可能需要这些附加文件例如,app.config。

答案 1 :(得分:2)

只要运行它的计算机具有您要定位的.NET版本(或兼容版本),所有.NET应用程序都是“可移植的”。这里的关键是确保您的应用程序不依赖于安装程序为您的应用程序工作所需要的事情。示例包括:已注册的DLL(如Interop程序集),注册表项或必须在某些位置找到的组件(例如将某些内容存储在用户的AppData文件夹中)。

答案 2 :(得分:1)

只要您要运行它的计算机具有.NET框架,您就可以使任何.NET应用程序都可移植。如果您正在制作的应用程序没有.NET之外的依赖项,那么它已经完全可移植了。即使它确实具有依赖关系,也只包括具有可执行文件的那些。

答案 3 :(得分:1)

扩展Zerkms的评论:

默认情况下,每个软件都是可移植的。安装程序是一种告诉程序在某个地方搜索资源的方式,这意味着如果该地点不存在,例如:C:\ Windows则该程序将无法运行。

所以只要你有应用程序已经在exe文件或根文件夹搜索中有资源(所以程序在哪里,而不是它应该在哪里)那么你会没事的。

答案 4 :(得分:0)

如果您使用默认控件,只要计算机上安装了软件的运行框架版本,它就应该没问题。如果您正在使用第三方控件,则可以在编译时将dll放入.exe中。请注意,嵌入的dll越多,.exe文件就越大。