我有一个 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 中有一种叫做可部署依赖的东西。当您发布它时,它将在您的 bin 文件夹中发布您的 MVC DLL。
从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
可在此处找到分步指南。
当您在 Visual Studio 中创建 MVCx 特定项目时,您会看到许多 MVC.* 引用被添加到您的项目中,默认情况下,所有这些引用属性“复制本地”设置为“真”意味着这些引用将成为您的一部分最终解决方案,无论何时部署到。您还可以验证这些 MVC 特定引用也是您的 BIN 文件夹的一部分。
最后,当您将此解决方案打包并发布到特定的 Web 服务器或 Windows Azure 或使用 WebDeploy 时,所有这些引用也将成为您的包的一部分。并且因为这些参考是在您的包中提供的,所以无论您在哪里部署解决方案,所有 MVC 特定参考都将在那里,因此您不需要将 MVC 部署到这些特定服务器。
我还想补充一点,当您在 Visual Studio 中添加对项目的特定引用时,将其属性“Copy Local”设置为 TRUE,这样引用将始终是您最终解决方案的一部分,并且可以让您免于遇到麻烦未来。
您只需要将 dll 部署到项目的 bin 中。有关如何准备发布网站的示例,请查看以下博客文章:
运行-an-asp-net-mvc-3-app-on-a-web-server-that-doesn-t-have-asp-net-mvc-3-installed.aspx。