Winforms 如何防止应用程序部署文件夹中的必备文件重复?

Winforms 如何防止应用程序部署文件夹中的必备文件重复?,winforms,clickonce,publishing,prerequisites,Winforms,Clickonce,Publishing,Prerequisites,我有一个.NET3.5SP1WinForms应用程序。我已使用以下设置将其设置为ClickOnce部署: 发布到位置:\\fileserver\installers\myapp\ 先决条件:Windows Installer 3.1、.NET Framework 3.5 SP1 从以下位置下载必备组件:\\fileserver\installers\common\ 应用程序可脱机使用(安装以添加/删除程序和“开始”菜单) 我们的用户很可能无法访问互联网或已经安装了3.5。由于它们都将位于公

我有一个.NET3.5SP1WinForms应用程序。我已使用以下设置将其设置为ClickOnce部署:

  • 发布到位置:\\fileserver\installers\myapp\
  • 先决条件:Windows Installer 3.1、.NET Framework 3.5 SP1
  • 从以下位置下载必备组件:\\fileserver\installers\common\
  • 应用程序可脱机使用(安装以添加/删除程序和“开始”菜单)
我们的用户很可能无法访问互联网或已经安装了3.5。由于它们都将位于公司内部网上,我们已将必要的安装程序放置在他们都可以访问的网络共享位置

在缺少.NET3.5的机器上测试安装时,一切正常。它安装了prereqs和应用程序,启动时没有问题

问题是,每次我部署应用程序(通过“发布”按钮)时,Visual Studio 2008都坚持将所有必备文件/文件夹从我的开发PC复制到网络位置(installers\myapp)。这导致我的20MB应用程序在文件夹中的容量约为200MB。这实际上复制了所有内容,因为~200MB的prereq已经在installers\common文件夹中。正如我所说,它安装得很好。如果我删除VS放在myapp文件夹中的prereq,它甚至可以正常安装,这可能是因为安装程序无论如何都是从公共位置获取它们的(如“先决条件”对话框中指定的)

这也许是一个微不足道的问题,因为没有任何问题,它会工作得很好,但它很烦人,原因有两个:

  • 这会降低部署速度,因为每次向应用程序发布一个小更改时,我都必须通过线路传输200+兆欧
  • 它浪费了文件服务器上的空间

  • 我可以通过每次简单地删除文件夹来解决第二个问题,但这本身就是一个恼人的额外步骤。

    您可以做的一件事是使用Bootstrapper清单生成器滚动您自己的先决条件。将URL设置为要为部署提供服务的位置。然后将VS中的选项设置为“从供应商位置下载”


    它将从您在BMG中设置的URL下载部署,并且不会在每次发布ClickOnce应用程序时部署先决条件。

    您尝试过吗?虽然还没有更新,但我发现它仍然有效。