-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update generators.targets #68860
Update generators.targets #68860
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,68 +1,57 @@ | ||||||||||||||||||||||||||||||||||||||||||
<Project> | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<PropertyGroup> | ||||||||||||||||||||||||||||||||||||||||||
<EnableLibraryImportGenerator Condition="'$(EnableLibraryImportGenerator)' == '' | ||||||||||||||||||||||||||||||||||||||||||
and '$(MSBuildProjectName)' == 'System.Private.CoreLib'">true</EnableLibraryImportGenerator> | ||||||||||||||||||||||||||||||||||||||||||
<IncludeLibraryImportGeneratorSources Condition="'$(IncludeLibraryImportGeneratorSources)' == ''">true</IncludeLibraryImportGeneratorSources> | ||||||||||||||||||||||||||||||||||||||||||
<EnableLibraryImportGenerator Condition="'$(EnableLibraryImportGenerator)' == '' and | ||||||||||||||||||||||||||||||||||||||||||
'$(MSBuildProjectName)' == 'System.Private.CoreLib'">true</EnableLibraryImportGenerator> | ||||||||||||||||||||||||||||||||||||||||||
</PropertyGroup> | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<ItemGroup> | ||||||||||||||||||||||||||||||||||||||||||
<EnabledGenerators Include="LibraryImportGenerator" Condition="'$(EnableLibraryImportGenerator)' == 'true'" /> | ||||||||||||||||||||||||||||||||||||||||||
<!-- If the current project is not System.Private.CoreLib, we enable the LibraryImportGenerator source generator | ||||||||||||||||||||||||||||||||||||||||||
when the project is a C# source project that either: | ||||||||||||||||||||||||||||||||||||||||||
when the project is a C# source project that: | ||||||||||||||||||||||||||||||||||||||||||
- doesn't target the latest TFM or | ||||||||||||||||||||||||||||||||||||||||||
- references everything from the targeting pack (OOB) or | ||||||||||||||||||||||||||||||||||||||||||
- references System.Private.CoreLib, or | ||||||||||||||||||||||||||||||||||||||||||
- references System.Runtime.InteropServices --> | ||||||||||||||||||||||||||||||||||||||||||
<EnabledGenerators Include="LibraryImportGenerator" | ||||||||||||||||||||||||||||||||||||||||||
Condition="'$(EnableLibraryImportGenerator)' == '' | ||||||||||||||||||||||||||||||||||||||||||
and '$(IsSourceProject)' == 'true' | ||||||||||||||||||||||||||||||||||||||||||
and '$(MSBuildProjectExtension)' == '.csproj' | ||||||||||||||||||||||||||||||||||||||||||
and ( | ||||||||||||||||||||||||||||||||||||||||||
('@(Reference)' != '' | ||||||||||||||||||||||||||||||||||||||||||
and @(Reference->AnyHaveMetadataValue('Identity', 'System.Runtime.InteropServices'))) | ||||||||||||||||||||||||||||||||||||||||||
or ('@(ProjectReference)' != '' | ||||||||||||||||||||||||||||||||||||||||||
and @(ProjectReference->AnyHaveMetadataValue('Identity', '$(CoreLibProject)'))) | ||||||||||||||||||||||||||||||||||||||||||
or ('$(NetCoreAppCurrentTargetFrameworkMoniker)' == '$(TargetFrameworkMoniker)' | ||||||||||||||||||||||||||||||||||||||||||
and '$(DisableImplicitFrameworkReferences)' != 'true'))" /> | ||||||||||||||||||||||||||||||||||||||||||
<EnabledGenerators Include="LibraryImportGenerator" | ||||||||||||||||||||||||||||||||||||||||||
Condition="'$(EnableLibraryImportGenerator)' == '' | ||||||||||||||||||||||||||||||||||||||||||
and '$(IsSourceProject)' == 'true' | ||||||||||||||||||||||||||||||||||||||||||
and '$(MSBuildProjectExtension)' == '.csproj' | ||||||||||||||||||||||||||||||||||||||||||
and ('$(TargetFrameworkIdentifier)' == '.NETStandard' or '$(TargetFrameworkIdentifier)' == '.NETFramework' or ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionLessThan($(TargetFrameworkVersion), '$(NetCoreAppCurrentVersion)'))))" /> | ||||||||||||||||||||||||||||||||||||||||||
Condition="'$(EnableLibraryImportGenerator)' == '' and | ||||||||||||||||||||||||||||||||||||||||||
'$(IsSourceProject)' == 'true' and | ||||||||||||||||||||||||||||||||||||||||||
'$(MSBuildProjectExtension)' == '.csproj' and | ||||||||||||||||||||||||||||||||||||||||||
( | ||||||||||||||||||||||||||||||||||||||||||
'$(TargetFrameworkMoniker)' != '$(NetCoreAppCurrentTargetFrameworkMoniker)' or | ||||||||||||||||||||||||||||||||||||||||||
'$(DisableImplicitFrameworkReferences)' != 'true' or | ||||||||||||||||||||||||||||||||||||||||||
( | ||||||||||||||||||||||||||||||||||||||||||
'@(Reference)' != '' and | ||||||||||||||||||||||||||||||||||||||||||
@(Reference->AnyHaveMetadataValue('Identity', 'System.Runtime.InteropServices')) | ||||||||||||||||||||||||||||||||||||||||||
) or | ||||||||||||||||||||||||||||||||||||||||||
( | ||||||||||||||||||||||||||||||||||||||||||
'@(ProjectReference)' != '' and | ||||||||||||||||||||||||||||||||||||||||||
@(ProjectReference->AnyHaveMetadataValue('Identity', '$(CoreLibProject)')) | ||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||
)" /> | ||||||||||||||||||||||||||||||||||||||||||
</ItemGroup> | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<!-- Use this complex ItemGroup-based filtering to add the ProjectReference to make sure dotnet/runtime stays compatible with NuGet Static Graph Restore. --> | ||||||||||||||||||||||||||||||||||||||||||
<ItemGroup Condition="'@(EnabledGenerators)' != '' | ||||||||||||||||||||||||||||||||||||||||||
and @(EnabledGenerators->AnyHaveMetadataValue('Identity', 'LibraryImportGenerator'))"> | ||||||||||||||||||||||||||||||||||||||||||
<ProjectReference | ||||||||||||||||||||||||||||||||||||||||||
Include="$(LibrariesProjectRoot)System.Runtime.InteropServices\gen\LibraryImportGenerator\LibraryImportGenerator.csproj" | ||||||||||||||||||||||||||||||||||||||||||
OutputItemType="Analyzer" | ||||||||||||||||||||||||||||||||||||||||||
ReferenceOutputAssembly="false" /> | ||||||||||||||||||||||||||||||||||||||||||
<ProjectReference | ||||||||||||||||||||||||||||||||||||||||||
Include="$(LibrariesProjectRoot)System.Runtime.InteropServices\gen\Microsoft.Interop.SourceGeneration\Microsoft.Interop.SourceGeneration.csproj" | ||||||||||||||||||||||||||||||||||||||||||
OutputItemType="Analyzer" | ||||||||||||||||||||||||||||||||||||||||||
ReferenceOutputAssembly="false" /> | ||||||||||||||||||||||||||||||||||||||||||
<ItemGroup Condition="'@(EnabledGenerators)' != '' and | ||||||||||||||||||||||||||||||||||||||||||
@(EnabledGenerators->AnyHaveMetadataValue('Identity', 'LibraryImportGenerator')) and | ||||||||||||||||||||||||||||||||||||||||||
!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net7.0'))"> | ||||||||||||||||||||||||||||||||||||||||||
<Compile Include="$(CoreLibSharedDir)System\Runtime\InteropServices\LibraryImportAttribute.cs" /> | ||||||||||||||||||||||||||||||||||||||||||
<Compile Include="$(CoreLibSharedDir)System\Runtime\InteropServices\StringMarshalling.cs" /> | ||||||||||||||||||||||||||||||||||||||||||
</ItemGroup> | ||||||||||||||||||||||||||||||||||||||||||
<ItemGroup Condition="'@(EnabledGenerators)' != '' | ||||||||||||||||||||||||||||||||||||||||||
and @(EnabledGenerators->AnyHaveMetadataValue('Identity', 'LibraryImportGenerator')) | ||||||||||||||||||||||||||||||||||||||||||
and '$(IncludeLibraryImportGeneratorSources)' == 'true'"> | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<!-- Only add the following files if we are not on the latest TFM. --> | ||||||||||||||||||||||||||||||||||||||||||
<Compile Condition="'$(NetCoreAppCurrentTargetFrameworkMoniker)' != '$(TargetFrameworkMoniker)'" | ||||||||||||||||||||||||||||||||||||||||||
Include="$(CoreLibSharedDir)System\Runtime\InteropServices\LibraryImportAttribute.cs" /> | ||||||||||||||||||||||||||||||||||||||||||
<Compile Condition="'$(NetCoreAppCurrentTargetFrameworkMoniker)' != '$(TargetFrameworkMoniker)'" | ||||||||||||||||||||||||||||||||||||||||||
Include="$(CoreLibSharedDir)System\Runtime\InteropServices\StringMarshalling.cs" /> | ||||||||||||||||||||||||||||||||||||||||||
</ItemGroup> | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<ItemGroup> | ||||||||||||||||||||||||||||||||||||||||||
<EnabledGenerators Include="RegexGenerator" Condition="'$(EnableRegexGenerator)' == 'true'" /> | ||||||||||||||||||||||||||||||||||||||||||
<!-- Use this complex item list based filtering to add the ProjectReference to make sure dotnet/runtime stays compatible with NuGet Static Graph Restore. | ||||||||||||||||||||||||||||||||||||||||||
That is required as the EnabledGenerators condition checks on the Reference and ProjectReference items and hence can't be a property condition. --> | ||||||||||||||||||||||||||||||||||||||||||
<ItemGroup Condition="'@(EnabledGenerators)' != '' and | ||||||||||||||||||||||||||||||||||||||||||
@(EnabledGenerators->AnyHaveMetadataValue('Identity', 'LibraryImportGenerator'))"> | ||||||||||||||||||||||||||||||||||||||||||
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime.InteropServices\gen\LibraryImportGenerator\LibraryImportGenerator.csproj; | ||||||||||||||||||||||||||||||||||||||||||
$(LibrariesProjectRoot)System.Runtime.InteropServices\gen\Microsoft.Interop.SourceGeneration\Microsoft.Interop.SourceGeneration.csproj" | ||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+44
to
+45
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Again, I'd (personally) prefer seeing this as two entries, since two things are being added. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same as above. When you define items with the same metadata (i.e. Condition or in this case the |
||||||||||||||||||||||||||||||||||||||||||
OutputItemType="Analyzer" | ||||||||||||||||||||||||||||||||||||||||||
ReferenceOutputAssembly="false" /> | ||||||||||||||||||||||||||||||||||||||||||
</ItemGroup> | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<!-- Use this complex ItemGroup-based filtering to add the ProjectReference to make sure dotnet/runtime stays compatible with NuGet Static Graph Restore. --> | ||||||||||||||||||||||||||||||||||||||||||
<ItemGroup Condition="'@(EnabledGenerators)' != '' | ||||||||||||||||||||||||||||||||||||||||||
and @(EnabledGenerators->AnyHaveMetadataValue('Identity', 'RegexGenerator'))"> | ||||||||||||||||||||||||||||||||||||||||||
<ProjectReference | ||||||||||||||||||||||||||||||||||||||||||
Include="$(LibrariesProjectRoot)System.Text.RegularExpressions/gen/System.Text.RegularExpressions.Generator.csproj" | ||||||||||||||||||||||||||||||||||||||||||
OutputItemType="Analyzer" | ||||||||||||||||||||||||||||||||||||||||||
ReferenceOutputAssembly="false" /> | ||||||||||||||||||||||||||||||||||||||||||
<!-- Use a normal property condition as this source generator is opt-in and doesn't read from an item list. --> | ||||||||||||||||||||||||||||||||||||||||||
<ItemGroup Condition="'$(EnableRegexGenerator)' == 'true'"> | ||||||||||||||||||||||||||||||||||||||||||
ViktorHofer marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||
<ProjectReference Include="$(LibrariesProjectRoot)System.Text.RegularExpressions\gen\System.Text.RegularExpressions.Generator.csproj" | ||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Don't we always try to use Unix-style folder separators everywhere? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it's the opposite. Under src/libraries we prefer Windows path separators.
|
||||||||||||||||||||||||||||||||||||||||||
OutputItemType="Analyzer" | ||||||||||||||||||||||||||||||||||||||||||
ReferenceOutputAssembly="false" /> | ||||||||||||||||||||||||||||||||||||||||||
</ItemGroup> | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<Target Name="ConfigureGenerators" | ||||||||||||||||||||||||||||||||||||||||||
|
@@ -79,5 +68,5 @@ | |||||||||||||||||||||||||||||||||||||||||
</PropertyGroup> | ||||||||||||||||||||||||||||||||||||||||||
</Target> | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
<Import Project="$(LibrariesProjectRoot)System.Runtime.InteropServices/gen/LibraryImportGenerator/Microsoft.Interop.LibraryImportGenerator.props" /> | ||||||||||||||||||||||||||||||||||||||||||
<Import Project="$(LibrariesProjectRoot)System.Runtime.InteropServices\gen\LibraryImportGenerator\Microsoft.Interop.LibraryImportGenerator.props" /> | ||||||||||||||||||||||||||||||||||||||||||
</Project> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we can probably simplify this more now that we aren't injecting as much source as before (only enums and an attribute type on downlevel). This can be left for a future PR though.