【问题标题】:MVC Web Application XCOPY Deployment?MVC Web 应用程序 XCOPY 部署?
【发布时间】:2015-04-16 06:20:10
【问题描述】:

我是 MVC 新手,想在 MVC 中迁移一个 Asp.net Web 应用程序。 但是我被困在如何通过复制服务器上的所有源文件(Xcopy 部署)来在服务器 IIS 上部署我的 Web 应用程序。

就像在 Asp.Net 网络应用程序中一样,您可以创建任何新页面并将其复制粘贴到您的网络服务器上,它会在浏览时自动编译并执行。可以为 MVC 应用程序这样做吗??

我什至观察到,当我在 IIS 中托管我的 MVC Web 应用程序时,视图中的任何更改都会在不编译项目的情况下正确反映,但我必须编译项目才能更改控制器和模型。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 model-view-controller iis-7 web-deployment


    【解决方案1】:

    虽然您可以通过右键单击您的项目将 App_Code 目录添加到您的 asp.net MVC 项目中,如下图所示,并将代码放入其中,以便在更改时即时重新编译,我认为这是不是一个好的解决方案。我将按照我认为你应该做的事情跟进 App_Code 的解释。

    单击 App_Code 选项会将该文件夹添加到您的 asp.net MVC 项目中。完成此操作后,您可以在该文件夹中添加如下类:

    public class TestClass
    {
        public string Description { get { return "Stuff"; } }
    }
    

    然后,在视图中,您可以创建该类的实例(默认情况下将在 App_Code 命名空间中,并像这样引用 Description 属性:

    @{
        ViewBag.Title = "My View";
        var test = new WebApplicationMVC.App_Code.TestClass();
    }
    <h2>@ViewBag.Title.</h2>
    <h3>@ViewBag.Message</h3>
    <h4>@test.Description</h4>
    

    当您更改 Description 属性的实现时,站点将重新编译并使用新代码。例如,您可以更改描述以返回“更多内容”。在我看来,像这样即时重新编译是一个糟糕的解决方案。无论如何,IIS 通过重叠回收很好地处理站点更新。

    更好的解决方案是使用部署向导。部署向导可以部署到您的 Web 服务器、Windows Azure、FTP 或本地文件系统。而且,使用部署向导最酷的部分是您最终不会将所有源代码上传到服务器 - 它只会复制运行站点所需的内容。要运行部署向导,请右键单击您的项目并单击“发布”选项。

    进入部署向导后,我建议选择自定义,然后使用本地文件系统选项。选择本地文件系统部署选项后,您将获得“设置”选项卡,您可以在其中选择“发布”或“调试”(建议在生产环境中使用“发布”)。在“文件发布选项”下,我喜欢选择“删除”选项以在复制新文件之前从部署目录中删除所有文件。部署向导如下所示:

    这种部署方法不允许您将临时更改部署到控制器、模型等;但是,在我看来,它非常干净且是部署站点的正确方法。

    您只需从部署文件夹中复制您需要更改的文件。例如,如果您刚刚更新了一个视图,您可以只复制该视图,并且站点将重新编译它(正如您所发现的那样)。另一方面,如果您更改了控制器中的某些内容,请复制您站点的主程序集,即 dll,通常与您的站点同名,位于部署文件夹的 bin 目录中。

    【讨论】:

    • 感谢 Markus..但我的要求是将文件(源代码)复制到服务器上。意味着如果有任何问题,我可以替换该特定文件并开始工作。我不想放网站的.dll文件。
    猜你喜欢
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2018-05-13
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    相关资源
    最近更新 更多