2016-05-22 18 views
9

サブプロジェクトを定義するglobal.jsonを含むルート "ソリューション"をvscodeに設定しました。これらは現在私のWebアプリケーションとクラスライブラリです。複数のdotnetコアプロジェクトを1つのソリューションで使用してvscodeをデバッグする

{ 
"version": "0.2.0", 
"configurations": [ 
    { 
     "name": "WebApp", 
     "type": "coreclr", 
     "request": "launch", 
     "preLaunchTask": "", 
     "program": "${workspaceRoot}/WebApp/bin/Debug/netcoreapp1.0/WebApp.dll", 
     "args": [], 
     "cwd": "${workspaceRoot}/WebApp/", 
     "stopAtEntry": false, 
     "launchBrowser": { 
      "enabled": true, 
      "args": "${auto-detect-url}", 
      "osx": { 
       "command": "open" 
      } 
     } 
    } 
] 

}

私はこれには2つの問題があります:正常に動作し、私は私のWebアプリケーションをデバッグするための試みで、ルートディレクトリの下に、次のlaunch.jsonを設定している

  1. それは、ルートディレクトリからビルドしようとするので、私は構築preLaunchTaskを削除する必要がありました。理想的ではありませんが、手動で最初にビルドすることで回避できます。

  2. デバッガが起動すると、ソースコードが見つからないため、サブプロジェクトではなくルートディレクトリが検索されます。ソースがロードされていない状態でブレークポイントを使用することはできないため、これはショーストッパーです。

これらの問題を回避する手段はありますか?

更新日:2016年8月9日

は、私が直接Omnisharpに問題を取り、一つの解決策の下でのアプリや別のライブラリをデバッグすることができること、さらにビットを得ました。まだ1つの解決策の下で複数の実行可能プロジェクトのジャックポットを打つことはありません。残念ながら、私はもうこのプロジェクトを追求するつもりはありませんが、うまくいけば、これはトータルソリューションに向かって誰かを助けることができます。議論やコードサンプルへ

リンク:https://github.com/OmniSharp/omnisharp-vscode/issues/460#issuecomment-228392486

+0

私はここで同じ問題を抱えていますが、あなたは解決策を見つけましたか? – chris

+1

@chris残念ながら、私はここでも進行中の議論があります:http://forums.dotnetfoundation.org/t/referencing-another-project-in-net-core/1298/9(コメントを参照)。私は回避策を見つけるが、私はここに投稿を更新しますが、見えません。 – matthewrk

+0

VSコードのドキュメントhttp://stackoverflow.com/documentation/vscode/7717/multiple-projects-set-up#t=201611030739421019893 – Artru

答えて

5

こんにちはGuysは、私は.vscodeフォルダ内のtask.jsonファイル内の私の解決策

global.json 
|src 
--|TestApp 
----Program.cs 
----project.json 
--|ExtLib 
----ExtLibClass.cs 
----project.json 

のために、私は次のような構造を持っている同じ問題を抱えていますこのようなオプションの値を設定する必要があります。

"command": "dotnet", 
"isShellCommand": true, 
"options": { 
    "cwd": "${workspaceRoot}/src/TestApp" 
}, 

、あなたは、このようなプログラムのプロパティを変更する必要が.vscodeフォルダ内launch.jsonファイル中:

"configurations": [ 
    { 
     "name": "TestApp Debug", 
     "type": "coreclr", 
     "request": "launch", 
     "preLaunchTask": "build", 
     "program": "${workspaceRoot}/src/TestApp/bin/Debug/netcoreapp1.0/TestApp.dll", 
     "args": [], 
     "cwd": "${workspaceRoot}/src/TestApp", 

あなたが持っている場合ので、私は、例えば、複数の実行可能なプロジェクト、すなわちをVisual Studioのコード

0

溶液中で複数のプロジェクトをデバッグすることができますクライアント/サーバー:

プロジェクト構造:

Project 
--|Server 
----Program.cs 
----project.json 
--|Client 
----Program.cs 
----project.json 

私はlaunch.json

"configurations": [ 
    { 
     "name": "Server", 
     "type": "coreclr", 
     "request": "launch", 
     "preLaunchTask": "build", 
     "program": "${workspaceRoot}/Server/bin/Debug/netcoreapp1.1/Server.dll", 
     "args": [], 
     "cwd": "${workspaceRoot}/Server", 
     "stopAtEntry": false, 
     "externalConsole": false 
    }, 
    { 
     "name": "Client", 
     "type": "coreclr", 
     "request": "launch", 
     "preLaunchTask": "build", 
     "program": "${workspaceRoot}/Client/bin/Debug/netcoreapp1.1/Client.dll", 
     "args": [], 
     "cwd": "${workspaceRoot}/Client", 
     "stopAtEntry": false, 
     "externalConsole": false 
    }] 

で2つの貴様の構成やtasks.json

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

この意志のセットアップ2つのデバッグのプロジェクトを持っています、 PreBuildTaskはthをコンパイルしますデバッグを開始する前にtasks.jsonargsフィールドに指定されているプロジェクトを実行します。 (サーバーとクライアントプロジェクト)

この場合、私はそのWebHostBuilderProgram.cs

.UseUrls("http://localhost:5002") 

でこれを指定することで、それらを同時にデバッグできるようにするには、異なるポートにバインドするために、プロジェクトを設定していますVisual Studioを使用している場合はlaunchsettings.jsonで変更できますが、VsCodeでは使用できません。

3

コードv1.10.2では、ルートにソリューションがある場合、複数のプロジェクトで作業できます。ソリューションはVisual Studio 15形式である必要があります。

このソリューションは、これらの新しいDOTNETのCLIコマンドを使用して定義することができます

dotnet new sln //creates a new solution in folder 
dotnet sln add <path to the csproj file> //adds project to solution 

はまた、プロジェクトAにいくつかのプロジェクトBへの参照を追加するには、フォルダをプロジェクトと実行するために移動する必要があります。

dotnet add reference <path to the project B csproj file> 
関連する問題