2017-04-13 75 views
1

将我的.NET Core项目移动到解决方案中的子文件夹后,我无法再使用VS代码对其进行调试。VS代码:调试项目驻留在子文件夹中的.NET Core项目

如果我将tasks.jsonlaunch.json移动到项目文件夹中并打开VS代码,我可以调试,但我希望能够在VS代码中打开整个解决方案。

我得到的错误信息是这样的:

MSBUILD : error MSB1003: Specify a project or solution file. The current working directory does not contain a project or solution file.

的错误似乎表明,我国任务运行再也找不到我的项目,所以我尝试添加这tasks.json

{  
    "version": "0.1.0", 
    "command": "dotnet", 
    "isShellCommand": true, 
    "args": [], 
    "tasks": [ 
     { 
      "taskName": "build", 
      "args": [ ], 
      "isBuildCommand": true, 
      "showOutput": "silent", 
      "problemMatcher": "$msCompile" 
     } 
    ], 

    // My addition 
    "options": { 
     "cwd": "${workspaceRoot}/myProjectFolder" 
    } 
} 

这样做我能够启动任务,但我然后得到以下错误:

Exception thrown: 'System.IO.FileNotFoundException' in 
Microsoft.Extensions.Configuration.FileExtensions.dll 

如何配置.NET Core调试器以便能够运行驻留在子文件夹中的项目?

+0

我有这个相同的问题。你有没有找到解决方案? – mrtedweb

+0

不,我已经解决了在需要调试时从项目文件夹中打开VS代码 – severin

回答

0

由于项目已移至子文件夹,因此无法再找到appsettings.json文件。这可以通过添加以下变量的构造很容易地固定在StartUp.cs文件:

var filePath = Path.Combine(env.ContentRootPath, "<project folder name>", "appsettings.json"); 

注意:您需要为<project folder name>指定的值。


然后更新,上面写着

.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) 

读行:

.AddJsonFile(filePath, optional: false, reloadOnChange: true) 


另外,检查launch.json文件的目标是正确的程序文件。

"program": "${workspaceRoot}/<project name>/bin/Debug/netcoreapp1.1/<program name>.dll" 

注意:您需要为<project name>,并<program name>指定的值。

0

由mtriweb指向的FileNotFoundException的原因,程序未找到appsettings.json可以解决而无需更改程序代码。

只要编辑launch.json,修改cwd配置为指向项目子文件夹,而不是根工作区,其是默认的,从 cwd: ${workspaceRoot}到,${workspaceRoot}/TheProject

// C:\Solution\.vscode\launch.json 
{ 
    "version": "0.2.0", 
    "configurations": [ 
      { 
       "name": ".NET Core Launch (console)", 
       "type": "coreclr", 
       "request": "launch", 
       "preLaunchTask": "build", 
       "program": "${workspaceRoot}/TheProject/bin/Debug/netcoreapp1.1/TheProject.dll", 
       "args": [], 
       "cwd": "${workspaceRoot}/TheProject", 
       "stopAtEntry": false, 
       "console": "internalConsole", 
       "env": { 
        "ASPNETCORE_ENVIRONMENT": "Development", 
        "ASPNETCORE_URLS": "http://localhost:5050"     
       }    
      } 
    ] 
} 

有了这个launch.json,它可以运行从VS代码从根解决方案文件夹与子文件夹内的项目打开它的应用程序。

C:\Solution>code . 

而且它也可以从命令行运行,而无需从项目子文件夹更改程序中的路径。

C:\Solution\TheProject>dotnet run TheProject.csproj 
相关问题