From ce34735fa77dcd05e824e3fa95f74b3fdfe08a39 Mon Sep 17 00:00:00 2001 From: Rajkumar Janakiraman Date: Fri, 20 May 2016 15:09:08 -0700 Subject: [PATCH] Creating launch for web or console. It is a web application if it has any dependencies on microsoft.aspnetcore.server.* --- src/assets.ts | 50 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/src/assets.ts b/src/assets.ts index b921a533ce..0b2785186e 100644 --- a/src/assets.ts +++ b/src/assets.ts @@ -177,14 +177,25 @@ function createAttachConfiguration(): AttachConfiguration { } } -function createLaunchJson(targetFramework: string, executableName: string): any { - return { - version: '0.2.0', - configurations: [ - createLaunchConfiguration(targetFramework, executableName), - createWebLaunchConfiguration(targetFramework, executableName), - createAttachConfiguration() - ] +function createLaunchJson(targetFramework: string, executableName: string, isWebProject: boolean): any { + let version = '0.2.0'; + if (!isWebProject) { + return { + version: version, + configurations: [ + createLaunchConfiguration(targetFramework, executableName), + createAttachConfiguration() + ] + } + } + else { + return { + version: version, + configurations: [ + createWebLaunchConfiguration(targetFramework, executableName), + createAttachConfiguration() + ] + } } } @@ -220,7 +231,24 @@ function addTasksJsonIfNecessary(info: protocol.DotNetWorkspaceInformation, path }); } -function addLaunchJsonIfNecessary(info: protocol.DotNetWorkspaceInformation, paths: Paths, operations: Operations) { +function hasWebServerDependency(projectJsonPath: string) { + let projectJson = fs.readFileSync(projectJsonPath, 'utf8'); + let projectJsonObject = JSON.parse(projectJson); + + if (projectJsonObject == null) { + return false; + } + + for (var key in projectJsonObject.dependencies) { + if (key.toLowerCase().startsWith("microsoft.aspnetcore.server")) { + return true; + } + } + + return false; +} + +function addLaunchJsonIfNecessary(info: protocol.DotNetWorkspaceInformation, paths: Paths, operations: Operations, projectJsonPath: string) { return new Promise((resolve, reject) => { if (!operations.addLaunchJson) { return resolve(); @@ -248,7 +276,7 @@ function addLaunchJsonIfNecessary(info: protocol.DotNetWorkspaceInformation, pat } } - const launchJson = createLaunchJson(targetFramework, executableName); + const launchJson = createLaunchJson(targetFramework, executableName, hasWebServerDependency(projectJsonPath)); const launchJsonText = JSON.stringify(launchJson, null, ' '); return fs.writeFileAsync(paths.launchJsonPath, launchJsonText); @@ -284,7 +312,7 @@ export function addAssetsIfNecessary(server: OmnisharpServer) { return fs.ensureDirAsync(paths.vscodeFolder).then(() => { return Promise.all([ addTasksJsonIfNecessary(info.DotNet, paths, operations), - addLaunchJsonIfNecessary(info.DotNet, paths, operations) + addLaunchJsonIfNecessary(info.DotNet, paths, operations, projectJsonPath) ]); }); });