|
150 | 150 | </ItemGroup>
|
151 | 151 | </Target>
|
152 | 152 |
|
| 153 | + <PropertyGroup> |
| 154 | + <MultiTargetRoslynComponentTargetsFileIntermediatePath>$(IntermediateOutputPath)MultiTargetRoslynComponent.targets</MultiTargetRoslynComponentTargetsFileIntermediatePath> |
| 155 | + <IncludeMultiTargetRoslynComponentTargets Condition="'$(IncludeMultiTargetRoslynComponentTargets)' == ''">true</IncludeMultiTargetRoslynComponentTargets> |
| 156 | + </PropertyGroup> |
| 157 | + |
| 158 | + <!-- In packages that contain Analyzers, include a .targets file that will select the correct |
| 159 | + analyzer given the version of Roslyn being used to compile the project. --> |
| 160 | + <Target Name="IncludeMultiTargetRoslynComponentTargetsInPackage" |
| 161 | + AfterTargets="IncludeAnalyzersInPackage" |
| 162 | + Condition="'@(AnalyzerReference)' != '' and '$(IncludeMultiTargetRoslynComponentTargets)' == 'true'" |
| 163 | + DependsOnTargets="GenerateMultiTargetRoslynComponentTargetsFile"> |
| 164 | + <ItemGroup> |
| 165 | + <Content Include="$(MultiTargetRoslynComponentTargetsFileIntermediatePath)" |
| 166 | + PackagePath="build\$(PackageId).targets" |
| 167 | + Pack="True" /> |
| 168 | + </ItemGroup> |
| 169 | + </Target> |
| 170 | + |
| 171 | + <Target Name="GenerateMultiTargetRoslynComponentTargetsFile" |
| 172 | + Inputs="$(MSBuildProjectFullPath)" |
| 173 | + Outputs="$(MultiTargetRoslynComponentTargetsFileIntermediatePath)"> |
| 174 | + <PropertyGroup> |
| 175 | + <_MultiTargetRoslynComponentTargetsTemplate>$(MSBuildThisFileDirectory)MultiTargetRoslynComponent.targets.template</_MultiTargetRoslynComponentTargetsTemplate> |
| 176 | + <_MultiTargetRoslynComponentTargetPrefix>$(PackageId.Replace('.', '_'))</_MultiTargetRoslynComponentTargetPrefix> |
| 177 | + <_MultiTargetRoslynComponentDisableSourceGeneratorPropertyName>Disable$(PackageId.Replace('.', ''))SourceGenerator</_MultiTargetRoslynComponentDisableSourceGeneratorPropertyName> |
| 178 | + <_MultiTargetRoslynComponentDisableSourceGeneratorPropertyName>$(_MultiTargetRoslynComponentDisableSourceGeneratorPropertyName.Replace('Abstractions', ''))</_MultiTargetRoslynComponentDisableSourceGeneratorPropertyName> |
| 179 | + </PropertyGroup> |
| 180 | + |
| 181 | + <WriteLinesToFile File="$(MultiTargetRoslynComponentTargetsFileIntermediatePath)" |
| 182 | + Lines="$([System.IO.File]::ReadAllText('$(_MultiTargetRoslynComponentTargetsTemplate)') |
| 183 | + .Replace('{TargetPrefix}', '$(_MultiTargetRoslynComponentTargetPrefix)') |
| 184 | + .Replace('{NuGetPackageId}', '$(PackageId)') |
| 185 | + .Replace('{DisableSourceGeneratorPropertyName}', '$(_MultiTargetRoslynComponentDisableSourceGeneratorPropertyName)'))" |
| 186 | + Overwrite="true" /> |
| 187 | + </Target> |
| 188 | + |
153 | 189 | <!-- Include a netstandard compat error if the project targets both .NETStandard and
|
154 | 190 | .NETCoreApp. This prohibits users to consume packages on an older .NETCoreApp version
|
155 | 191 | than the minimum supported one. -->
|
|
0 commit comments