Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 2 additions & 8 deletions src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,7 @@
<PropertyGroup Label="CI" Condition="'$(CI)' == ''">
<CI>false</CI>
<!-- GH, CircleCI, GitLab and BitBucket already use CI -->
<CI Condition="'$(TF_BUILD)' == 'true' or
'$(TEAMCITY_VERSION)' != '' or
'$(APPVEYOR)' != '' or
'$(BuildRunner)' == 'MyGet' or
'$(JENKINS_URL)' != '' or
'$(TRAVIS)' == 'true' or
'$(BUDDY)' == 'true'">true</CI>
<CI Condition="'$(TF_BUILD)' == 'true' or '$(TEAMCITY_VERSION)' != '' or '$(APPVEYOR)' != '' or '$(BuildRunner)' == 'MyGet' or '$(JENKINS_URL)' != '' or '$(TRAVIS)' == 'true' or '$(BUDDY)' == 'true'">true</CI>
</PropertyGroup>

<PropertyGroup>
Expand Down Expand Up @@ -150,7 +144,7 @@
<Using Include="System.ArgumentNullException" Static="true" />
</ItemGroup>

<Import Project="Directory.props" Condition="Exists('Directory.props')"/>
<Import Project="Directory.props" Condition="Exists('Directory.props')" />
<Import Project="Directory.props.user" Condition="Exists('Directory.props.user')" />

<!-- If the imported props changed ManagePackageVersionsCentrally, we need to replicate
Expand Down
41 changes: 11 additions & 30 deletions src/Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -37,26 +37,14 @@
<!-- Only difference is we don't copy either to output directory -->

<!-- Project-level icon/readme will already be part of None items -->
<None Update="@(None -> WithMetadataValue('Filename', 'icon'))"
Pack="true" PackagePath="%(Filename)%(Extension)"
CopyToOutputDirectory="Never"
Condition="'$(PackageIcon)' != ''" />

<None Update="@(None -> WithMetadataValue('Filename', 'readme'))"
Pack="true" PackagePath="%(Filename)%(Extension)"
CopyToOutputDirectory="Never"
Condition="'$(PackReadme)' != 'false' and '$(PackageReadmeFile)' != ''" />
<None Update="@(None -&gt; WithMetadataValue('Filename', 'icon'))" Pack="true" PackagePath="%(Filename)%(Extension)" CopyToOutputDirectory="Never" Condition="'$(PackageIcon)' != ''" />

<None Update="@(None -&gt; WithMetadataValue('Filename', 'readme'))" Pack="true" PackagePath="%(Filename)%(Extension)" CopyToOutputDirectory="Never" Condition="'$(PackReadme)' != 'false' and '$(PackageReadmeFile)' != ''" />

<!-- src-level will need explicit inclusion -->
<None Include="$(MSBuildThisFileDirectory)icon.png" Link="icon.png" Visible="false"
Pack="true" PackagePath="%(Filename)%(Extension)"
CopyToOutputDirectory="Never"
Condition="Exists('$(MSBuildThisFileDirectory)icon.png') and !Exists('$(MSBuildProjectDirectory)\icon.png')" />

<None Include="$(MSBuildThisFileDirectory)readme.md" Link="readme.md"
Pack="true" PackagePath="%(Filename)%(Extension)"
CopyToOutputDirectory="Never"
Condition="'$(PackReadme)' != 'false' and Exists('$(MSBuildThisFileDirectory)readme.md') and !Exists('$(MSBuildProjectDirectory)\readme.md')" />
<None Include="$(MSBuildThisFileDirectory)icon.png" Link="icon.png" Visible="false" Pack="true" PackagePath="%(Filename)%(Extension)" CopyToOutputDirectory="Never" Condition="Exists('$(MSBuildThisFileDirectory)icon.png') and !Exists('$(MSBuildProjectDirectory)\icon.png')" />

<None Include="$(MSBuildThisFileDirectory)readme.md" Link="readme.md" Pack="true" PackagePath="%(Filename)%(Extension)" CopyToOutputDirectory="Never" Condition="'$(PackReadme)' != 'false' and Exists('$(MSBuildThisFileDirectory)readme.md') and !Exists('$(MSBuildProjectDirectory)\readme.md')" />
</ItemGroup>

