1

本地构建工作正常。一个构建服务器工作正常(不使用 TFS 构建)。

问题是 TFS 构建打包了 MVC3 二进制文件,而不是所需的 MVC4。

SERVER 1:我们的 TFS 服务器只安装了 MVC4(尽管我不相信这是必需的)。

SERVER 2:我们的 TFS 构建控制器只安装了 MVC4。(构建代理在同一台服务器上)。

注意:之前都SERVER 1安装2过 MVC3。

我排队一个新的构建,转到SERVER 2(构建控制器服务器),我看到代理正在工作(TFS 管理控制台)并创建了它的工作目录。

然而,工作目录最终包含 MVC3 二进制文件!然后将其放置在托管服务器上的放置位置,然后使用 MVC3 错误地部署它。

来自“SERVER 2”命令行的 MSBuild 还将 MVC3 二进制文件添加到 bin 文件夹中。GAC 包含 MVC4 二进制文件。(C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Web.Mvc\v4.0_4.0.0.0__31bf3856ad364e35)

该项目的web.config正确引用了MVC4,System.Web.Mvc( v4.0.0.0)设置为复制本地。我已经广泛检查了 MVC3 引用。我没有理由怀疑代码,因为它适用于我们的旧版构建服务器(安装了 MVC4)。

当然,这一切都可以在我的机器上运行,发布在 bin 文件夹中包含正确的 MVC.dll。

它可能从哪里获得 MVC3?我会错过什么?

短期修复:在托管服务器上安装 MVC4。

4

1 回答 1

0

最后解决了这个问题,在包含的程序文件中有一个 Reference Assemblies 文件夹system.web.mvc.dll(版本 3)。我删除了它,一切正常!

简单地说:“.NET 4.0 版对框架引用程序集的完成方式进行了重大改变。”

这个问题的答案提供了有关此文件夹是什么以及为什么存在的更多详细信息:Reference Assemblies folder and different assembly with the same version

于 2013-01-09T12:34:55.213 回答