【发布时间】:2019-11-24 11:31:41
【问题描述】:
在 Visual Studio 2019 中,我可以使用类似于下面launchSettings.json 中的配置来调试带有命令行参数的 .NET Core 控制台应用程序。
{
"profiles": {
"MyConsoleApp": {
"commandName": "Project",
"commandLineArgs": "-a -v"
}
}
}
我希望能够使用 Docker 容器内的 Visual Studio 容器工具对此进行调试。我向launchSettings.json 添加了另一个构建配置文件,如下所示:
{
"profiles": {
"Docker": {
"commandName": "Docker",
"commandLineArgs": "-a -v"
},
"MyConsoleApp": {
"commandName": "Project",
"commandLineArgs": "-a -v"
}
}
}
这会根据定义的Dockerfile 成功构建和运行控制台应用程序,但是docker run 命令不包括launchSettings.json 的Docker 配置文件中的commandLineArgs 中指定的值。
生成的docker run 命令(尤其是没有-a -v):
docker run -dt -v "C:\Users\MyUser\vsdbg\vs2017u5:/remote_debugger:rw" -v "C:\Users\MyUser\source\repos\MyConsoleApp\src\MyConsoleApp:/app" -v "C:\Users\MyUser\.nuget\packages\:/root/.nuget/fallbackpackages2" -v "C:\Program Files\dotnet\sdk\NuGetFallbackFolder:/root/.nuget/fallbackpackages" -e "DOTNET_USE_POLLING_FILE_WATCHER=1" -e "ASPNETCORE_ENVIRONMENT=Development" -e "NUGET_PACKAGES=/root/.nuget/fallbackpackages2" -e "NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages;/root/.nuget/fallbackpackages2" --entrypoint tail myconsoleapp:dev -f /dev/null
问题:
如何将命令行参数传递给 Visual Studio 容器工具中 .NET Core 控制台应用程序的 Docker 调试运行?
更新:
刚刚偶然发现this。
当我将这样的内容添加到我的项目文件中时:
<DockerDebuggeeArguments>-a -v</DockerDebuggeeArguments>
控制台应用程序完全无法调试,并显示以下消息:
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
Did you mean to run dotnet SDK commands? Please install dotnet SDK from:
https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core.
The program 'dotnet' has exited with code 145 (0x91).
我安装了Microsoft .NET Core SDK 2.2.301 (x64)。
如果我排除 DockerDebuggeeArguments 值,我可以在 Docker 中调试,但不会传入任何命令行参数。
【问题讨论】:
标签: c# visual-studio docker .net-core command-line-arguments