diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 64e0e49379fd0..d86c5d196dcac 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -8,9 +8,9 @@
-
+
https://github.com/dotnet/source-build-reference-packages
- cac4d021768f34079c30570518ece6af317cbab8
+ c3d4c372a15c2de79a2f26fe2b6b3644996d8550
@@ -122,19 +122,19 @@
-
+
https://github.com/dotnet/arcade
- f33d9e642f0e68a61312164cd9e0baf4e142a999
+ 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee
-
+
https://github.com/dotnet/arcade
- f33d9e642f0e68a61312164cd9e0baf4e142a999
+ 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee
-
+
https://github.com/dotnet/arcade
- f33d9e642f0e68a61312164cd9e0baf4e142a999
+ 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee
https://github.com/dotnet/symreader
@@ -150,9 +150,9 @@
https://github.com/dotnet/roslyn
5d10d428050c0d6afef30a072c4ae68776621877
-
+
https://github.com/dotnet/arcade
- f33d9e642f0e68a61312164cd9e0baf4e142a999
+ 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee
https://github.com/dotnet/roslyn-analyzers
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index a46b6deb75986..22b49e09d09b5 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -42,7 +42,7 @@
[bool]$useInstalledDotNetCli = if (Test-Path variable:useInstalledDotNetCli) { $useInstalledDotNetCli } else { $true }
# Enable repos to use a particular version of the on-line dotnet-install scripts.
-# default URL: https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.ps1
+# default URL: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.ps1
[string]$dotnetInstallScriptVersion = if (Test-Path variable:dotnetInstallScriptVersion) { $dotnetInstallScriptVersion } else { 'v1' }
# True to use global NuGet cache instead of restoring packages to repository-local directory.
@@ -262,7 +262,7 @@ function GetDotNetInstallScript([string] $dotnetRoot) {
if (!(Test-Path $installScript)) {
Create-Directory $dotnetRoot
$ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit
- $uri = "https://dotnet.microsoft.com/download/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1"
+ $uri = "https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1"
Retry({
Write-Host "GET $uri"
diff --git a/eng/common/tools.sh b/eng/common/tools.sh
index 1159726a10fd6..01b09b65796c1 100755
--- a/eng/common/tools.sh
+++ b/eng/common/tools.sh
@@ -54,7 +54,7 @@ warn_as_error=${warn_as_error:-true}
use_installed_dotnet_cli=${use_installed_dotnet_cli:-true}
# Enable repos to use a particular version of the on-line dotnet-install scripts.
-# default URL: https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+# default URL: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh
dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'}
# True to use global NuGet cache instead of restoring packages to repository-local directory.
@@ -295,7 +295,7 @@ function with_retries {
function GetDotNetInstallScript {
local root=$1
local install_script="$root/dotnet-install.sh"
- local install_script_url="https://dotnet.microsoft.com/download/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh"
+ local install_script_url="https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh"
if [[ ! -a "$install_script" ]]; then
mkdir -p "$root"
diff --git a/global.json b/global.json
index 5f60b28dd665b..b094e3f86ce6c 100644
--- a/global.json
+++ b/global.json
@@ -11,8 +11,8 @@
}
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25161.4",
- "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25161.4",
+ "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25164.2",
+ "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25164.2",
"Microsoft.Build.Traversal": "3.4.0"
}
}
diff --git a/src/VisualStudio/CSharp/Impl/Options/CSharpVisualStudioCopilotOptionsService.cs b/src/VisualStudio/CSharp/Impl/Options/CSharpVisualStudioCopilotOptionsService.cs
index 067ff4a9896e9..a9eab90ec968f 100644
--- a/src/VisualStudio/CSharp/Impl/Options/CSharpVisualStudioCopilotOptionsService.cs
+++ b/src/VisualStudio/CSharp/Impl/Options/CSharpVisualStudioCopilotOptionsService.cs
@@ -4,15 +4,14 @@
using System;
using System.Composition;
-using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Copilot;
using Microsoft.CodeAnalysis.Editor.Shared.Utilities;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.Internal.VisualStudio.Shell.Interop;
-using Microsoft.VisualStudio.Settings;
using Microsoft.VisualStudio.Shell;
+using Microsoft.VisualStudio.Utilities.UnifiedSettings;
namespace Microsoft.VisualStudio.LanguageServices.CSharp.Options;
@@ -40,14 +39,12 @@ internal sealed class CSharpVisualStudioCopilotOptionsService : ICopilotOptionsS
///
private const string GitHubAccountStatusIsCopilotEntitled = "3DE3FA6E-91B2-46C1-9E9E-DD04975BB890";
- private const string CopilotOptionNamePrefix = "Microsoft.VisualStudio.Conversations";
-
// Default value must reflect their default values in ConversationsOptions in Copilot repo.
- private readonly CopilotOption _copilotCodeAnalysisOption = new("EnableCSharpCodeAnalysis", false);
- private readonly CopilotOption _copilotRefineOption = new("EnableCSharpRefineQuickActionSuggestion", false);
- private readonly CopilotOption _copilotOnTheFlyDocsOption = new("EnableOnTheFlyDocs", true);
- private readonly CopilotOption _copilotGenerateDocumentationCommentOption = new("EnableCSharpGenerateDocumentationComment", true);
- private readonly CopilotOption _copilotGenerateMethodImplementationOption = new("EnableCSharpGenerateMethodImplementation", true);
+ private readonly CopilotOption _copilotCodeAnalysisOption = new("copilot.featureFlags.editor.enableCSharpCodeAnalysis", false);
+ private readonly CopilotOption _copilotRefineOption = new("copilot.featureFlags.editor.enableCSharpRefineQuickActionSuggestion", false);
+ private readonly CopilotOption _copilotOnTheFlyDocsOption = new("copilot.general.editor.enableOnTheFlyDocs", true);
+ private readonly CopilotOption _copilotGenerateDocumentationCommentOption = new("copilot.general.editor.enableGenerateDocumentationComment", true);
+ private readonly CopilotOption _copilotGenerateMethodImplementationOption = new("copilot.featureFlags.editor.enableCSharpGenerateMethodImplementation", false);
private static readonly UIContext s_copilotHasLoadedUIContext = UIContext.FromUIContextGuid(new Guid(CopilotHasLoadedGuid));
private static readonly UIContext s_gitHubAccountStatusDeterminedContext = UIContext.FromUIContextGuid(new Guid(GitHubAccountStatusDetermined));
@@ -55,6 +52,7 @@ internal sealed class CSharpVisualStudioCopilotOptionsService : ICopilotOptionsS
private static readonly UIContext s_gitHubAccountStatusSignedInUIContext = UIContext.FromUIContextGuid(new Guid(GitHubAccountStatusSignedIn));
private readonly Task _settingsManagerTask;
+ private ISettingsReader? _settingsReader;
///
/// Determines if Copilot is active and the user is signed in and entitled to use Copilot.
@@ -68,7 +66,7 @@ private static bool IsGithubCopilotLoadedAndSignedIn
[method: ImportingConstructor]
[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
public CSharpVisualStudioCopilotOptionsService(
- IVsService settingsManagerService,
+ IVsService settingsManagerService,
IThreadingContext threadingContext)
{
_settingsManagerTask = settingsManagerService.GetValueAsync(threadingContext.DisposalToken);
@@ -79,11 +77,23 @@ private async Task IsCopilotOptionEnabledAsync(CopilotOption option)
if (!IsGithubCopilotLoadedAndSignedIn)
return false;
- var settingManager = await _settingsManagerTask.ConfigureAwait(false);
- // The bool setting is persisted as 0=None, 1=True, 2=False, so it needs to be retrieved as an int.
- // If isEnabled is 0 or the value is not persisted, we should return the default value for the option.
- var isEnabled = settingManager.GetValueOrDefault($"{CopilotOptionNamePrefix}.{option.Name}", 0);
- return isEnabled == 1 || (isEnabled == 0 && option.DefaultValue);
+ if (_settingsReader == null)
+ {
+ var settingsManager = await _settingsManagerTask.ConfigureAwait(false);
+ _settingsReader = settingsManager.GetReader();
+ }
+
+ try
+ {
+ if (_settingsReader.GetValue(option.Name) is { Outcome: SettingRetrievalOutcome.Success } setting)
+ return setting.Value;
+
+ return option.DefaultValue;
+ }
+ catch
+ {
+ return option.DefaultValue;
+ }
}
public Task IsCodeAnalysisOptionEnabledAsync()
diff --git a/src/VisualStudio/CSharp/Impl/SemanticSearch/SemanticSearchToolWindowImpl.cs b/src/VisualStudio/CSharp/Impl/SemanticSearch/SemanticSearchToolWindowImpl.cs
index 23fc22863b3e9..530a695cbbcb7 100644
--- a/src/VisualStudio/CSharp/Impl/SemanticSearch/SemanticSearchToolWindowImpl.cs
+++ b/src/VisualStudio/CSharp/Impl/SemanticSearch/SemanticSearchToolWindowImpl.cs
@@ -198,6 +198,11 @@ public async Task InitializeAsync(CancellationToken cancellati
return null;
}
+ if (!globalOptions.GetOption(SemanticSearchFeatureFlag.PromptEnabled))
+ {
+ return null;
+ }
+
var outerGrid = new Grid()
{
Background = (Brush)Application.Current.FindResource(CommonControlsColors.TextBoxBackgroundBrushKey),
diff --git a/src/VisualStudio/Core/Def/Options/VisualStudioOptionStorage.cs b/src/VisualStudio/Core/Def/Options/VisualStudioOptionStorage.cs
index b838cbd7a7fbf..3bf4c29fe1470 100644
--- a/src/VisualStudio/Core/Def/Options/VisualStudioOptionStorage.cs
+++ b/src/VisualStudio/Core/Def/Options/VisualStudioOptionStorage.cs
@@ -372,6 +372,7 @@ public bool TryFetch(LocalUserRegistryOptionPersister persister, OptionKey2 opti
{"dotnet_unsupported_report_invalid_json_patterns", new RoamingProfileStorage("TextEditor.%LANGUAGE%.Specific.ReportInvalidJsonPatterns")},
{"visual_studio_enable_key_binding_reset", new FeatureFlagStorage("Roslyn.KeybindingResetEnabled")},
{"visual_studio_enable_semantic_search", new FeatureFlagStorage("Roslyn.SemanticSearchEnabled")},
+ {"visual_studio_enable_semantic_search_prompt", new FeatureFlagStorage("Roslyn.ShowPromptInSemanticSearch")},
{"visual_studio_enable_copilot_rename_context", new FeatureFlagStorage("Roslyn.CopilotRenameGetContext")},
{"visual_studio_key_binding_needs_reset", new LocalUserProfileStorage(@"Roslyn\Internal\KeybindingsStatus", "NeedsReset")},
{"visual_studio_key_binding_reset_never_show_again", new LocalUserProfileStorage(@"Roslyn\Internal\KeybindingsStatus", "NeverShowAgain")},
diff --git a/src/VisualStudio/Core/Def/SemanticSearch/SemanticSearchFeatureFlag.cs b/src/VisualStudio/Core/Def/SemanticSearch/SemanticSearchFeatureFlag.cs
index 4b5e4cadb7d7d..caf12828d2004 100644
--- a/src/VisualStudio/Core/Def/SemanticSearch/SemanticSearchFeatureFlag.cs
+++ b/src/VisualStudio/Core/Def/SemanticSearch/SemanticSearchFeatureFlag.cs
@@ -9,6 +9,7 @@ namespace Microsoft.VisualStudio.LanguageServices;
internal static class SemanticSearchFeatureFlag
{
public static readonly Option2 Enabled = new("visual_studio_enable_semantic_search", defaultValue: false);
+ public static readonly Option2 PromptEnabled = new("visual_studio_enable_semantic_search_prompt", defaultValue: false);
///
/// Context id that indicates that Semantic Search feature is enabled.