|
196 | 196 | </ItemGroup>
|
197 | 197 | </Target>
|
198 | 198 |
|
| 199 | + <Target Name="WarnOnProjectReferenceToFrameworkAssemblies" |
| 200 | + BeforeTargets="IncludeTransitiveProjectReferences" |
| 201 | + Condition="'$(TargetFramework)' == '$(NetCoreAppCurrent)' and |
| 202 | + '@(ProjectReference)' != ''"> |
| 203 | + <!-- Find project references that overlap with NetCoreApp, are direct (NuGetPackageId is not set), actually referenced (ReferenceOutputAssembly), and not hidden with PrivateAssets |
| 204 | + ProjectReferences can opt out of this checking by setting AllowFrameworkPackageReference, though they should not. --> |
| 205 | + <Warning Text="Project reference '%(ProjectReference.Identity)' is a reference to a framework assembly and is not required in $(NetCoreAppCurrent) (NetCoreAppCurrent)." |
| 206 | + Code="NETPKG0001" |
| 207 | + Condition="$(NetCoreAppLibrary.Contains('%(ProjectReference.Filename);')) and |
| 208 | + '%(ProjectReference.ReferenceOutputAssembly)' != 'false' and |
| 209 | + '%(ProjectReference.NuGetPackageId)' == '' and |
| 210 | + '%(ProjectReference.PrivateAssets)' != 'all' and |
| 211 | + '%(ProjectReference.AllowFrameworkPackageReference)' != 'true'" /> |
| 212 | + </Target> |
| 213 | + |
199 | 214 | <Target Name="GenerateMultiTargetRoslynComponentTargetsFile"
|
200 | 215 | Inputs="$(MSBuildProjectFullPath);$(_MultiTargetRoslynComponentTargetsTemplate)"
|
201 | 216 | Outputs="$(MultiTargetRoslynComponentTargetsFileIntermediatePath)">
|
|
303 | 318 | </ItemGroup>
|
304 | 319 | </Target>
|
305 | 320 |
|
306 |
| - <Target Name="ValidateServicingVersionIsProperlySet" |
| 321 | + <ItemDefinitionGroup> |
| 322 | + <TargetPathWithTargetPlatformMoniker> |
| 323 | + <!-- When ServiceTransitiveDependencies is set, flow the packaging state --> |
| 324 | + <GeneratePackageOnBuild Condition="'$(ServiceTransitiveDependencies)' == 'true'">$(GeneratePackageOnBuild)</GeneratePackageOnBuild> |
| 325 | + </TargetPathWithTargetPlatformMoniker> |
| 326 | + </ItemDefinitionGroup> |
| 327 | + |
| 328 | + <!-- Flows the list of ProjectReferences that are enabled for packaging when building a multi-targeting project --> |
| 329 | + <Target Name="_AddTransitiveServicedPackagesToOutput" |
| 330 | + AfterTargets="GetTargetPathWithTargetPlatformMoniker" |
| 331 | + Condition="'$(IsInnerBuild)' == 'true'"> |
| 332 | + <PropertyGroup> |
| 333 | + <_TransitiveServicedPackages |
| 334 | + Condition="'%(ReferencePath.ReferenceSourceTarget)' == 'ProjectReference' and |
| 335 | + '%(ReferencePath.GeneratePackageOnBuild)' == 'true'" |
| 336 | + >@(ReferencePath->'%(OriginalProjectReferenceItemSpec)')</_TransitiveServicedPackages> |
| 337 | + </PropertyGroup> |
| 338 | + <ItemGroup> |
| 339 | + <TargetPathWithTargetPlatformMoniker TransitiveServicedPackages="$(_TransitiveServicedPackages)" /> |
| 340 | + </ItemGroup> |
| 341 | + </Target> |
| 342 | + |
| 343 | + <!-- Validate that ServicingVersion is set and packing is enabled. Runs once in the outer build (or only build if no outer build exists). --> |
| 344 | + <Target Name="ValidateServicingProperties" |
307 | 345 | Condition="'$(PreReleaseVersionLabel)' == 'servicing' and
|
308 | 346 | '$(PackageUseIncrementalServicingVersion)' == 'true' and
|
309 |
| - '$(DotNetBuildFromSource)' != 'true'" |
310 |
| - AfterTargets="GenerateNuspec"> |
311 |
| - <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." /> |
| 347 | + '$(DotNetBuildFromSource)' != 'true' and |
| 348 | + '$(IsInnerBuild)' != 'true'" |
| 349 | + AfterTargets="Build"> |
| 350 | + <ItemGroup> |
| 351 | + <TransitiveServicedPackages Include="%(InnerOutput.TransitiveServicedPackages)" Condition="'$(IsCrossTargetingBuild)' == 'true'" /> |
| 352 | + <TransitiveServicedPackages Include="'%(ReferencePath.OriginalProjectReferenceItemSpec)" |
| 353 | + Condition="'%(ReferencePath.ReferenceSourceTarget)' == 'ProjectReference' and |
| 354 | + '%(ReferencePath.GeneratePackageOnBuild)' == 'true'" /> |
| 355 | + </ItemGroup> |
| 356 | + <Error Condition="'$(ServicingVersion)' == '0' and '$(GeneratePackageOnBuild)' == 'true'" |
| 357 | + Text="ServicingVersion is set to 0 and it should be an increment of the patch version from the last released package." /> |
| 358 | + |
| 359 | + <Error Condition="'$(GeneratePackageOnBuild)' != 'true' and |
| 360 | + '@(TransitiveServicedPackages)' != ''" |
| 361 | + Text="This project did not set GeneratePackageOnBuild, but dependencies '@(TransitiveServicedPackages)' did. Please ship this project by setting GeneratePackageOnBuild to true and incrementing ServicingVersion." /> |
312 | 362 | </Target>
|
313 | 363 |
|
314 | 364 | </Project>
|
0 commit comments