Visual Studio + Docker-使用“编辑并继续”调试应用程序吗?

时间:2019-04-08 12:16:48

标签: c# visual-studio docker asp.net-core docker-compose

我正在使用由Docker托管的Visual Studio开发ASP.NET Core应用程序。

为此,我在创建项目时经历了启用Docker支持的常规步骤,并且-由于我正在使用其他容器-通过一个单独的docker-compose项目添加了编排支持,而我再次通过通常的添加->容器编排支持菜单。

我现在可以使用“ Docker Compose”配置,使用VS中的“调试”按钮在本地启动容器。我可以达到断点,等等。

但是,为了实际修改代码并尝试使用它,我必须每次重新启动整个系统的整个过程(即上下组合)。对于本身在几秒钟内构建的项目的更改,这已经非常耗时(超过一分钟)。

我已经看到在Docker中使用C#可以进行Edit and Continue的一些提及,但我似乎无法做到这一点。该编辑器是只读的,我只能通过关闭系统来进行修改。即使我可以,再次构建项目也需要VS进行调试(这又会使系统崩溃)。

有人可以为此指出正确的方向吗?我已经找到了一些指南,但是它们已经使用了几年了,并且倾向于引用VS / .NET Core中似乎过时的功能。

1 个答案:

答案 0 :(得分:0)

对于Docker的新手,我也一直在为此而苦苦挣扎。但是我觉得这个问题与Docker相比与.NET Core 3 / Visual Studio 2019更相关。

我设法通过参考以下内容来获取静态文件和剃须刀文件以立即反映更改:

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/docker/visual-studio-tools-for-docker?view=aspnetcore-3.0

我从上面的链接中所做的部分是: 确保为我的Visual Studio 2019加载了.NET Core跨平台开发工作负载。(打开了Visual Studio安装程序,修改了Visual Studio 2019,并勾选了.NET Core coss平台开发工作负载并进行了更新)。

然后我发现,当docker网站运行时,更改静态CSS文件确实立即得到反映。 (注意:在安装此更新之前,这可能一直有效)。 但是剃刀的变化仍然没有。 要解决此问题,我必须添加以下Nuget软件包:

  

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

然后将 AddRazorRuntimeCompilation()添加到Startup.cs

services.AddControllersWithViews().AddRazorRuntimeCompilation();

然后,在启动docker时,对Razor页面的更改现在也会立即反映出来。但是仍然无法使C#更改生效。

.NET Core 3似乎存在问题,请编辑并继续。也许当它们解决后,它也可以与Docker Compose一起使用。 https://github.com/aspnet/AspNetCore/issues/14712