虽然您可以通过右键单击您的项目将 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 目录中。