问题描述
我有一个 ASP.NET Core 5 项目,它的主要功能是运行一个典型的 ASP.NET Web 项目。所以通常我用 dotnet watch run
启动它,服务器在后台持续运行。但我也在尝试添加一种对同一可执行文件执行控制台命令的方法,该方法重用服务器版本中的代码,但不从 ASP.NET 启动实际的 WebHost。命令行版本应该能够与已经运行的服务器版本一起运行,或者完全独立运行。
现在的问题是,我显然在做一些 dotnet run
不应该做的事情,因为构建非常不稳定并且经常因无益的错误(例如文件访问错误,.它确实使感觉在 dotnet run
仍在后台运行时再次运行它不是受支持的情况,所以我试图找到一种不同的方法来做到这一点。
整个过程都在 Docker 内部运行,尽管这可能不会改变我的具体问题。我使用的是 VS Code,因此 Visual Studio 特定的解决方案对我不起作用,它必须单独使用 dotnet CLI 运行。
我想要做的是在开发过程中在后台有一个 dotnet watch run
,以及一种只执行它单独构建的二进制文件而不触发导致问题的同步构建的方法。至少据我所知,这应该可以避免我遇到的问题,如果我在这里错了并且同时运行 dotnet run
或 dotnet watch run
不应导致构建问题,请在此处纠正我.我假设运行单独的 dotnet build
会遇到相同的问题,而且我在 dotnet CLI 文档中看不到任何适合我的用例的内容。
如何在我的开发项目仍在后台通过 dotnet watch run
运行时安全地再次运行它?
解决方法
一个快速的解决方法是使用不同的构建配置(即 dotnet watch run -c Debug
和 dotnet run -c Release
)。如果您没有覆盖默认输出目录 (./bin/<configuration>/<framework>/
),您将有效地使用应用程序的两个编译版本,避免那些“不稳定的构建”。
您也可以为此create your own build configuration(即dotnet run -c My_Debug
)并将其配置为具有“调试”属性,从而避免使用默认的 Release
配置。