diff --git a/eng/targets/VisualStudio.targets b/eng/targets/VisualStudio.targets
index a08769ccf483e..64e8116ca4adf 100644
--- a/eng/targets/VisualStudio.targets
+++ b/eng/targets/VisualStudio.targets
@@ -144,6 +144,34 @@
-
+
+
+
+
+
+ $(CreateVsixContainerDependsOn);PublishProjectReferencesForVsixCreation
+
+
+
+
+ <_ProjectsToPublish Include="@(ProjectReference)" Condition="$([MSBuild]::ValueOrDefault('%(ProjectReference.IncludeOutputGroupsInVSIX)', '').Contains('PublishedProjectOutputGroup'))"/>
+
+
+
+
diff --git a/src/Features/CSharpTest/Microsoft.CodeAnalysis.CSharp.Features.UnitTests.csproj b/src/Features/CSharpTest/Microsoft.CodeAnalysis.CSharp.Features.UnitTests.csproj
index 73c7105b1f10e..55688e4abeed1 100644
--- a/src/Features/CSharpTest/Microsoft.CodeAnalysis.CSharp.Features.UnitTests.csproj
+++ b/src/Features/CSharpTest/Microsoft.CodeAnalysis.CSharp.Features.UnitTests.csproj
@@ -31,7 +31,7 @@
-
+
diff --git a/src/Interactive/HostProcess/x64/InteractiveHost64.csproj b/src/Interactive/HostProcess/x64/InteractiveHost64.csproj
index 7bbf60b076672..8e03e7e872f37 100644
--- a/src/Interactive/HostProcess/x64/InteractiveHost64.csproj
+++ b/src/Interactive/HostProcess/x64/InteractiveHost64.csproj
@@ -26,31 +26,43 @@
+
+
+
+
+
+ <_IntermediateDepsFilePath Condition=" '$(PublishDepsFilePath)' != ''">$(PublishDepsFilePath)
+ <_IntermediateDepsFilePath Condition=" '$(PublishDepsFilePath)' == ''">$(IntermediateOutputPath)$(ProjectDepsFileName)
+
-
- <_PublishedFiles Include="$(PublishDir)**\*.*" />
- <_PublishedFiles Remove="@(_PublishedFiles)" Condition="'%(Extension)' == '.pdb'" />
+ <_VsixItem Include="@(PublishItemsOutputGroupOutputs->'%(OutputPath)')" />
+ <_VsixItem Remove="@(_VsixItem)" Condition="'%(Extension)' == '.pdb'" />
+
+
+ <_VsixItem Include="$(_IntermediateDepsFilePath)" Condition="'$(TargetFrameworkIdentifier)' != '.NETFramework'" />
- <_PublishedFiles Include="$(MSBuildProjectDirectory)\Desktop\CSharpInteractive.rsp" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'" />
- <_PublishedFiles Include="$(MSBuildProjectDirectory)\Core\CSharpInteractive.rsp" Condition="'$(TargetFrameworkIdentifier)' != '.NETFramework'" />
+ <_VsixItem Include="$(MSBuildProjectDirectory)\Desktop\CSharpInteractive.rsp" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'" />
+ <_VsixItem Include="$(MSBuildProjectDirectory)\Core\CSharpInteractive.rsp" Condition="'$(TargetFrameworkIdentifier)' != '.NETFramework'" />
- <_PublishedFiles Include="$(MSBuildProjectDirectory)\.editorconfig"/>
+ <_VsixItem Include="$(MSBuildProjectDirectory)\.editorconfig" />
- <_PublishedFiles Update="@(_PublishedFiles)" TargetPath="%(RecursiveDir)%(Filename)%(Extension)" />
+ <_VsixItem Update="@(_VsixItem)" TargetPath="%(Filename)%(Extension)" Condition="'%(_VsixItem.TargetPath)' == ''" />
- <_PublishedFiles Update="@(_PublishedFiles)" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' and ('%(Extension)' == '.dll' or '%(Extension)' == '.exe')">
+ <_VsixItem Update="@(_VsixItem)" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' and ('%(Extension)' == '.dll' or '%(Extension)' == '.exe')">
true
3
All
X64
[installDir]\Common7\IDE\$(CommonExtensionInstallationRoot)\$(LanguageServicesExtensionInstallationFolder)\InteractiveHost\Desktop\InteractiveHost64.exe
-
+
+
+
\ No newline at end of file
diff --git a/src/Interactive/HostProcess/x86/InteractiveHost32.csproj b/src/Interactive/HostProcess/x86/InteractiveHost32.csproj
index d32f4393c6225..79efde2fb521f 100644
--- a/src/Interactive/HostProcess/x86/InteractiveHost32.csproj
+++ b/src/Interactive/HostProcess/x86/InteractiveHost32.csproj
@@ -22,22 +22,25 @@
-
+
- <_PublishProjectOutputGroup Include="$(TargetPath)">
+ <_VsixItem Include="$(TargetPath)">
$(TargetFileName)
true
3
X86
[installDir]\Common7\IDE\$(CommonExtensionInstallationRoot)\$(LanguageServicesExtensionInstallationFolder)\InteractiveHost\Desktop\InteractiveHost32.exe
-
- <_PublishProjectOutputGroup Include="$(TargetPath).config" TargetPath="$(TargetFileName).config"/>
+
+ <_VsixItem Include="$(TargetPath).config" TargetPath="$(TargetFileName).config"/>
+
+
+
\ No newline at end of file
diff --git a/src/Interactive/HostTest/InteractiveHost.UnitTests.csproj b/src/Interactive/HostTest/InteractiveHost.UnitTests.csproj
index 146044986fcd9..e3306cfbb04d7 100644
--- a/src/Interactive/HostTest/InteractiveHost.UnitTests.csproj
+++ b/src/Interactive/HostTest/InteractiveHost.UnitTests.csproj
@@ -50,8 +50,7 @@
-->
-
-
+
diff --git a/src/Tools/SemanticSearch/ReferenceAssemblies/SemanticSearch.ReferenceAssemblies.csproj b/src/Tools/SemanticSearch/ReferenceAssemblies/SemanticSearch.ReferenceAssemblies.csproj
index 12f985c4d121b..445516a39de98 100644
--- a/src/Tools/SemanticSearch/ReferenceAssemblies/SemanticSearch.ReferenceAssemblies.csproj
+++ b/src/Tools/SemanticSearch/ReferenceAssemblies/SemanticSearch.ReferenceAssemblies.csproj
@@ -61,10 +61,8 @@
-
+
-
- <_PublishProjectOutputGroupOutput Include="@(_OutputFile)" />
-
-
+
+
diff --git a/src/VisualStudio/Setup.ServiceHub/arm64/Roslyn.VisualStudio.ServiceHub.Setup.arm64.csproj b/src/VisualStudio/Setup.ServiceHub/arm64/Roslyn.VisualStudio.ServiceHub.Setup.arm64.csproj
index a175f8c54a2b0..cf34113c6e103 100644
--- a/src/VisualStudio/Setup.ServiceHub/arm64/Roslyn.VisualStudio.ServiceHub.Setup.arm64.csproj
+++ b/src/VisualStudio/Setup.ServiceHub/arm64/Roslyn.VisualStudio.ServiceHub.Setup.arm64.csproj
@@ -20,7 +20,7 @@
true
false
- PublishProjectOutputGroup
+ PublishedProjectOutputGroup
false
diff --git a/src/VisualStudio/Setup.ServiceHub/x64/Roslyn.VisualStudio.ServiceHub.Setup.x64.csproj b/src/VisualStudio/Setup.ServiceHub/x64/Roslyn.VisualStudio.ServiceHub.Setup.x64.csproj
index 91e99dca1c9f0..214f738f1e1de 100644
--- a/src/VisualStudio/Setup.ServiceHub/x64/Roslyn.VisualStudio.ServiceHub.Setup.x64.csproj
+++ b/src/VisualStudio/Setup.ServiceHub/x64/Roslyn.VisualStudio.ServiceHub.Setup.x64.csproj
@@ -12,7 +12,7 @@
true
false
- PublishProjectOutputGroup
+ PublishedProjectOutputGroup
false
diff --git a/src/VisualStudio/Setup/Roslyn.VisualStudio.Setup.csproj b/src/VisualStudio/Setup/Roslyn.VisualStudio.Setup.csproj
index 0a2d5ff61b3b7..da3eccdcc04b8 100644
--- a/src/VisualStudio/Setup/Roslyn.VisualStudio.Setup.csproj
+++ b/src/VisualStudio/Setup/Roslyn.VisualStudio.Setup.csproj
@@ -278,7 +278,7 @@
false
InteractiveHost\Core
- PublishProjectOutputGroup
+ PublishedProjectOutputGroup
@@ -293,7 +293,7 @@
false
InteractiveHost\Desktop
- PublishProjectOutputGroup
+ PublishedProjectOutputGroup
@@ -308,7 +308,7 @@
false
InteractiveHost\Desktop
- PublishProjectOutputGroup
+ PublishedProjectOutputGroup
@@ -317,7 +317,7 @@
false
false
SemanticSearchRefs
- PublishProjectOutputGroup
+ PublishedProjectOutputGroup
false
diff --git a/src/Workspaces/Remote/ServiceHub.CoreComponents/CoreComponents.Shared.targets b/src/Workspaces/Remote/ServiceHub.CoreComponents/CoreComponents.Shared.targets
index 8ce2d5ff4c0e0..0bd122d3d7a83 100644
--- a/src/Workspaces/Remote/ServiceHub.CoreComponents/CoreComponents.Shared.targets
+++ b/src/Workspaces/Remote/ServiceHub.CoreComponents/CoreComponents.Shared.targets
@@ -35,9 +35,12 @@
-->
-
-
+
+
+ <_PublishPaths Include="@(PublishItemsOutputGroupOutputs->'%(OutputPath)')" />
+ <_PublishDllPaths Include="@(_PublishPaths)" Condition="'%(Extension)' == '.dll'" />
+
<_R2RAssemblies Include="@(ReferencePath->'%(FileName)%(Extension)')" Condition="'%(ReferenceSourceTarget)' == 'ProjectReference'" />
@@ -58,7 +61,7 @@
<_R2RAssemblies Include="Microsoft.NET.StringTools.dll" />
- <_AllPublishedAssemblyPaths Include="$(PublishDir)**\*.dll" Exclude="$(PublishDir)**\*.resources.dll" />
+ <_AllPublishedAssemblyPaths Include="@(_PublishDllPaths)" Exclude="%(FileName).EndsWith('.resources')" />
<_AllPublishedAssemblies Include="@(_AllPublishedAssemblyPaths->'%(FileName)%(Extension)')" >
<_FullFilePath>%(FullPath)
@@ -71,6 +74,15 @@
<_R2RAssemblyPaths Include="@(_AllPublishedAssemblyPaths)" Exclude="@(_NoR2RAssemblyPaths)" />
+
+
+ <_RuntimeLibraries Include="$(_RuntimeLibrariesPath)**\*.dll" />
+ <_WinRuntimeLibraries Include="$(_WinRuntimeLibrariesPath)**\*.dll" />
+
+ <_RuntimeLibrariesInPublishDir Include="@(_RuntimeLibraries->'$(PublishDir)%(FileName)%(Extension)')" />
+ <_RuntimeLibrariesInPublishDir Include="@(_WinRuntimeLibraries->'$(PublishDir)%(FileName)%(Extension)')" />
+
+ <_NonRuntimeAssembliesInPublishDir Include="@(_PublishDllPaths)" Exclude="@(_RuntimeLibrariesInPublishDir)" />
@@ -79,13 +91,13 @@
-
+
<_CrossgenTargetsAsDependencies Include="$(OriginalAssemblyDir)*.dll" />
- <_NonCrossgenTargetsAsDependencies Include="@(_NonRuntimeAssembliesInPublishDir)" Exclude="@(_R2RAssemblyPaths)" />
+ <_NonCrossgenTargetsAsDependencies Include="@(_NonRuntimeAssembliesInPublishDir)" Exclude="@(_R2RAssemblyPaths)" />
<_CrossgenTargetPaths Include="@(_CrossgenTargetsAsDependencies)">
$(PublishDir)%(_CrossgenTargetsAsDependencies.Filename)%(_CrossgenTargetsAsDependencies.Extension)
@@ -93,14 +105,14 @@
+ Outputs="%(_CrossgenTargetPaths.OutputPath)">
<_Crossgen2ExePath>$(PkgMicrosoft_NETCore_App_crossgen2_win-x64)\tools\crossgen2.exe
<_R2ROptimizeAssemblyPath>%(_CrossgenTargetPaths.FullPath)
- <_R2ROptimizeAssemblyOutputPath>$(PublishDir)%(_CrossgenTargetPaths.Filename)%(_CrossgenTargetPaths.Extension)
+ <_R2ROptimizeAssemblyOutputPath>$(PublishDir)%(_CrossgenTargetPaths.Filename)%(_CrossgenTargetPaths.Extension)
<_RspFilePath>$(CrossgenWorkDir)%(_CrossgenTargetPaths.Filename).CrossgenArgs.rsp
@@ -121,25 +133,11 @@
-
+
-
-
- <_RuntimeLibraries Include="$(_RuntimeLibrariesPath)**\*.dll" />
- <_WinRuntimeLibraries Include="$(_WinRuntimeLibrariesPath)**\*.dll" />
-
- <_RuntimeLibrariesInPublishDir Include="@(_RuntimeLibraries->'$(PublishDir)%(FileName)%(Extension)')" />
- <_RuntimeLibrariesInPublishDir Include="@(_WinRuntimeLibraries->'$(PublishDir)%(FileName)%(Extension)')" />
-
- <_NonRuntimeAssembliesInPublishDir Include="$(PublishDir)*.dll" Exclude="@(_RuntimeLibrariesInPublishDir)" />
-
-
-
-
-
-
+
<_ExcludeRuntimeLibraries Condition="'$(OfficialBuild)' == 'true'">true
+
- <_ExcludedFiles Include="$(PublishDir)**\Microsoft.CodeAnalysis.Remote.ServiceHub.CoreComponents.*" />
- <_ExcludedFiles Include="$(PublishDir)**\*.pdb" />
- <_ExcludedFiles Include="$(CrossgenWorkDir)**\*" />
+
+ <_VsixItem Include="@(_PublishPaths)" />
+ <_VsixItem Remove="@(_VsixItem)" Condition="'%(Extension)' == '.pdb'" />
+
+
+ <_VsixItem Remove="@(_VsixItem)" Condition="$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('$(TargetName)'))" />
- <_ExcludedFiles Include="$(PublishDir)runtimes\**\*.*" />
- <_ExcludedFiles Condition="'$(_ExcludeRuntimeLibraries)' == 'true'" Include="@(_RuntimeLibrariesInPublishDir)" />
+ <_VsixItem Remove="@(_VsixItem)" Condition="$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith('$(PublishDir)runtimes'))" />
+
+ <_VsixItem Remove="@(_RuntimeLibrariesInPublishDir)" Condition="'$(_ExcludeRuntimeLibraries)' == 'true'" />
-
-
- <_PublishedFiles Include="$(PublishDir)**\*.*" Exclude="@(_ExcludedFiles)"/>
-
- <_PublishedFiles Update="@(_PublishedFiles)" TargetPath="%(RecursiveDir)%(Filename)%(Extension)" />
-
+
+