Web 部署发布错误版本的程序集

Web deploy publishes wrong version of assembly

我有一个依赖于 System.Web.Http.WebHost 的 Web API 项目,在我的项目中,我在该引用上设置了 Copy Local = True,版本(在本例中)为 5.2 .3.0.

当我通过网络部署将项目发布到服务器时,发布了该程序集的旧版本 (5.2.2.x)。这似乎只影响某些人在他们发布时而不影响其他人。

我们 运行 在其他项目中遇到了与其他程序集相同的问题,因此这只是一个例子。我可以将受影响的程序集添加到服务器的 GAC 或其他东西,这样它就不会在受到如此影响的用户发布时死掉,但我想知道这种情况是如何发生的以及如何避免。

在我的例子中,我发现部署了错误版本的 Autofac,即使在本地 运行 时引用了正确的版本并将其放入 bin 文件夹中。我重新安装了 NuGet 包,但还是没用。

最终,我发现 obj\Release\Package\PackageTmp\bin 目录(在项目目录中)包含过时的版本,而我所做的任何事情都不会导致它更新。只需删除目录并让它重新生成即可解决问题。