【发布时间】:2012-05-04 01:35:33
【问题描述】:
我有一个 MVC 4 应用程序,并且在我为 VS 2010 安装 MVC 4 扩展的 DEV 机器上运行良好。
使用 IIS 7 部署到 Web 服务器时,我需要安装 MVC 4 还是我的项目中包含的 dll 就足够了?
我问的原因是我们需要向基础架构团队提供需求。
谢谢。
【问题讨论】:
我有一个 MVC 4 应用程序,并且在我为 VS 2010 安装 MVC 4 扩展的 DEV 机器上运行良好。
使用 IIS 7 部署到 Web 服务器时,我需要安装 MVC 4 还是我的项目中包含的 dll 就足够了?
我问的原因是我们需要向基础架构团队提供需求。
谢谢。
【问题讨论】:
您无需在服务器上安装 MVC 即可运行 MVC 应用程序。 Visual Studio 中有一种叫做可部署依赖的东西。这将在您发布时将您的 MVC DLL 发布到您的 bin 文件夹中。
来自msdn 页面,
这会将程序集(DLL 文件)添加到网站项目或 Web 应用程序 项目。当您部署您的网站或应用程序时,这些文件是 包含在已部署的项目中。如果应用程序或 您的项目所依赖的技术尚未安装 将托管您的 Web 项目的服务器。例如,您可以使用 此功能用于将 ASP.NET MVC 3 Web 应用程序部署到服务器 没有安装 ASP.NET MVC 3。
右键单击项目并从上下文菜单中选择添加可部署依赖项
选择要发布的所有 DLL
单击确定后,您将看到一个名为 _bin_deployableAssemblies 的新文件夹。您现在可以执行正常的发布过程,并且您将在发布输出的 bin 文件夹中拥有 dll。
查看此帖子了解更多详情http://haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx
您应该拥有 Visual Studio 2010 SP1。否则,当您右键单击要发布的项目时,它不会显示在上下文菜单中。
编辑: 从 MVC4 开始,运行 MVC 应用程序所需的所有程序集都会自动添加到 bin 目录中,并且任何 MVC4 应用程序都是可 bin 部署的(意味着您可以在服务器中运行它而无需显式安装 MVC)。因此,“包含可部署程序集”对话框已从 Visual Studio 2012 中删除
【讨论】:
您不再可以在 Visual Studio 2012 中选择“添加可部署的依赖项”。因此您必须手动执行此操作,方法是对所有 MVC 程序集进行 bin 部署:
Microsoft.Web.Infrastructure
System.Web.Helpers
System.Web.Mvc
System.Web.Razor
System.Web.WebPages
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
可以找到分步指南here。
【讨论】:
当你在 Visual Studio 中创建一个 MVCx 特定项目时,你会看到许多 MVC.* 引用被添加到你的项目中,默认情况下,所有这些引用属性“复制本地”设置为“真”意味着这些引用将是无论何时部署到最终解决方案的一部分。您还可以验证这些 MVC 特定引用也是您的 BIN 文件夹的一部分。
最后,当您将此解决方案打包并发布到特定的 Web 服务器或 Windows Azure 或使用 WebDeploy 时,所有这些引用也将成为您的包的一部分。并且因为这些参考是在您的包中提供的,所以无论您在哪里部署解决方案,所有 MVC 特定参考都将在那里,因此您不需要将 MVC 部署到这些特定服务器。
我还想补充一点,当您在 Visual Studio 中添加对项目的特定引用时,请将其属性“复制本地”设置为 TRUE,这样引用将始终成为您最终解决方案的一部分,并且可以节省您的时间免于将来的麻烦。
【讨论】:
您只需要将 dll 部署到项目的 bin 中。有关如何准备发布网站的示例,请查看以下博客文章:
running-an-asp-net-mvc-3-app-on-a-web-server-that-doesn-t-have-asp-net-mvc-3-installed.aspx.
【讨论】: