【发布时间】:2013-10-10 13:03:43
【问题描述】:
我完全被这个难住了。我通过谷歌堆栈溢出找到的想法对我不起作用,我不知道为什么。
我们最近将项目升级到 Visual Studio 2012 和带有 .NET 4.5 的 MVC 4,现在它无法正常发布。
我们有另一个分支,它只是在 Visual Studio 2012 中发布项目,而没有升级到 MVC4 或 .NET4.5,这似乎工作,所以我猜这不是 Visual Studio 问题。只是在我们的项目中设置 MVC 4 的方式。 MVC 3 是通过直接从我们在源代码管理中创建的 lib 文件夹(但在任何项目之外)引用 DLL 来添加的。 MVC 4 是通过 NuGet 添加的。
问题是 System.Web.Helpers(以及其他)不出现在已发布应用程序的 bin 目录中。这意味着当它放在测试服务器上时,由于缺少 DLL,它不会运行。
- 我已将 Copy Local 设置为 TRUE(实际上,它已经是,但如果关闭并再次打开,我将其关闭)。我还在某处读到,如果文件存在于 GAC 中,则无论此设置是什么,它都不会复制。但是,我查过,它不在 GAC 中。
- 我已确保 MVC 应用程序中的引用指向 NuGet 包文件夹中的文件版本。 (最初不是,但我手动编辑了 csproj 文件来执行此操作,因为删除和读取 NuGet 包没有帮助)
- 我添加了一个构建后事件来复制相关文件(这不影响发布,尽管它们位于项目的 bin 目录中)
- 我已尝试按照Phil Haack's blog 放置一个
_bin_deployableAssemblies文件夹,但似乎是doesn't work in Visual Studio 2012。 - 我尝试修改 csproj 文件(它只是一个 MSBuild 文件)为我复制相关文件,as per this SO answer。但无论出于何种原因,它也不想工作。
我可以尝试的东西已经用完了。好吧,我总是可以像其他地方的一些 SO 答案所建议的那样手动复制文件,但这违背了目的。
有什么想法吗?
更新
在上面的要点中为我尝试过但对我不起作用的事情添加了更多内容。
【问题讨论】:
标签: c# asp.net-mvc-4 visual-studio-2012 .net-4.5