|
183 | 183 | </ItemGroup>
|
184 | 184 | </Target>
|
185 | 185 |
|
| 186 | + <Target Name="WarnOnProjectReferenceToFrameworkAssemblies" |
| 187 | + BeforeTargets="IncludeTransitiveProjectReferences" |
| 188 | + Condition="'$(TargetFramework)' == '$(NetCoreAppCurrent)' and |
| 189 | + '@(ProjectReference)' != ''"> |
| 190 | + <!-- Find project references that overlap with NetCoreApp, are direct (NuGetPackageId is not set), actually referenced (ReferenceOutputAssembly), and not hidden with PrivateAssets |
| 191 | + ProjectReferences can opt out of this checking by setting AllowFrameworkPackageReference, though they should not. --> |
| 192 | + <Warning Text="Project reference '%(ProjectReference.Identity)' is a reference to a framework assembly and is not required in $(NetCoreAppCurrent) (NetCoreAppCurrent)." |
| 193 | + Code="NETPKG0001" |
| 194 | + Condition="$(NetCoreAppLibrary.Contains('%(ProjectReference.Filename);')) and |
| 195 | + '%(ProjectReference.ReferenceOutputAssembly)' != 'false' and |
| 196 | + '%(ProjectReference.NuGetPackageId)' == '' and |
| 197 | + '%(ProjectReference.PrivateAssets)' != 'all' and |
| 198 | + '%(ProjectReference.AllowFrameworkPackageReference)' != 'true'" /> |
| 199 | + </Target> |
| 200 | + |
186 | 201 | <Target Name="GenerateMultiTargetRoslynComponentTargetsFile"
|
187 | 202 | Inputs="$(MSBuildProjectFullPath);_MultiTargetRoslynComponentTargetsTemplate"
|
188 | 203 | Outputs="$(MultiTargetRoslynComponentTargetsFileIntermediatePath)">
|
|
285 | 300 | <Error Condition="'$(AssemblyVersion)' != '$(LastReleasedStableAssemblyVersion)'" Text="AssemblyVersion should match last released assembly version $(LastReleasedStableAssemblyVersion)" />
|
286 | 301 | </Target>
|
287 | 302 |
|
288 |
| - <Target Name="ValidateServicingVersionIsPropertlySet" |
289 |
| - Condition="'$(PreReleaseVersionLabel)' == 'servicing' and '$(DotNetBuildFromSource)' != 'true'" |
290 |
| - AfterTargets="GenerateNuspec"> |
291 |
| - <Error Condition="'$(ServicingVersion)' == '0'" Text="ServicingVersion is set to 0 and it should be an increment of the patch version from the last released package." /> |
| 303 | + <ItemDefinitionGroup> |
| 304 | + <TargetPathWithTargetPlatformMoniker> |
| 305 | + <!-- When ServiceTransitiveDependencies is set, flow the packaging state --> |
| 306 | + <GeneratePackageOnBuild Condition="'$(ServiceTransitiveDependencies)' == 'true'">$(GeneratePackageOnBuild)</GeneratePackageOnBuild> |
| 307 | + </TargetPathWithTargetPlatformMoniker> |
| 308 | + </ItemDefinitionGroup> |
| 309 | + |
| 310 | + <!-- Flows the list of ProjectReferences that are enabled for packaging when building a multi-targeting project --> |
| 311 | + <Target Name="_AddTransitiveServicedPackagesToOutput" |
| 312 | + AfterTargets="GetTargetPathWithTargetPlatformMoniker" |
| 313 | + Condition="'$(IsInnerBuild)' == 'true'"> |
| 314 | + <PropertyGroup> |
| 315 | + <_TransitiveServicedPackages |
| 316 | + Condition="'%(ReferencePath.ReferenceSourceTarget)' == 'ProjectReference' and |
| 317 | + '%(ReferencePath.GeneratePackageOnBuild)' == 'true'" |
| 318 | + >@(ReferencePath->'%(OriginalProjectReferenceItemSpec)')</_TransitiveServicedPackages> |
| 319 | + </PropertyGroup> |
| 320 | + <ItemGroup> |
| 321 | + <TargetPathWithTargetPlatformMoniker TransitiveServicedPackages="$(_TransitiveServicedPackages)" /> |
| 322 | + </ItemGroup> |
| 323 | + </Target> |
| 324 | + |
| 325 | + <!-- Validate that ServicingVersion is set and packing is enabled. Runs once in the outer build (or only build if no outer build exists). --> |
| 326 | + <Target Name="ValidateServicingProperties" |
| 327 | + Condition="'$(PreReleaseVersionLabel)' == 'servicing' and |
| 328 | + '$(DotNetBuildFromSource)' != 'true' and |
| 329 | + '$(IsInnerBuild)' != 'true'" |
| 330 | + AfterTargets="Build"> |
| 331 | + <ItemGroup> |
| 332 | + <TransitiveServicedPackages Include="%(InnerOutput.TransitiveServicedPackages)" Condition="'$(IsCrossTargetingBuild)' == 'true'" /> |
| 333 | + <TransitiveServicedPackages Include="'%(ReferencePath.OriginalProjectReferenceItemSpec)" |
| 334 | + Condition="'%(ReferencePath.ReferenceSourceTarget)' == 'ProjectReference' and |
| 335 | + '%(ReferencePath.GeneratePackageOnBuild)' == 'true'" /> |
| 336 | + </ItemGroup> |
| 337 | + <Error Condition="'$(ServicingVersion)' == '0' and '$(GeneratePackageOnBuild)' == 'true'" |
| 338 | + Text="ServicingVersion is set to 0 and it should be an increment of the patch version from the last released package." /> |
| 339 | + |
| 340 | + <Error Condition="'$(GeneratePackageOnBuild)' != 'true' and |
| 341 | + '@(TransitiveServicedPackages)' != ''" |
| 342 | + Text="This project did not set GeneratePackageOnBuild, but dependencies '@(TransitiveServicedPackages)' did. Please ship this project by setting GeneratePackageOnBuild to true and incrementing ServicingVersion." /> |
292 | 343 | </Target>
|
293 | 344 |
|
294 | 345 | </Project>
|
0 commit comments