部署无需安装即可运行的Visual Studio应用程序的最佳方法


79

我用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

Answers:


106

这是可能的,而且看似简单:

  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的可能性。

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


2
谢谢,它就像一种魅力!我必须使用项目的“发布”属性的“应用程序文件...”按钮来强制包括所有引用的DLL,因为默认情况下不包括所有引用。
JulienVan 2014年

43
出于好奇,这与直接从\ bin \ Release复制文件有何不同?
Eric Eskildsen

10
我还想知道,这与直接从\ bin \ Release复制文件有什么不同?
CoDeGiRl 2015年

1
真的很不错的答案,我从Application Filespublish选项卡中复制了所有列出的文件,.application, .manifest, .config, .exe and other dlls..谢谢您在答案中的第二点:) ..
Mohammed Sufian 2016年

3
这与仅构建项目并从bin文件夹中获取文件(Debug或Release)没有什么不同。运行发布向导以创建未使用的安装程序只会使项目再次自行构建,就像单击“构建”一样。一个简短的答案是确保项目已生成,然后转到项目的bin文件夹并将文件复制(或压缩以方便复制)到要从中运行程序的位置。您仍然必须确保在用户计算机上安装了正确的.Net版本。它只是你的应用是建立在版本匹配。
杰夫Blenman

2

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

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

  2. 将文件保存到特定文件夹。查找产生的文件(EXE文件,.config,.manifest和.application文件以及任何DLL文件等)-它们都在同一文件夹中,并且通常在bin\Debug项目文件(.csproj)下的文件夹中)。在Visual Studio中,它们位于“应用程序文件”文件夹中,而在其中仅需要.exe和dll文件。(您必须删除ClickOnce和其他文件,然后将此文件夹作为zip文件并分发。)

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


2
为什么需要将DEBUG和TRACE设置为特定值?
彼得·莫滕森

您可以为构建打开“跟踪”或“调试”条件属性,或同时打开两者或两者都不打开。因此,有四种类型的构建:调试,跟踪,两者,或都不选择。某些用于生产部署的版本可能不包含任何版本。大多数调试版本都包含两者。................................................... ........................ msdn.microsoft.com/zh-CN/library/aa983575(v=vs .71).aspx ............................................. ................................................... ..... msdn.microsoft.com/zh-CN/library/ms164714​​.aspx
abe312

1
总是会在stackoverflow上为那些寻求帮助的人提供帮助;)告诉我您不了解哪一部分?经过一些研究,我实际上是通过我的方法提出了一个可行的应用程序。我使用的是Visual Studio 2013
abe312 '16

1
我在VS2015中看不到任何称为“发布”的内容
UuDdLrLrSs

1
Visual Studio 2008和Visual Studio 2017都在“生成”菜单中具有“发布<项目名称>”(也许在Studio 2015中被忽略了吗?)。无论如何,也可以通过项目属性“发布”→“立即发布”来完成(如此处的屏幕截图所示)。
彼得·莫滕森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.