diff --git a/eng/imports/RepoLayout.props b/eng/imports/RepoLayout.props
index ad4c4e19fde..66b70d98502 100644
--- a/eng/imports/RepoLayout.props
+++ b/eng/imports/RepoLayout.props
@@ -18,6 +18,7 @@
$(VisualStudioSetupOutputPath)Insertion\
$(ArtifactsConfigurationDir)VSSetup.obj\
$(VisualStudioSetupOutputPath)Rules\
+ $(RepoRoot)setup\
\ No newline at end of file
diff --git a/setup/Microsoft.VisualStudio.ProjectSystem.Managed.CommonFiles/CommonFiles.swr b/setup/Microsoft.VisualStudio.ProjectSystem.Managed.CommonFiles/CommonFiles.swr
index c858a5d152a..349bdcbabd7 100644
--- a/setup/Microsoft.VisualStudio.ProjectSystem.Managed.CommonFiles/CommonFiles.swr
+++ b/setup/Microsoft.VisualStudio.ProjectSystem.Managed.CommonFiles/CommonFiles.swr
@@ -657,3 +657,6 @@ folder "InstallDir:MSBuild\Microsoft\VisualStudio\Managed\zh-Hant"
file source="$(VisualStudioXamlRulesDir)zh-Hant\ResolvedProjectReference.xaml"
file source="$(VisualStudioXamlRulesDir)zh-Hant\ResolvedSdkReference.xaml"
file source="$(VisualStudioXamlRulesDir)zh-Hant\SdkReference.xaml"
+
+ folder "Extensions\Microsoft\ManagedProjectSystem\UnifiedSettings"
+ file source="$(VisualStudioExtensionSetupDir)\ProjectSystemSetup\UnifiedSettings\ManagedProjectSystem.registration.json"
diff --git a/setup/Microsoft.VisualStudio.ProjectSystem.Managed.CommonFiles/Microsoft.VisualStudio.ProjectSystem.Managed.CommonFiles.swixproj b/setup/Microsoft.VisualStudio.ProjectSystem.Managed.CommonFiles/Microsoft.VisualStudio.ProjectSystem.Managed.CommonFiles.swixproj
index 84737929906..655ff587dbb 100644
--- a/setup/Microsoft.VisualStudio.ProjectSystem.Managed.CommonFiles/Microsoft.VisualStudio.ProjectSystem.Managed.CommonFiles.swixproj
+++ b/setup/Microsoft.VisualStudio.ProjectSystem.Managed.CommonFiles/Microsoft.VisualStudio.ProjectSystem.Managed.CommonFiles.swixproj
@@ -5,7 +5,7 @@
- $(PackagePreprocessorDefinitions);VisualStudioXamlRulesDir=$(VisualStudioXamlRulesDir)
+ $(PackagePreprocessorDefinitions);VisualStudioXamlRulesDir=$(VisualStudioXamlRulesDir);VisualStudioExtensionSetupDir=$(VisualStudioExtensionSetupDir)
diff --git a/setup/ProjectSystemSetup/ProjectSystemSetup.csproj b/setup/ProjectSystemSetup/ProjectSystemSetup.csproj
index 21e64f2186e..13aa5ab22d9 100644
--- a/setup/ProjectSystemSetup/ProjectSystemSetup.csproj
+++ b/setup/ProjectSystemSetup/ProjectSystemSetup.csproj
@@ -26,6 +26,10 @@
+
+ true
+
+
BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup;PkgdefProjectOutputGroup
diff --git a/setup/ProjectSystemSetup/UnifiedSettings/ManagedProjectSystem.registration.json b/setup/ProjectSystemSetup/UnifiedSettings/ManagedProjectSystem.registration.json
new file mode 100644
index 00000000000..fbcaac27d73
--- /dev/null
+++ b/setup/ProjectSystemSetup/UnifiedSettings/ManagedProjectSystem.registration.json
@@ -0,0 +1,111 @@
+{
+ "properties": {
+ "projectsAndSolutions.sdkStyleProjects.fastUpToDateCheck.enabled": {
+ "type": "boolean",
+ "title": "@Setting_FastUpToDateCheck_Enabled_Title;{860A27C0-B665-47F3-BC12-637E16A1050A}",
+ "default": true,
+ "requiresRestart": false,
+ "migration": {
+ "pass": {
+ "input": {
+ "store": "SettingsManager",
+ "path": "ManagedProjectSystem\\FastUpToDateCheckEnabled"
+ }
+ }
+ }
+ },
+ "projectsAndSolutions.sdkStyleProjects.fastUpToDateCheck.loggingLevel": {
+ "type": "string",
+ "title": "@Setting_FastUpToDateCheck_LoggingLevel_Title;{860A27C0-B665-47F3-BC12-637E16A1050A}",
+ "default": "none",
+ "enum": [
+ "none",
+ "minimal",
+ "info",
+ "verbose"
+ ],
+ "enumItemLabels": [
+ "@Setting_FastUpToDateCheck_LoggingLevel_None;{860A27C0-B665-47F3-BC12-637E16A1050A}",
+ "@Setting_FastUpToDateCheck_LoggingLevel_Minimal;{860A27C0-B665-47F3-BC12-637E16A1050A}",
+ "@Setting_FastUpToDateCheck_LoggingLevel_Info;{860A27C0-B665-47F3-BC12-637E16A1050A}",
+ "@Setting_FastUpToDateCheck_LoggingLevel_Verbose;{860A27C0-B665-47F3-BC12-637E16A1050A}"
+ ],
+ "requiresRestart": false,
+ "migration": {
+ "enumIntegerToString": {
+ "input": {
+ "store": "SettingsManager",
+ "path": "ManagedProjectSystem\\FastUpToDateLogLevel"
+ },
+ "map": [
+ {
+ "result": "none",
+ "match": 0
+ },
+ {
+ "result": "minimal",
+ "match": 1
+ },
+ {
+ "result": "info",
+ "match": 2
+ },
+ {
+ "result": "verbose",
+ "match": 3
+ }
+ ]
+ }
+ }
+ },
+ "projectsAndSolutions.sdkStyleProjects.fileNestingSettings.ignoreSolutionAndProjectSettings": {
+ "type": "boolean",
+ "title": "@Setting_FileNesting_IgnoreSolutionAndProjectSettings_Title;{860A27C0-B665-47F3-BC12-637E16A1050A}",
+ "default": false,
+ "requiresRestart": false,
+ "migration": {
+ "pass": {
+ "input": {
+ "store": "SettingsManager",
+ "path": "Cps.NestingIgnoreSolutionAndProjectProfiles"
+ }
+ }
+ }
+ },
+ "projectsAndSolutions.sdkStyleProjects.multiTargetingSettings.preferSingleTargetBuilds": {
+ "type": "boolean",
+ "title": "@Setting_FileNesting_PreferSingleTargetBuilds_Title;{860A27C0-B665-47F3-BC12-637E16A1050A}",
+ "description": "@Setting_FileNesting_PreferSingleTargetBuilds_Description;{860A27C0-B665-47F3-BC12-637E16A1050A}",
+ "default": false,
+ "requiresRestart": false,
+ "migration": {
+ "pass": {
+ "input": {
+ "store": "SettingsManager",
+ "path": "ManagedProjectSystem\\PreferSingleTargetBuilds"
+ }
+ }
+ }
+ }
+ },
+
+ "categories": {
+ "projectsAndSolutions.sdkStyleProjects": {
+ "title": "@Settings_Category_SdkStyleProjects;{860A27C0-B665-47F3-BC12-637E16A1050A}"
+ },
+ "projectsAndSolutions.sdkStyleProjects.fastUpToDateCheck": {
+ "title": "@Settings_Category_FastUpToDateCheck;{860A27C0-B665-47F3-BC12-637E16A1050A}",
+ "order": 1,
+ "additionalKeywords": [ "futd", "up-to-date", "build" ]
+ },
+ "projectsAndSolutions.sdkStyleProjects.fileNestingSettings": {
+ "title": "@Settings_Category_FileNestingSettings;{860A27C0-B665-47F3-BC12-637E16A1050A}",
+ "order": 2
+ },
+ "projectsAndSolutions.sdkStyleProjects.multiTargetingSettings": {
+ "title": "@Settings_Category_MultiTargetingSettings;{860A27C0-B665-47F3-BC12-637E16A1050A}",
+ "order": 3,
+ "additionalKeywords": [ "build" ]
+ }
+ }
+ }
\ No newline at end of file
diff --git a/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/VSPackage.resx b/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/VSPackage.resx
index 3cff6be6ec6..f3a7de8c9b5 100644
--- a/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/VSPackage.resx
+++ b/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/VSPackage.resx
@@ -168,4 +168,43 @@
.NET Core 2015 Project Files (*.xproj);*.xproj
+
+ Don't call MSBuild if a project appears to be up to date
+
+
+ Logging Level
+
+
+ None
+
+
+ Minimal
+
+
+ Info
+
+
+ Verbose
+
+
+ Ignore solution and project settings
+
+
+ Prefer single-target builds when starting a project
+
+
+ When starting a project that targets multiple frameworks the build time can be reduced by building only a single one.
+
+
+ SDK-style projects
+
+
+ Up to date checks
+
+
+ File nesting settings
+
+
+ Multi-targeting settings
+
\ No newline at end of file
diff --git a/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/xlf/VSPackage.cs.xlf b/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/xlf/VSPackage.cs.xlf
index 21a3750adcb..35b78a3ee5a 100644
--- a/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/xlf/VSPackage.cs.xlf
+++ b/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/xlf/VSPackage.cs.xlf
@@ -87,6 +87,71 @@
Soubory projektu .NET Core 2015 (*.xproj);*.xproj
+
+
+ Don't call MSBuild if a project appears to be up to date
+
+
+
+
+ Info
+
+
+
+
+ Minimal
+
+
+
+
+ None
+
+
+
+
+ Logging Level
+
+
+
+
+ Verbose
+
+
+
+
+ Ignore solution and project settings
+
+
+
+
+ When starting a project that targets multiple frameworks the build time can be reduced by building only a single one.
+
+
+
+
+ Prefer single-target builds when starting a project
+
+
+
+
+ Up to date checks
+
+
+
+
+ File nesting settings
+
+
+
+
+ Multi-targeting settings
+
+
+
+
+ SDK-style projects
+
+