当Copy-Local设置为True时,为什么DLL部署中缺少DLL?

时间:2015-03-08 16:08:16

标签: asp.net-mvc azure visual-studio-2013 azure-devops

我在Visual Studio 2013中安装了ASP.NET MVC v4项目。

我使用Visual Studio Online在Git中托管项目。我使用Azure部署配置文件创建了一个构建定义,以便我可以运行自动构建,并自动部署该站点。

但是,在显然成功部署之后,我收到以下错误:

  

无法加载文件或程序集'System.Web.Mvc,Version = 4.0.0.0,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个   依赖。系统找不到指定的文件。

我已经通过FTP检查了网站,并且系统中缺少System.Web.Mvc.dll文件。

但是,MVC作为NuGet包安装,为解决方案启用了NuGet Package Restore,并为参考设置了“Copy Local”。如果我在本地构建解决方案,则DLL将正确复制到输出文件夹。

我已经检查了Visual Studio Online构建日志,可以看到以下内容......

  

...

     

安装'Microsoft.AspNet.Mvc 4.0.30506.0'。

     

...

     

成功安装'Microsoft.AspNet.Mvc 4.0.30506.0'。

     

...

所以 - 我不知道为什么没有将DLL部署到Azure。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

最新的MVC 4版本是4.0.0.1。检查您的Project引用是否正确指向NuGet中的版本,而不是GAC中的版本。

此MSDN博文可能有所帮助:http://blogs.msdn.com/b/webdev/archive/2014/10/16/microsoft-asp-net-mvc-security-update-broke-my-build.aspx

您还可以尝试在web.config中添加重定向:

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="4.0.0.0-4.0.0.1" newVersion="4.0.0.1"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>