mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-21 01:25:37 -05:00
Remove .net 6 version cutoff for building sql projects (#17736)
* remove .net 6 version cutoff for building sql projects
* Revert "Warning when .NET 6 SDK is detected (#17422)"
This reverts commit 2ed8aeb565.
* add back skipVersionSupportedCheck
* add back return false
* addressing comments
This commit is contained in:
@@ -321,14 +321,12 @@ export const postDeployScriptFriendlyName = localize('postDeployScriptFriendlyNa
|
||||
|
||||
export const NetCoreInstallationConfirmation: string = localize('sqlDatabaseProjects.NetCoreInstallationConfirmation', "The .NET Core SDK cannot be located. Project build will not work. Please install .NET Core SDK version 3.1 or update the .NET Core SDK location in settings if already installed.");
|
||||
export function NetCoreSupportedVersionInstallationConfirmation(installedVersion: string) { return localize('sqlDatabaseProjects.NetCoreSupportedVersionInstallationConfirmation', "Currently installed .NET Core SDK version is {0}, which is not supported. Project build will not work. Please install .NET Core SDK version 3.1 or update the .NET Core SDK supported version location in settings if already installed.", installedVersion); }
|
||||
export function NetCoreVersionDowngradeConfirmation(installedVersion: string) { return localize('sqlDatabaseProjects.NetCoreVersionDowngradeConfirmation', "Installed .NET SDK version {0} is newer than the currently supported versions. Project build will not work. Please install .NET Core SDK version 3.1 and include a global.json in the project folder specifying the SDK version to use. [More Information](https://docs.microsoft.com/dotnet/core/versions/selection)", installedVersion); }
|
||||
export const UpdateNetCoreLocation: string = localize('sqlDatabaseProjects.UpdateNetCoreLocation', "Update Location");
|
||||
export const projectsOutputChannel = localize('sqlDatabaseProjects.outputChannel', "Database Projects");
|
||||
|
||||
// Prompt buttons
|
||||
export const Install: string = localize('sqlDatabaseProjects.Install', "Install");
|
||||
export const DoNotAskAgain: string = localize('sqlDatabaseProjects.doNotAskAgain', "Don't Ask Again");
|
||||
export const DoNotShowAgain: string = localize('sqlDatabaseProjects.doNotShowAgain', "Don't Show Again");
|
||||
|
||||
// SqlProj file XML names
|
||||
export const ItemGroup = 'ItemGroup';
|
||||
|
||||
@@ -11,7 +11,7 @@ import * as semver from 'semver';
|
||||
import { isNullOrUndefined } from 'util';
|
||||
import * as vscode from 'vscode';
|
||||
import * as nls from 'vscode-nls';
|
||||
import { DoNotAskAgain, DoNotShowAgain, Install, NetCoreInstallationConfirmation, NetCoreSupportedVersionInstallationConfirmation, NetCoreVersionDowngradeConfirmation, UpdateNetCoreLocation } from '../common/constants';
|
||||
import { DoNotAskAgain, Install, NetCoreInstallationConfirmation, NetCoreSupportedVersionInstallationConfirmation, UpdateNetCoreLocation } from '../common/constants';
|
||||
import * as utils from '../common/utils';
|
||||
import { ShellCommandOptions, ShellExecutionHelper } from './shellExecutionHelper';
|
||||
const localize = nls.loadMessageBundle();
|
||||
@@ -19,19 +19,16 @@ const localize = nls.loadMessageBundle();
|
||||
export const DBProjectConfigurationKey: string = 'sqlDatabaseProjects';
|
||||
export const NetCoreInstallLocationKey: string = 'netCoreSDKLocation';
|
||||
export const NetCoreDoNotAskAgainKey: string = 'netCoreDoNotAsk';
|
||||
export const NetCoreDowngradeDoNotShowAgainKey: string = 'netCoreDowngradeDoNotShow';
|
||||
export const NetCoreNonWindowsDefaultPath = '/usr/local/share';
|
||||
export const winPlatform: string = 'win32';
|
||||
export const macPlatform: string = 'darwin';
|
||||
export const linuxPlatform: string = 'linux';
|
||||
export const minSupportedNetCoreVersion: string = '3.1.0';
|
||||
export const maxSupportedNetCoreVersionCutoff: string = '6.0.0'; // un-set this to allow latest
|
||||
export const minSupportedNetCoreVersionForBuild: string = '3.1.0';
|
||||
|
||||
export const enum netCoreInstallState {
|
||||
netCoreNotPresent,
|
||||
netCoreVersionNotSupported,
|
||||
netCoreVersionSupported,
|
||||
netCoreVersionTooHigh
|
||||
netCoreVersionSupported
|
||||
}
|
||||
|
||||
const dotnet = os.platform() === 'win32' ? 'dotnet.exe' : 'dotnet';
|
||||
@@ -50,11 +47,9 @@ export class NetCoreTool extends ShellExecutionHelper {
|
||||
*/
|
||||
public async findOrInstallNetCore(skipVersionSupportedCheck = false): Promise<boolean> {
|
||||
if (!this.isNetCoreInstallationPresent || (this.isNetCoreInstallationPresent && !skipVersionSupportedCheck)) {
|
||||
if (!this.isNetCoreInstallationPresent || !await this.isNetCoreVersionSupported()) {
|
||||
if (this.netCoreInstallState === netCoreInstallState.netCoreVersionSupported && vscode.workspace.getConfiguration(DBProjectConfigurationKey)[NetCoreDoNotAskAgainKey] !== true) {
|
||||
if ((!this.isNetCoreInstallationPresent || !await this.isNetCoreVersionSupportedForBuild())) {
|
||||
if (vscode.workspace.getConfiguration(DBProjectConfigurationKey)[NetCoreDoNotAskAgainKey] !== true) {
|
||||
void this.showInstallDialog(); // Removing await so that Build and extension load process doesn't wait on user input
|
||||
} else if (this.netCoreInstallState === netCoreInstallState.netCoreVersionTooHigh && vscode.workspace.getConfiguration(DBProjectConfigurationKey)[NetCoreDowngradeDoNotShowAgainKey] !== true) {
|
||||
void this.showDowngradeDialog();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -89,15 +84,6 @@ export class NetCoreTool extends ShellExecutionHelper {
|
||||
}
|
||||
}
|
||||
|
||||
public async showDowngradeDialog(): Promise<void> {
|
||||
const result = await vscode.window.showErrorMessage(NetCoreVersionDowngradeConfirmation(this.netCoreSdkInstalledVersion!), DoNotShowAgain);
|
||||
|
||||
if (result === DoNotShowAgain) {
|
||||
const config = vscode.workspace.getConfiguration(DBProjectConfigurationKey);
|
||||
await config.update(NetCoreDowngradeDoNotShowAgainKey, true, vscode.ConfigurationTarget.Global);
|
||||
}
|
||||
}
|
||||
|
||||
private get isNetCoreInstallationPresent(): boolean {
|
||||
const netCoreInstallationPresent = (!isNullOrUndefined(this.netcoreInstallLocation) && fs.existsSync(this.netcoreInstallLocation));
|
||||
if (!netCoreInstallationPresent) {
|
||||
@@ -140,16 +126,16 @@ export class NetCoreTool extends ShellExecutionHelper {
|
||||
}
|
||||
|
||||
/**
|
||||
* This function checks if the installed dotnet version is between minSupportedNetCoreVersion (inclusive) and maxSupportedNetCoreVersionCutoff (exclusive).
|
||||
* When maxSupportedNetCoreVersionCutoff is not set, the latest dotnet version is assumed to be supported and only the min version is checked.
|
||||
* This function checks if the installed dotnet version is at least minSupportedNetCoreVersionForBuild.
|
||||
* Versions lower than minSupportedNetCoreVersionForBuild aren't supported for building projects.
|
||||
* Returns: True if installed dotnet version is supported, false otherwise.
|
||||
* Undefined if dotnet isn't installed.
|
||||
*/
|
||||
private async isNetCoreVersionSupported(): Promise<boolean | undefined> {
|
||||
private async isNetCoreVersionSupportedForBuild(): Promise<boolean | undefined> {
|
||||
try {
|
||||
const spawn = child_process.spawn;
|
||||
let child: child_process.ChildProcessWithoutNullStreams;
|
||||
let installState: netCoreInstallState = netCoreInstallState.netCoreVersionSupported;
|
||||
let isSupported: boolean = false;
|
||||
const stdoutBuffers: Buffer[] = [];
|
||||
|
||||
child = spawn('dotnet --version', [], {
|
||||
@@ -163,21 +149,10 @@ export class NetCoreTool extends ShellExecutionHelper {
|
||||
this.netCoreSdkInstalledVersion = Buffer.concat(stdoutBuffers).toString('utf8').trim();
|
||||
|
||||
try {
|
||||
// minSupportedDotnetVersion <= supported version < maxSupportedDotnetVersion
|
||||
if (semver.gte(this.netCoreSdkInstalledVersion, minSupportedNetCoreVersion)) {
|
||||
// If maxSupportedNetCoreVersionCutoff is not set, the latest .NET version is allowed
|
||||
if (maxSupportedNetCoreVersionCutoff) {
|
||||
if (semver.lt(this.netCoreSdkInstalledVersion, maxSupportedNetCoreVersionCutoff)) {
|
||||
installState = netCoreInstallState.netCoreVersionSupported;
|
||||
} else {
|
||||
installState = netCoreInstallState.netCoreVersionTooHigh;
|
||||
}
|
||||
} else {
|
||||
installState = netCoreInstallState.netCoreVersionSupported;
|
||||
}
|
||||
if (semver.gte(this.netCoreSdkInstalledVersion, minSupportedNetCoreVersionForBuild)) { // Net core version greater than or equal to minSupportedNetCoreVersion are supported for Build
|
||||
isSupported = true;
|
||||
} else {
|
||||
// .NET version is too low
|
||||
installState = netCoreInstallState.netCoreVersionNotSupported;
|
||||
isSupported = false;
|
||||
}
|
||||
resolve({ stdout: this.netCoreSdkInstalledVersion });
|
||||
} catch (err) {
|
||||
@@ -192,8 +167,13 @@ export class NetCoreTool extends ShellExecutionHelper {
|
||||
});
|
||||
});
|
||||
|
||||
this.netCoreInstallState = installState;
|
||||
return installState === netCoreInstallState.netCoreVersionSupported;
|
||||
if (isSupported) {
|
||||
this.netCoreInstallState = netCoreInstallState.netCoreVersionSupported;
|
||||
} else {
|
||||
this.netCoreInstallState = netCoreInstallState.netCoreVersionNotSupported;
|
||||
}
|
||||
|
||||
return isSupported;
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
this.netCoreInstallState = netCoreInstallState.netCoreNotPresent;
|
||||
@@ -215,8 +195,6 @@ export class NetCoreTool extends ShellExecutionHelper {
|
||||
if (!(await this.findOrInstallNetCore(skipVersionSupportedCheck))) {
|
||||
if (this.netCoreInstallState === netCoreInstallState.netCoreNotPresent) {
|
||||
throw new DotNetError(NetCoreInstallationConfirmation);
|
||||
} else if (this.netCoreInstallState === netCoreInstallState.netCoreVersionTooHigh && vscode.workspace.getConfiguration(DBProjectConfigurationKey)[NetCoreDowngradeDoNotShowAgainKey] === true) {
|
||||
// Assume user has used global.json to override SDK version and proceed with build as is
|
||||
} else {
|
||||
throw new DotNetError(NetCoreSupportedVersionInstallationConfirmation(this.netCoreSdkInstalledVersion!));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user