Skip to content

Commit 75def83

Browse files
committed
Use ProjectReference items in inbox src projects
There are numerous benefits in using ProjectReferences consistently in all libraries: 1. An upfront "libs" build isn't required anymore and sfx libraries can now directly be built from a fresh clone (with dotnet build or inside VS). I.e. `dotnet.cmd pack src/libraries/System.Text.Json/src/` is now possible from a fresh clone. 2. Because of 1), we can now add a solution file for the whole sfx that can directly be opened and worked with from a fresh clone. 3. The overall root build is faster. Without this change, the build order was sfx-ref -> (sfx-src & sfx-gen) so the shared framework reference projects first had to be built and only then the sfx src and gen projects could be built. Now with this change, everything gets built in parallel. 4. Using P2Ps means that we now follow the common and well supported msbuild and SDK path instead of repo customization. The downside of doing this is that the dependency graph gets bigger, meaning that more projects get incrementally built when doing a "dotnet build". This is nothing new and the SDK team recommends to pass the "--no-dependencies" flag to "dotnet build" if incrementally (no-op) building the additional dependency nodes is noticeable. This is less of a concern inside VS as that has a "fast up-to-date check" feature that doesn't even attempt to build projects that didn't change. For VS, really the only noticeable change is that the solution explorer now lists more projects and that when opening a solution, more projects need to be evaluated. But, that should be fast enough when using an up-to-date version of VS. - A few observations that make the change more involved: There's a NuGet client bug that requires a few workarounds: NuGet/Home#10368 Because of that, as a workaround, PackageId had to be set to a different string for S.Numerics.Vectors and System.Memory. We should fix the NuGet tooling issue to eventually get rid of the workarounds introduced with this commit. There was already a PR in NuGet.Client open but it was closed because of staleness. - System.Data.Common.csproj is a weird project as it references CoreLib and reference assemblies. I had to disable transitive project references in order for type universes to not clash and explicitly set CompileUsingReferenceAssemblies=true as that gets set to false when the library explicitly references CoreLib.
1 parent 7a50b43 commit 75def83

File tree

94 files changed

+801
-835
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+801
-835
lines changed

docs/coding-guidelines/project-guidelines.md

+2-4
Original file line numberDiff line numberDiff line change
@@ -159,11 +159,9 @@ All ref outputs should be under
159159
`bin\$(MSBuildProjectName)\ref\$(TargetFramework)`
160160

161161
## src
162-
In the src directory for a library there should be only **one** `.csproj` file that contains any information necessary to build the library in various target frameworks. All supported target frameworks should be listed in the `TargetFrameworks` property.
162+
In the src directory for a library there should be only **one** `.csproj` file that contains any information necessary to build the library in various target frameworks. All supported target frameworks should be listed in the `TargetFramework` or `TargetFrameworks` property.
163163

164-
All libraries should use `<Reference Include="..." />` for all their references to libraries that compose the shared framework of the current .NETCoreApp. That will cause them to be resolved against the locally built targeting pack which is located at `artifacts\bin\microsoft.netcore.app.ref`. The only exception to that rule right now is for partial facades which directly reference System.Private.CoreLib and thus need to directly reference other partial facades to avoid type conflicts.
165-
166-
Other target frameworks than .NETCoreApp latest (i.e. `netstandard2.0`, `net462`, `net6.0`) should use ProjectReference items to reference dependencies.
164+
Libraries should use `ProjectReference` items to reference live dependencies.
167165

168166
### src\ILLink
169167
Contains the files used to direct the trimming tool. See [ILLink files](../workflow/trimming/ILLink-files.md).

eng/generators.targets

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
(
2727
'$(DisableImplicitFrameworkReferences)' == 'true' and
2828
(
29-
'@(Reference->AnyHaveMetadataValue('Identity', 'System.Runtime.InteropServices'))' == 'true' or
29+
'@(ProjectReference->AnyHaveMetadataValue('Filename', 'System.Runtime.InteropServices'))' == 'true' or
3030
'@(ProjectReference->AnyHaveMetadataValue('Identity', '$(CoreLibProject)'))' == 'true'
3131
)
3232
)
@@ -39,7 +39,7 @@
3939
'$(MSBuildProjectExtension)' == '.csproj' and
4040
(
4141
'$(DisableImplicitFrameworkReferences)' == 'true' and
42-
'@(Reference->AnyHaveMetadataValue('Identity', 'System.Runtime.InteropServices'))' == 'true'
42+
'@(ProjectReference->AnyHaveMetadataValue('Filename', 'System.Runtime.InteropServices'))' == 'true'
4343
)" />
4444
</ItemGroup>
4545

