安装和部署项目不会升级NuGet DLL

时间:2018-04-05 16:23:04

标签: deployment windows-installer setup-project setup-deployment

我有一个用Visual Studio 2013编写的应用程序,我正在使用安装和部署项目来分发它。 Akash Kava对这个问题的回答中的所有要点都已确定:

Installing a new version of a deployment project over old version

即“DetectNewerInstall”设置为true,“RemovePreviousVersion”设置为true等。我也在更改ProductCode并允许Visual Studio创建新的GUID,但UpgradeCode是相同的。我也在增加作为主要输出添加到安装项目的C#项目的版本号。

因此,当用户在已安装我的软件的计算机上运行安装程序时,它会执行升级。当发生这种情况时,我写的所有内容都升级了。但是,有一些不升级的NuGet引用(SignalR,Owin,Netwonsoft等)。即使在项目和清单中更新了软件包,安装程序也不会用新的版本替换旧版本的NuGet .dll。当我进行新的安装并检查Program Files中的.dll时,我可以看到NuGet .dll是新版本,所以我知道正确的版本正在与Setup Project捆绑在一起。如果它们已经存在,它们似乎没有被覆盖。这只发生在NuGet引用中;我编写的.dlls和.exes正确升级。

有没有办法强制安装项目始终替换NuGet .dll?

1 个答案:

答案 0 :(得分:0)

  

然而,有一些NuGet引用(SignalR,Owin,Netwonsoft,   等)不升级。即使软件包已更新   项目和清单,安装程序不会替换旧版本   NuGet .dlls

NuGet与部署无关,只有在您构建项目或从控制台下载时才应下载软件包。

安装程序/安装程序应根据PrimaryOutput自动检测依赖项,但如果某些dll未在项目中引用且需要部署,则应手动将它们添加到安装程序项目中。

在创建新安装程序时,请确保构建所有项目,以便安装程序项目可以将dll更新为新版本,如果您在应用程序项目中更改了它,因此,考虑到您已经配置了要删除的安装程序,因此无需部署新版本的程序集以前的版本安装新版本。