81

我用 C#/.NET 编写了一个相当简单的应用程序,但找不到发布它的好方法。它是一种用户只会运行一次或每隔几个月运行一次的“工具”。因此,我希望有一种方法可以将它部署在不需要安装即可运行的地方(只需在下载后直接双击 EXE 文件即可运行)。

但是,它仍然需要(以某种方式)包含正确版本的 .NET、库等,以便它能够正确运行。我知道这在使用 ClickOnce 时已包含在内,但这仍会将应用程序安装到用户的计算机上。

有没有办法做到这一点?

编辑-\bin\Debug

myAppName.application
myAppName.exe
myAppName.exe.config
myAppName.exe.manifest
myAppName.pdb
myAppName.vshost.application
myAppName.vshost.exe
myAppName.vshost.exe.config
myAppName.vshost.exe.manifest
extraLibrary.dll

以及两个文件夹

app.publish
Resources
4

2 回答 2

115

这是可能的并且看似简单:

  1. 从菜单Build或从项目的属性 → Publish中“发布”应用程序(例如,到驱动器 C 上的某个文件夹)。这将为ClickOnce应用程序创建一个安装程序。
  2. 不是使用生成的安装程序,而是找到生成的文件(EXE 文件和.config.manifest.application文件,以及任何 DLL 文件等)——它们都在同一个文件夹中,通常在bin\Debug项目文件 ( .csproj ) 下面的文件夹。
  3. 压缩该文件夹(保留任何*.vhost.*文件和app.publish文件夹(不需要它们)和 .pdb 文件,除非您预见到直接在用户系统上进行调试(例如,通过远程控制)),并提供它给用户。

另一个优点是,作为 ClickOnce 应用程序,它不需要管理权限即可运行(如果您的应用程序遵循用于应用程序数据的文件夹的常规准则等)。

至于 .NET,您可以检查应用程序中安装(或根本安装)所需的 .NET 最低版本(大多数用户已经安装了它),并显示一个对话框,其中包含指向 Microsoft 网站上下载页面的链接(或指向您可能重定向到 Microsoft 页面的页面之一 - 如果 Microsoft URL 更改,这将使其更加健壮)。由于它是一个小型实用程序,您可以针对 .NET 2.0 来降低用户安装 .NET 的可能性。

有用。我们在开发和测试过程中使用这种方法来避免不断地卸载和安装应用程序,并且仍然非常接近最终应用程序的运行方式。

于 2013-06-05T21:23:23.877 回答
2

首先,您需要通过以下方式发布文件:

  1. BUILD -> PUBLISH 或通过右键单击解决方案资源管理器上的项目 -> 属性 -> 发布或在解决方案资源管理器中选择项目并按Alt+Enter 注意:如果您使用的是Visual Studio 2013,则在属性中您必须转到 BUILD 然后您必须禁用定义 DEBUG 常量并定义 TRACE 常量,您就可以开始了。 表示

  2. 将文件保存到特定文件夹。找到生成的文件(EXE 文件和 .config、.manifest 和 .application 文件,以及任何 DLL 文件等) - 它们都在同一个文件夹中,然后bin\Debug在项目文件 (.csproj) 下方的文件夹中键入)。在 Visual Studio 中,它们位于 Application Files 文件夹中,在其中,您只需要 .exe 和 dll 文件。(您必须删除 ClickOnce 和其他文件,然后将此文件夹制作为 zip 文件并分发。)

注意:ClickOnce 应用程序确实将项目安装到系统中,但它有一个优点。您在此处不需要管理权限即可运行(如果您的应用程序遵循用于应用程序数据的文件夹的常规准则等)。

于 2015-10-05T20:54:32.497 回答