eng/resolveContract.targets

+1
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@
119119
<PropertyGroup>
120120
<!-- Let GenFacades use roslyn from the toolset package as it loads sources which might require newer language features. -->
121121
<GenFacadesUseRoslynToolsetPackagePath>true</GenFacadesUseRoslynToolsetPackagePath>
122+
<GenFacadesReferencePathItemName>ReferencePathWithRefAssemblies</GenFacadesReferencePathItemName>
122123
</PropertyGroup>
123124

124125
<!-- ##### GenAPI settings ##### -->

eng/targetingpacks.targets

-20
Original file line numberDiff line numberDiff line change
@@ -89,26 +89,6 @@
8989
Condition="'$(UseLocalAppHostPack)' == 'true' and '@(KnownAppHostPack->AnyHaveMetadataValue('TargetFramework', '$(NetCoreAppCurrent)'))' != 'true'" />
9090
</ItemGroup>
9191

92-
<!-- Simple name references will be resolved from the targeting pack folders and should never be copied to the output. -->
93-
<ItemGroup>
94-
<Reference Update="@(Reference)">
95-
<Private Condition="'%(Reference.Extension)' != '.dll'">false</Private>
96-
</Reference>
97-
</ItemGroup>
98-
99-
<!-- Add the resolved targeting pack to the assembly search path. -->
100-
<Target Name="UseTargetingPackForAssemblySearchPaths"
101-
BeforeTargets="ResolveAssemblyReferences;
102-
DesignTimeResolveAssemblyReferences"
103-
Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and
104-
'$(TargetFrameworkVersion)' == 'v$(NetCoreAppCurrentVersion)' and
105-
'$(DisableImplicitFrameworkReferences)' == 'true'">
106-
<PropertyGroup>
107-
<AssemblySearchPaths>$(AssemblySearchPaths);$(MicrosoftNetCoreAppRefPackRefDir.TrimEnd('/\'))</AssemblySearchPaths>
108-
<DesignTimeAssemblySearchPaths>$(DesignTimeAssemblySearchPaths);$(MicrosoftNetCoreAppRefPackRefDir.TrimEnd('/\'))</DesignTimeAssemblySearchPaths>
109-
</PropertyGroup>
110-
</Target>
111-
11292
<!-- Use local targeting/runtime pack for NetCoreAppCurrent. -->
11393
<Target Name="UpdateLocalTargetingAndRuntimePack"
11494
Condition="'$(UseLocalTargetingRuntimePack)' == 'true'"

src/libraries/Microsoft.CSharp/src/Microsoft.CSharp.csproj

+16-14
Original file line numberDiff line numberDiff line change
@@ -238,23 +238,25 @@
238238
<Compile Include="Microsoft\CSharp\RuntimeBinder\ComInterop\VariantArgBuilder.cs" />
239239
<Compile Include="Microsoft\CSharp\RuntimeBinder\ComInterop\VariantArray.cs" />
240240
<Compile Include="Microsoft\CSharp\RuntimeBinder\ComInterop\VariantBuilder.cs" />
241-
242-
<Reference Include="System.Reflection.Emit" />
243-
<Reference Include="System.Reflection.Emit.ILGeneration" />
244-
<Reference Include="System.Reflection.Emit.Lightweight" />
245-
<Reference Include="System.Reflection.Primitives" />
246241
</ItemGroup>
247242

248243
<ItemGroup>
249-
<Reference Include="System.Collections" />
250-
<Reference Include="System.Collections.Concurrent" />
251-
<Reference Include="System.Linq" />
252-
<Reference Include="System.Linq.Expressions" />
253-
<Reference Include="System.Memory" />
254-
<Reference Include="System.ObjectModel" />
255-
<Reference Include="System.Runtime" />
256-
<Reference Include="System.Runtime.InteropServices" />
257-
<Reference Include="System.Threading" />
244+
<ProjectReference Include="$(LibrariesProjectRoot)System.Collections\src\System.Collections.csproj" />
245+
<ProjectReference Include="$(LibrariesProjectRoot)System.Collections.Concurrent\src\System.Collections.Concurrent.csproj" />
246+
<ProjectReference Include="$(LibrariesProjectRoot)System.Linq\src\System.Linq.csproj" />
247+
<ProjectReference Include="$(LibrariesProjectRoot)System.Linq.Expressions\src\System.Linq.Expressions.csproj" />
248+
<ProjectReference Include="$(LibrariesProjectRoot)System.Memory\src\System.Memory.csproj" />
249+
<ProjectReference Include="$(LibrariesProjectRoot)System.ObjectModel\src\System.ObjectModel.csproj" />
250+
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime\src\System.Runtime.csproj" />
251+
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime.InteropServices\src\System.Runtime.InteropServices.csproj" />
252+
<ProjectReference Include="$(LibrariesProjectRoot)System.Threading\src\System.Threading.csproj" />
253+
</ItemGroup>
254+
255+
<ItemGroup Condition="'$(EnableComBinder)'=='true'">
256+
<ProjectReference Include="$(LibrariesProjectRoot)System.Reflection.Emit\src\System.Reflection.Emit.csproj" />
257+
<ProjectReference Include="$(LibrariesProjectRoot)System.Reflection.Emit.ILGeneration\src\System.Reflection.Emit.ILGeneration.csproj" />
258+
<ProjectReference Include="$(LibrariesProjectRoot)System.Reflection.Emit.Lightweight\src\System.Reflection.Emit.Lightweight.csproj" />
259+
<ProjectReference Include="$(LibrariesProjectRoot)System.Reflection.Primitives\src\System.Reflection.Primitives.csproj" />
258260
</ItemGroup>
259261

260262
</Project>

src/libraries/Microsoft.VisualBasic.Core/src/Microsoft.VisualBasic.Core.vbproj

+27-21
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,40 @@
11
<Project Sdk="Microsoft.NET.Sdk">
2+
23
<PropertyGroup>
4+
<TargetFrameworks>$(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)</TargetFrameworks>
35
<NoVbRuntimeReference>true</NoVbRuntimeReference>
46
<VBRuntime>None</VBRuntime>
57
<OptionStrict>On</OptionStrict>
68
<OptionExplicit>On</OptionExplicit>
79
<OptionInfer>Off</OptionInfer>
810
<MyType>Empty</MyType>
911
<OptionCompare>Binary</OptionCompare>
10-
<WarningsNotAsErrors>42025</WarningsNotAsErrors>
12+
<WarningsNotAsErrors>$(WarningsNotAsErrors),42025</WarningsNotAsErrors>
1113
<DefineConstants>$(DefineConstants),LATEBINDING=True</DefineConstants>
1214
<NoWarn>$(NoWarn),CA1052,CA1510,CA1810,CA1822,CA2200</NoWarn>
1315
<!-- Avoid unused fields warnings in Unix build -->
1416
<AssemblyName>Microsoft.VisualBasic.Core</AssemblyName>
1517
<RemoveIntegerChecks>false</RemoveIntegerChecks>
1618
<RootNamespace />
17-
<TargetFrameworks>$(NetCoreAppCurrent);$(NetCoreAppCurrent)-windows</TargetFrameworks>
1819
<Nullable>disable</Nullable>
1920
<UseCompilerGeneratedDocXmlFile>false</UseCompilerGeneratedDocXmlFile>
2021
</PropertyGroup>
22+
2123
<!-- DesignTimeBuild requires all the TargetFramework Derived Properties to not be present in the first property group. -->
2224
<PropertyGroup>
2325
<TargetPlatformIdentifier>$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)'))</TargetPlatformIdentifier>
2426
<ILLinkDescriptorsXml Condition="'$(TargetPlatformIdentifier)' == 'windows'">$(MSBuildProjectDirectory)\ILLink\ILLink.Descriptors.Windows.xml</ILLinkDescriptorsXml>
2527
<DefineConstants Condition="'$(TargetPlatformIdentifier)' == 'windows'">$(DefineConstants),TARGET_WINDOWS=True</DefineConstants>
2628
<NoWarn Condition="'$(TargetPlatformIdentifier)' != 'windows'">$(NoWarn);CA1823</NoWarn>
2729
</PropertyGroup>
30+
2831
<ItemGroup Condition="'$(TargetPlatformIdentifier)' == 'windows'">
2932
<Compile Include="Microsoft\VisualBasic\Helpers\NativeMethods.vb" />
3033
<Compile Include="Microsoft\VisualBasic\Helpers\NativeTypes.vb" />
3134
<Compile Include="Microsoft\VisualBasic\Helpers\SafeNativeMethods.vb" />
3235
<Compile Include="Microsoft\VisualBasic\Helpers\UnsafeNativeMethods.vb" />
3336
</ItemGroup>
37+
3438
<ItemGroup>
3539
<Compile Include="Microsoft\VisualBasic\Collection.vb" />
3640
<Compile Include="Microsoft\VisualBasic\ComClassAttribute.vb" />
@@ -100,25 +104,27 @@
100104
<Compile Include="Microsoft\VisualBasic\VBFixedStringAttribute.vb" />
101105
<Compile Include="Microsoft\VisualBasic\VBMath.vb" />
102106
</ItemGroup>
107+
103108
<ItemGroup>
104-
<Reference Include="Microsoft.Win32.Primitives" />
105-
<Reference Include="Microsoft.Win32.Registry" />
106-
<Reference Include="System.Collections" />
107-
<Reference Include="System.Collections.NonGeneric" />
108-
<Reference Include="System.Collections.Specialized" />
109-
<Reference Include="System.ComponentModel.Primitives" />
110-
<Reference Include="System.Diagnostics.Process" />
111-
<Reference Include="System.IO.FileSystem.DriveInfo" />
112-
<Reference Include="System.Linq" />
113-
<Reference Include="System.Linq.Expressions" />
114-
<Reference Include="System.ObjectModel" />
115-
<Reference Include="System.Reflection.Emit.ILGeneration" />
116-
<Reference Include="System.Reflection.Emit.Lightweight" />
117-
<Reference Include="System.Reflection.Primitives" />
118-
<Reference Include="System.Runtime" />
119-
<Reference Include="System.Runtime.InteropServices" />
120-
<Reference Include="System.Text.RegularExpressions" />
121-
<Reference Include="System.Threading" />
122-
<Reference Include="System.Threading.Thread" />
109+
<ProjectReference Include="$(LibrariesProjectRoot)Microsoft.Win32.Primitives\src\Microsoft.Win32.Primitives.csproj" />
110+
<ProjectReference Include="$(LibrariesProjectRoot)Microsoft.Win32.Registry\src\Microsoft.Win32.Registry.csproj" />
111+
<ProjectReference Include="$(LibrariesProjectRoot)System.Collections.NonGeneric\src\System.Collections.NonGeneric.csproj" />
112+
<ProjectReference Include="$(LibrariesProjectRoot)System.Collections.Specialized\src\System.Collections.Specialized.csproj" />
113+
<ProjectReference Include="$(LibrariesProjectRoot)System.Collections\src\System.Collections.csproj" />
114+
<ProjectReference Include="$(LibrariesProjectRoot)System.ComponentModel.Primitives\src\System.ComponentModel.Primitives.csproj" />
115+
<ProjectReference Include="$(LibrariesProjectRoot)System.Diagnostics.Process\src\System.Diagnostics.Process.csproj" />
116+
<ProjectReference Include="$(LibrariesProjectRoot)System.IO.FileSystem.DriveInfo\src\System.IO.FileSystem.DriveInfo.csproj" />
117+
<ProjectReference Include="$(LibrariesProjectRoot)System.Linq.Expressions\src\System.Linq.Expressions.csproj" />
118+
<ProjectReference Include="$(LibrariesProjectRoot)System.Linq\src\System.Linq.csproj" />
119+
<ProjectReference Include="$(LibrariesProjectRoot)System.ObjectModel\src\System.ObjectModel.csproj" />
120+
<ProjectReference Include="$(LibrariesProjectRoot)System.Reflection.Emit.ILGeneration\src\System.Reflection.Emit.ILGeneration.csproj" />
121+
<ProjectReference Include="$(LibrariesProjectRoot)System.Reflection.Emit.Lightweight\src\System.Reflection.Emit.Lightweight.csproj" />
122+
<ProjectReference Include="$(LibrariesProjectRoot)System.Reflection.Primitives\src\System.Reflection.Primitives.csproj" />
123+
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime.InteropServices\src\System.Runtime.InteropServices.csproj" />
124+
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime\src\System.Runtime.csproj" />
125+
<ProjectReference Include="$(LibrariesProjectRoot)System.Text.RegularExpressions\src\System.Text.RegularExpressions.csproj" />
126+
<ProjectReference Include="$(LibrariesProjectRoot)System.Threading.Thread\src\System.Threading.Thread.csproj" />
127+
<ProjectReference Include="$(LibrariesProjectRoot)System.Threading\src\System.Threading.csproj" />
123128
</ItemGroup>
129+
124130
</Project>

src/libraries/Microsoft.VisualBasic.Core/src/Microsoft/VisualBasic/Strings.vb

+3-3
Original file line numberDiff line numberDiff line change
@@ -732,19 +732,19 @@ EmptyFindString:
732732
While Start < ExpressionLength
733733
If Replacements = Count Then
734734
'We've made all the replacements the caller wanted so append the remaining string
735-
Builder.Append(Expression.Substring(Start))
735+
Builder.Append(Expression.AsSpan(Start))
736736
Exit While
737737
End If
738738

739739
FindLocation = Comparer.IndexOf(Expression, Find, Start, CompareFlags)
740740
If FindLocation < 0 Then
741741
'We didn't find the Find string append the rest of the string
742-
Builder.Append(Expression.Substring(Start))
742+
Builder.Append(Expression.AsSpan(Start))
743743
Exit While
744744
Else
745745
'Append to our string builder everything up to the found string, then
746746
'append the replacement
747-
Builder.Append(Expression.Substring(Start, FindLocation - Start))
747+
Builder.Append(Expression.AsSpan(Start, FindLocation - Start))
748748
Builder.Append(Replacement)
749749
Replacements += 1
750750

src/libraries/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj

+7-6
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<GeneratePlatformNotSupportedAssemblyMessage Condition="'$(TargetPlatformIdentifier)' != 'windows'">SR.PlatformNotSupported_Registry</GeneratePlatformNotSupportedAssemblyMessage>
1515
<NoWarn Condition="'$(TargetPlatformIdentifier)' != 'windows'">$(NoWarn);IDE0280</NoWarn> <!-- https://github.com/dotnet/runtime/issues/84104 -->
1616
</PropertyGroup>
17+
1718
<ItemGroup Condition="'$(TargetPlatformIdentifier)' != ''">
1819
<Compile Include="$(CommonPath)DisableRuntimeMarshalling.cs"
1920
Link="Common\DisableRuntimeMarshalling.cs" />
@@ -70,12 +71,12 @@
7071
</ItemGroup>
7172

7273
<ItemGroup>
73-
<Reference Include="System.Collections" />
74-
<Reference Include="System.Memory" />
75-
<Reference Include="System.Runtime" />
76-
<Reference Include="System.Runtime.InteropServices" />
77-
<Reference Include="System.Security.AccessControl" />
78-
<Reference Include="System.Security.Principal.Windows" />
74+
<ProjectReference Include="$(LibrariesProjectRoot)System.Collections\src\System.Collections.csproj" />
75+
<ProjectReference Include="$(LibrariesProjectRoot)System.Memory\src\System.Memory.csproj" />
76+
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime.InteropServices\src\System.Runtime.InteropServices.csproj" />
77+
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime\src\System.Runtime.csproj" />
78+
<ProjectReference Include="$(LibrariesProjectRoot)System.Security.AccessControl\src\System.Security.AccessControl.csproj" />
79+
<ProjectReference Include="$(LibrariesProjectRoot)System.Security.Principal.Windows\src\System.Security.Principal.Windows.csproj" />
7980
</ItemGroup>
8081

8182
</Project>

src/libraries/System.Collections.Immutable/src/System.Collections.Immutable.csproj

+6-6
Original file line numberDiff line numberDiff line change
@@ -168,12 +168,12 @@ The System.Collections.Immutable library is built-in as part of the shared frame
168168
</ItemGroup>
169169

170170
<ItemGroup Condition="'$(TargetFramework)' == '$(NetCoreAppCurrent)'">
171-
<Reference Include="System.Collections" />
172-
<Reference Include="System.Linq" />
173-
<Reference Include="System.Memory" />
174-
<Reference Include="System.Runtime" />
175-
<Reference Include="System.Runtime.InteropServices" />
176-
<Reference Include="System.Threading" />
171+
<ProjectReference Include="$(LibrariesProjectRoot)System.Collections\src\System.Collections.csproj" PrivateAssets="all" />
172+
<ProjectReference Include="$(LibrariesProjectRoot)System.Linq\src\System.Linq.csproj" PrivateAssets="all" />
173+
<ProjectReference Include="$(LibrariesProjectRoot)System.Memory\src\System.Memory.csproj" PrivateAssets="all" />
174+
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime.InteropServices\src\System.Runtime.InteropServices.csproj" PrivateAssets="all" />
175+
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime\src\System.Runtime.csproj" PrivateAssets="all" />
176+
<ProjectReference Include="$(LibrariesProjectRoot)System.Threading\src\System.Threading.csproj" PrivateAssets="all" />
177177
</ItemGroup>
178178

179179
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' != '.NETCoreApp'">

src/libraries/System.Collections.NonGeneric/src/System.Collections.NonGeneric.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
</ItemGroup>
2222

2323
<ItemGroup>
24-
<Reference Include="System.Memory" />
25-
<Reference Include="System.Runtime" />
26-
<Reference Include="System.Threading" />
24+
<ProjectReference Include="$(LibrariesProjectRoot)System.Memory\src\System.Memory.csproj" />
25+
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime\src\System.Runtime.csproj" />
26+
<ProjectReference Include="$(LibrariesProjectRoot)System.Threading\src\System.Threading.csproj" />
2727
</ItemGroup>
2828

2929
</Project>

src/libraries/System.Collections.Specialized/src/System.Collections.Specialized.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
</ItemGroup>
2323

2424
<ItemGroup>
25-
<Reference Include="System.ComponentModel.Primitives" />
26-
<Reference Include="System.Memory" />
27-
<Reference Include="System.Runtime" />
25+
<ProjectReference Include="$(LibrariesProjectRoot)System.ComponentModel.Primitives\src\System.ComponentModel.Primitives.csproj" />
26+
<ProjectReference Include="$(LibrariesProjectRoot)System.Memory\src\System.Memory.csproj" />
27+
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime\src\System.Runtime.csproj" />
2828
</ItemGroup>
2929

3030
</Project>

src/libraries/System.ComponentModel.Annotations/src/System.ComponentModel.Annotations.csproj

+10-10
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,16 @@
6767
</ItemGroup>
6868

6969
<ItemGroup>
70-
<Reference Include="System.Collections" />
71-
<Reference Include="System.Collections.Concurrent" />
72-
<Reference Include="System.ComponentModel" />
73-
<Reference Include="System.ComponentModel.Primitives" />
74-
<Reference Include="System.ComponentModel.TypeConverter" />
75-
<Reference Include="System.Linq" />
76-
<Reference Include="System.Memory" />
77-
<Reference Include="System.Runtime" />
78-
<Reference Include="System.Text.RegularExpressions" />
79-
<Reference Include="System.Threading" />
70+
<ProjectReference Include="$(LibrariesProjectRoot)System.Collections\src\System.Collections.csproj" />
71+
<ProjectReference Include="$(LibrariesProjectRoot)System.Collections.Concurrent\src\System.Collections.Concurrent.csproj" />
72+
<ProjectReference Include="$(LibrariesProjectRoot)System.ComponentModel\src\System.ComponentModel.csproj" />
73+
<ProjectReference Include="$(LibrariesProjectRoot)System.ComponentModel.Primitives\src\System.ComponentModel.Primitives.csproj" />
74+
<ProjectReference Include="$(LibrariesProjectRoot)System.ComponentModel.TypeConverter\src\System.ComponentModel.TypeConverter.csproj" />
75+
<ProjectReference Include="$(LibrariesProjectRoot)System.Linq\src\System.Linq.csproj" />
76+
<ProjectReference Include="$(LibrariesProjectRoot)System.Memory\src\System.Memory.csproj" />
77+
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime\src\System.Runtime.csproj" />
78+
<ProjectReference Include="$(LibrariesProjectRoot)System.Text.RegularExpressions\src\System.Text.RegularExpressions.csproj" />
79+
<ProjectReference Include="$(LibrariesProjectRoot)System.Threading\src\System.Threading.csproj" />
8080
</ItemGroup>
8181

8282
</Project>

0 commit comments

Comments
 (0)