首页 > 解决方案 > 我可以在 asp.net core 2.1 MVC 的前端直接更改,而不重新发布解决方案吗

问题描述

我正在处理的项目是在 ASP.NET Core 2.1 中创建的,我需要在前端直接在应用程序所在的服务器上进行简单的小改动。我的问题是,在最新版本的.net core 中,发布后的视图被收集在一个 Views.dll 中,女巫不可编辑。服务器上的发布版本有点旧,项目本身有一些核心更改,还没有完成,我无法重建并制作它的新发布版本,但由于一些演示目的,客户端需要一些前端的简单更改。

如果有人遇到同样的问题并有解决方案,请分享。

标签: c#asp.netasp.net-core-mvcpublishingasp.net-core-2.1

解决方案


这里有许多无声的问题。首先,您的整个开发方法需要改变。如果你没有使用版本控制系统,你应该立即开始。您可以创建一个免费的 Azure DevOps 帐户(以前称为 VSTS)并在那里创建私有远程 Git 存储库。Github 也是一种选择,但只有公共 repos 是免费的;您需要一个付费帐户来创建私人回购。虽然还有其他版本控制系统可供选择,但 Git 是迄今为止最常用和最友好的。

一旦你使用了版本控制,你就应该遵循不污染主分支的格言。存储库的主分支应始终包含可以随时部署的原始代码副本。对于正在进行的工作,您创建一个分支,然后在该分支上工作。这允许您在不影响代码的可部署副本的情况下进行和提交更改。在这种情况下,如果您在分支中工作,那么部署演示将没有问题。您只需将正在进行的工作提交到您的分支,切换到 master,发布,然后切换回您的分支以继续工作。

当您完成任何新功能或更改您的工作时,您应该创建所谓的拉取请求。拉取请求以初步方式有效地将您的代码与 master 分支合并,允许对其执行自动构建,以验证 master 中的代码在应用此新代码的情况下仍能正确编译。当构建通过时,拉取请求可以合并到 master 中,并且可以删除您正在工作的分支。冲洗并重复。

现在,拉取请求过程有点复杂,特别是如果只有您作为代码库的唯一开发人员。完成后,从技术上讲,您可以将分支直接合并到 master 中。但是,我鼓励您仍然使用拉取请求,尤其是将其与自动构建相结合,这也可以在 Azure DevOps 中轻松设置。

总而言之,解决您的问题的最佳方法是首先确保它不是问题。拥有版本控制将为您做到这一点,并提供许多其他好处。

也就是说,可以关闭视图预编译,这将允许您在已发布的应用程序上修改视图。您只需编辑您的 csproj 文件并将以下内容添加到您的项目组之一:

<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>

但是,这将对您的 Web 应用程序的性能产生负面影响。此外,就地修改现场是非常糟糕的形式,也是灾难的根源。我仍然强烈建议您保留视图编译并采用版本控制路线。


推荐阅读