<!-- Microsoft.NET.Sdk\targets\Microsoft.NET.DefaultAssemblyInfo.targets does this and is imported
Expand Down Expand Up @@ -115,7 +103,7 @@
<!-- Consider the project out of date if any of these files changes -->
<UpToDateCheck Include="@(None);@(Content);@(EmbeddedResource)" />
<!-- Opt-in to typed resource generation by setting custom tool to MSBuild:Compile -->
<EmbeddedResource Update="@(EmbeddedResource -> WithMetadataValue('Generator', 'MSBuild:Compile'))" Type="Resx">
<EmbeddedResource Update="@(EmbeddedResource -&gt; WithMetadataValue('Generator', 'MSBuild:Compile'))" Type="Resx">
<!-- Default to Just Works resources generation. See https://www.cazzulino.com/resources.html -->
<StronglyTypedFileName>$(IntermediateOutputPath)\$([MSBuild]::ValueOrDefault('%(RelativeDir)', '').Replace('\', '.').Replace('/', '.'))%(Filename).g$(DefaultLanguageSourceExtension)</StronglyTypedFileName>
<StronglyTypedLanguage>$(Language)</StronglyTypedLanguage>
Expand All @@ -141,10 +129,7 @@
</ItemGroup>

<!-- Make sure the source control info is available before calling source generators -->
<Target Name="EnsureProjectInformation"
BeforeTargets="GenerateMSBuildEditorConfigFileShouldRun"
AfterTargets="InitializeSourceControlInformation"
DependsOnTargets="InitializeSourceControlInformation">
<Target Name="EnsureProjectInformation" BeforeTargets="GenerateMSBuildEditorConfigFileShouldRun" AfterTargets="InitializeSourceControlInformation" DependsOnTargets="InitializeSourceControlInformation">

<PropertyGroup Condition="'$(SourceControlInformationFeatureSupported)' == 'true'">
<!-- The project must specify PublishRepositoryUrl=true in order to publish the URL, in order to prevent inadvertent leak of internal URL. -->
Expand All @@ -160,7 +145,7 @@

<!-- Add SourceRoot as a project property too -->
<ItemGroup>
<_GitSourceRoot Include="@(SourceRoot -> WithMetadataValue('SourceControl', 'git'))" />
<_GitSourceRoot Include="@(SourceRoot -&gt; WithMetadataValue('SourceControl', 'git'))" />
</ItemGroup>

<PropertyGroup>
Expand All @@ -169,11 +154,7 @@

</Target>

<Target Name="UpdatePackageMetadata"
BeforeTargets="PrepareForBuild;GenerateMSBuildEditorConfigFileShouldRun;GetAssemblyVersion;GetPackageMetadata;GenerateNuspec;Pack"
DependsOnTargets="EnsureProjectInformation"
Condition="'$(SourceControlInformationFeatureSupported)' == 'true' And
'$(IsPackable)' == 'true'">
<Target Name="UpdatePackageMetadata" BeforeTargets="PrepareForBuild;GenerateMSBuildEditorConfigFileShouldRun;GetAssemblyVersion;GetPackageMetadata;GenerateNuspec;Pack" DependsOnTargets="EnsureProjectInformation" Condition="'$(SourceControlInformationFeatureSupported)' == 'true' And '$(IsPackable)' == 'true'">
<PropertyGroup>
<PackageProjectUrl Condition="'$(PackageProjectUrl)' == '' and '$(PublishRepositoryUrl)' == 'true'">$(RepositoryUrl)</PackageProjectUrl>
<PackageDescription>$(Description)</PackageDescription>
Expand All @@ -182,7 +163,7 @@
</Target>

<!-- Import before UsingTask because first to declare tasks wins -->
<Import Project="Directory.targets" Condition="Exists('Directory.targets')"/>
<Import Project="Directory.targets" Condition="Exists('Directory.targets')" />
<Import Project="Directory.targets.user" Condition="Exists('Directory.targets.user')" />

</Project>
80 changes: 24 additions & 56 deletions src/SponsorLink/SponsorLink.Analyzer.targets
Original file line number Diff line number Diff line change
Expand Up @@ -28,50 +28,38 @@
</PropertyGroup>

<ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)SponsorLink/*.cs"
Exclude="$(MSBuildThisFileDirectory)SponsorLink/bin/**;$(MSBuildThisFileDirectory)SponsorLink/obj/**"
Source="SponsorLink"/>
<EmbeddedResource Include="$(MSBuildThisFileDirectory)SponsorLink/*.resx"
Exclude="$(MSBuildThisFileDirectory)SponsorLink/bin/**;$(MSBuildThisFileDirectory)SponsorLink/obj/**"
Source="SponsorLink"
Type="Resx"
ManifestResourceName="Devlooped.Sponsors.%(Filename)"/>
<EmbeddedResource Update="$(MSBuildThisFileDirectory)SponsorLink/Resources.resx"
StronglyTypedManifestPrefix="Devlooped.Sponsors"
StronglyTypedClassName="%(Filename)"
StronglyTypedNamespace="Devlooped.Sponsors"
StronglyTypedLanguage="$(Language)" />
<None Include="$(MSBuildThisFileDirectory)SponsorLink/buildTransitive/*.*"
Source="SponsorLink"
PackagePath="buildTransitive/%(Filename)%(Extension)"/>
<Compile Include="$(MSBuildThisFileDirectory)SponsorLink/*.cs" Exclude="$(MSBuildThisFileDirectory)SponsorLink/bin/**;$(MSBuildThisFileDirectory)SponsorLink/obj/**" Source="SponsorLink" />
<EmbeddedResource Include="$(MSBuildThisFileDirectory)SponsorLink/*.resx" Exclude="$(MSBuildThisFileDirectory)SponsorLink/bin/**;$(MSBuildThisFileDirectory)SponsorLink/obj/**" Source="SponsorLink" Type="Resx" ManifestResourceName="Devlooped.Sponsors.%(Filename)" />
<EmbeddedResource Update="$(MSBuildThisFileDirectory)SponsorLink/Resources.resx" StronglyTypedManifestPrefix="Devlooped.Sponsors" StronglyTypedClassName="%(Filename)" StronglyTypedNamespace="Devlooped.Sponsors" StronglyTypedLanguage="$(Language)" />
<None Include="$(MSBuildThisFileDirectory)SponsorLink/buildTransitive/*.*" Source="SponsorLink" PackagePath="buildTransitive/%(Filename)%(Extension)" />
</ItemGroup>

<ItemGroup Condition="$(ShowSponsorLinkInProject) == 'true'">
<Compile Update="@(Compile -> WithMetadataValue('Source', 'SponsorLink'))">
<Compile Update="@(Compile -&gt; WithMetadataValue('Source', 'SponsorLink'))">
<Link>SponsorLink\%(RecursiveDir)%(Filename)%(Extension)</Link>
</Compile>
<EmbeddedResource Update="@(EmbeddedResource -> WithMetadataValue('Source', 'SponsorLink'))">
<EmbeddedResource Update="@(EmbeddedResource -&gt; WithMetadataValue('Source', 'SponsorLink'))">
<Link>SponsorLink\%(RecursiveDir)%(Filename)%(Extension)</Link>
</EmbeddedResource>
<Content Update="@(Content -> WithMetadataValue('Source', 'SponsorLink'))">
<Content Update="@(Content -&gt; WithMetadataValue('Source', 'SponsorLink'))">
<Link>SponsorLink\%(RecursiveDir)%(Filename)%(Extension)</Link>
</Content>
<None Update="@(None -> WithMetadataValue('Source', 'SponsorLink'))">
<None Update="@(None -&gt; WithMetadataValue('Source', 'SponsorLink'))">
<Link>SponsorLink\%(PackagePath)</Link>
</None>
</ItemGroup>

<ItemGroup Condition="$(ShowSponsorLinkInProject) != 'true'">
<Compile Update="@(Compile -> WithMetadataValue('Source', 'SponsorLink'))">
<Compile Update="@(Compile -&gt; WithMetadataValue('Source', 'SponsorLink'))">
<Visible>false</Visible>
</Compile>
<EmbeddedResource Update="@(EmbeddedResource -> WithMetadataValue('Source', 'SponsorLink'))">
<EmbeddedResource Update="@(EmbeddedResource -&gt; WithMetadataValue('Source', 'SponsorLink'))">
<Visible>false</Visible>
</EmbeddedResource>
<Content Update="@(Content -> WithMetadataValue('Source', 'SponsorLink'))">
<Content Update="@(Content -&gt; WithMetadataValue('Source', 'SponsorLink'))">
<Visible>false</Visible>
</Content>
<None Update="@(None -> WithMetadataValue('Source', 'SponsorLink'))">
<None Update="@(None -&gt; WithMetadataValue('Source', 'SponsorLink'))">
<Visible>false</Visible>
</None>
</ItemGroup>
Expand All @@ -91,13 +79,12 @@
<ItemGroup Condition="'$(ManagePackageVersionsCentrally)' != 'true'">
<PackageReference Include="Humanizer.Core" Version="2.14.1" PrivateAssets="all" Pack="$(PackMergedAssemblies)" />
<PackageReference Include="Humanizer.Core.es" Version="2.14.1" PrivateAssets="all" />
<PackageReference Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.5.0" PrivateAssets="all" Pack="$(PackMergedAssemblies)" />
<PackageReference Include="ILRepack" Version="2.0.37" PrivateAssets="all" Pack="false" />
<PackageReference Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.13.0" PrivateAssets="all" Pack="$(PackMergedAssemblies)" />
<PackageReference Include="ILRepack" Version="2.0.37" PrivateAssets="all" Pack="false" />
</ItemGroup>

<Target Name="EmitFunding" BeforeTargets="CompileDesignTime;CoreCompile" Inputs="$(MSBuildAllProjects)" Outputs="$(IntermediateOutputPath)SponsorLink.g.cs">
<Warning Condition="'$(FundingPackageId)' == ''" Code="SL001"
Text="Could not determine value of FundingPackageId (defaulted to PackageId). Defaulting it to FundingProduct ('$(FundingProduct)'). Make sure this matches the containing package id, or set an explicit value." />
<Warning Condition="'$(FundingPackageId)' == ''" Code="SL001" Text="Could not determine value of FundingPackageId (defaulted to PackageId). Defaulting it to FundingProduct ('$(FundingProduct)'). Make sure this matches the containing package id, or set an explicit value." />
<PropertyGroup>
<!-- Default to Product, which is most common for single-package products (i.e. Moq) -->
<FundingPackageId Condition="'$(FundingPackageId)' == ''">$(FundingProduct)</FundingPackageId>
Expand All @@ -107,7 +94,7 @@
<FundingAnalyzerPackageId Include="$(FundingPackageId)" />
</ItemGroup>
<ItemGroup>
<_FundingAnalyzerPackageId Include="@(FundingAnalyzerPackageId -> '&quot;%(Identity)&quot;')" />
<_FundingAnalyzerPackageId Include="@(FundingAnalyzerPackageId -&gt; '&quot;%(Identity)&quot;')" />
</ItemGroup>
<PropertyGroup>
<_FundingPackageIds>@(_FundingAnalyzerPackageId, ',')</_FundingPackageIds>
Expand Down Expand Up @@ -143,34 +130,19 @@ partial class SponsorLink
<Output TaskParameter="ExitCode" PropertyName="ExitCode" />
</Exec>
<Message Importance="high" Text="Using installed dotnet-ilrepack v$(ILRepackOutput)" Condition="$(ExitCode) == '0'" />
<Exec Command="dotnet tool install -g dotnet-ilrepack"
Condition="$(ExitCode) != '0'" />
<Exec Command="dotnet tool install -g dotnet-ilrepack" Condition="$(ExitCode) != '0'" />
<Exec Command="ilrepack --version" Condition="$(ExitCode) != '0'" ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="ILRepackInstalledOutput" />
</Exec>
<Message Importance="high" Text="Installed dotnet-ilrepack v$(ILRepackInstalledOutput)" Condition="$(ExitCode) != '0'" />
</Target>

<Target Name="ILRepack" AfterTargets="CoreCompile" BeforeTargets="CopyFilesToOutputDirectory"
Inputs="@(IntermediateAssembly -&gt; '%(FullPath)')"
Outputs="$(IntermediateOutputPath)ilrepack.txt"
Returns="@(MergedAssemblies)"
Condition="Exists(@(IntermediateAssembly -&gt; '%(FullPath)')) And '$(MergeAnalyzerAssemblies)' == 'true'">
<Target Name="ILRepack" AfterTargets="CoreCompile" BeforeTargets="CopyFilesToOutputDirectory" Inputs="@(IntermediateAssembly -&gt; '%(FullPath)')" Outputs="$(IntermediateOutputPath)ilrepack.txt" Returns="@(MergedAssemblies)" Condition="Exists(@(IntermediateAssembly -&gt; '%(FullPath)')) And '$(MergeAnalyzerAssemblies)' == 'true'">
<ItemGroup>
<ReferenceCopyLocalAssemblies Include="@(ReferenceCopyLocalPaths)" Condition="'%(Extension)' == '.dll'
And !$([MSBuild]::ValueOrDefault('%(FileName)', '').EndsWith('.resources', StringComparison.OrdinalIgnoreCase))" />
<MergedAssemblies Include="@(ReferenceCopyLocalAssemblies)" Condition="
!$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('Microsoft.CodeAnalysis', StringComparison.OrdinalIgnoreCase)) And
!$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('Microsoft.CSharp', StringComparison.OrdinalIgnoreCase)) And
!$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('System.', StringComparison.OrdinalIgnoreCase))"
/>
<ReferenceCopyLocalAssemblies Include="@(ReferenceCopyLocalPaths)" Condition="'%(Extension)' == '.dll' And !$([MSBuild]::ValueOrDefault('%(FileName)', '').EndsWith('.resources', StringComparison.OrdinalIgnoreCase))" />
<MergedAssemblies Include="@(ReferenceCopyLocalAssemblies)" Condition=" !$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('Microsoft.CodeAnalysis', StringComparison.OrdinalIgnoreCase)) And !$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('Microsoft.CSharp', StringComparison.OrdinalIgnoreCase)) And !$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('System.', StringComparison.OrdinalIgnoreCase))" />
<!-- Brings in System/Microsoft.IdentityModel, System.Text.Encodings.Web, System.Text.Json, Humanizer -->
<MergedAssemblies Include="@(ReferenceCopyLocalAssemblies)" Condition="
$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('System.IdentityModel', StringComparison.OrdinalIgnoreCase)) Or
$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('Microsoft.IdentityModel', StringComparison.OrdinalIgnoreCase)) Or
$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('System.Text', StringComparison.OrdinalIgnoreCase)) Or
$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('Humanizer', StringComparison.OrdinalIgnoreCase))"
/>
<MergedAssemblies Include="@(ReferenceCopyLocalAssemblies)" Condition=" $([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('System.IdentityModel', StringComparison.OrdinalIgnoreCase)) Or $([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('Microsoft.IdentityModel', StringComparison.OrdinalIgnoreCase)) Or $([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('System.Text', StringComparison.OrdinalIgnoreCase)) Or $([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('Humanizer', StringComparison.OrdinalIgnoreCase))" />
</ItemGroup>
<ItemGroup>
<ReferenceCopyLocalDirs Include="@(ReferenceCopyLocalPaths -&gt; '%(RootDir)%(Directory)')" />
Expand All @@ -190,7 +162,7 @@ partial class SponsorLink
<!--<ILRepackArgs>$(ILRepackArgs) "/lib:$(NetstandardDirectory)"</ILRepackArgs> -->
<!-- This is needed for ilrepack to find netstandard.dll, which is referenced by the System.Text.Json assembly -->
</PropertyGroup>
<Exec Command='ilrepack $(ILRepackArgs)' WorkingDirectory="$(MSBuildProjectDirectory)\$(OutputPath)" StandardErrorImportance="high" IgnoreStandardErrorWarningFormat="true" StandardOutputImportance="low" ConsoleToMSBuild="true" ContinueOnError="true">
<Exec Command="ilrepack $(ILRepackArgs)" WorkingDirectory="$(MSBuildProjectDirectory)\$(OutputPath)" StandardErrorImportance="high" IgnoreStandardErrorWarningFormat="true" StandardOutputImportance="low" ConsoleToMSBuild="true" ContinueOnError="true">
<Output TaskParameter="ConsoleOutput" PropertyName="ILRepackOutput" />
<Output TaskParameter="ExitCode" PropertyName="ExitCode" />
</Exec>
Expand Down Expand Up @@ -220,13 +192,9 @@ partial class SponsorLink
</Target>

<!-- Make sure dependencies are available in the package when not merging (i.e. local dev) -->
<Target Name="PackCopyLocalLockFileAssemblies" Condition="'$(MergeAnalyzerAssemblies)' != 'true'"
BeforeTargets="GetPackageContents" DependsOnTargets="ReferenceCopyLocalPathsOutputGroup">
<Target Name="PackCopyLocalLockFileAssemblies" Condition="'$(MergeAnalyzerAssemblies)' != 'true'" BeforeTargets="GetPackageContents" DependsOnTargets="ReferenceCopyLocalPathsOutputGroup">
<ItemGroup>
<PackageFile Include="@(ReferenceCopyLocalPathsOutputGroupOutput)" Condition="
!$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('Microsoft.CodeAnalysis', StringComparison.OrdinalIgnoreCase)) And
!$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('Microsoft.CSharp', StringComparison.OrdinalIgnoreCase))"
PackFolder="$(PackFolder)" />
<PackageFile Include="@(ReferenceCopyLocalPathsOutputGroupOutput)" Condition=" !$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('Microsoft.CodeAnalysis', StringComparison.OrdinalIgnoreCase)) And !$([MSBuild]::ValueOrDefault('%(FileName)', '').StartsWith('Microsoft.CSharp', StringComparison.OrdinalIgnoreCase))" PackFolder="$(PackFolder)" />
</ItemGroup>
</Target>

Expand Down