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
3 changes: 1 addition & 2 deletions src/SponsorLink/Directory.Build.targets
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<Project>

<ItemGroup Condition="Exists('$(PackageOutputPath)\SponsorableLib.$(Version).nupkg')">
<PackageReference Update="@(PackageReference -> WithMetadataValue('Identity', 'SponsorableLib'))"
Version="$(Version)" />
<PackageReference Update="@(PackageReference -&gt; WithMetadataValue('Identity', 'SponsorableLib'))" Version="$(Version)" />
</ItemGroup>

</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.4.0" PrivateAssets="all" Pack="$(PackMergedAssemblies)" />
<PackageReference Include="ILRepack" Version="2.0.41" PrivateAssets="all" Pack="false" />
<PackageReference Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.13.0" PrivateAssets="all" Pack="$(PackMergedAssemblies)" />
<PackageReference Include="ILRepack" Version="2.0.41" 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
4 changes: 2 additions & 2 deletions src/SponsorLink/SponsorLink/SponsorLink.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
<PackageReference Include="NuGetizer" Version="1.2.4" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.0.1" Pack="false" />
<PackageReference Include="PolySharp" Version="1.15.0" PrivateAssets="all" />
<PackageReference Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.4.0" PrivateAssets="all" />
<PackageReference Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.13.0" PrivateAssets="all" />
</ItemGroup>

<ItemGroup>
Expand All @@ -52,7 +52,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
Original file line number Diff line number Diff line change
Expand Up @@ -39,23 +39,21 @@
<Target Name="SL" BeforeTargets="GenerateMSBuildEditorConfigFileShouldRun" DependsOnTargets="$(SLDependsOn)">
<ItemGroup>
<!-- Make manifests visible to analyzers -->
<AdditionalFiles Include="@(SponsorManifest -> Distinct())" />
<AdditionalFiles Include="@(SponsorManifest -&gt; Distinct())" />
</ItemGroup>
</Target>

<Target Name="SL_CollectDependencies" DependsOnTargets="_GenerateRestoreGraph">
<!-- Makes direct dependencies visible to the compiler, so that sponsoring checks can selectively skip indirectly referenced analyzer -->
<!-- An analyzer can check for the presense of a global property named after the package id (which will contain the instaled version) -->
<ItemGroup>
<DirectDependency Include="@(_RestoreGraphEntry -> HasMetadata('Id'))"
Condition="'%(_RestoreGraphEntry.Type)' == 'Dependency' and
'%(_RestoreGraphEntry.ProjectUniqueName)' == '$(MSBuildProjectFullPath)'">
<DirectDependency Include="@(_RestoreGraphEntry -&gt; HasMetadata('Id'))" Condition="'%(_RestoreGraphEntry.Type)' == 'Dependency' and '%(_RestoreGraphEntry.ProjectUniqueName)' == '$(MSBuildProjectFullPath)'">
<Id>$([MSBuild]::ValueOrDefault('%(_RestoreGraphEntry.Id)', '').Replace('.', '_'))</Id>
</DirectDependency>
<CompilerVisibleProperty Include="@(DirectDependency -> '%(Id)')" />
<CompilerVisibleProperty Include="@(DirectDependency -&gt; '%(Id)')" />
</ItemGroup>
<CreateProperty Condition="'@(DirectDependency)' != ''" Value="%(DirectDependency.VersionRange)">
<Output TaskParameter="Value" PropertyName="%(DirectDependency.Id)"/>
<Output TaskParameter="Value" PropertyName="%(DirectDependency.Id)" />
</CreateProperty>
</Target>

Expand All @@ -67,7 +65,7 @@
<!--Used to determine installation time, for example, by looking up the analyzer assembly in additional files with:
build_metadata.Analyzer.ItemType = Analyzer
build_metadata.Analyzer.NuGetPackageId = [PackageId] -->
<AdditionalFiles Include="@(Analyzer -> WithMetadataValue('NuGetPackageId', '$(_FundingPackageId)'))" />
<AdditionalFiles Include="@(Analyzer -&gt; WithMetadataValue('NuGetPackageId', '$(_FundingPackageId)'))" />
</ItemGroup>
</Target>

Expand All @@ -85,8 +83,7 @@
<Output TaskParameter="Lines" ItemName="SLConfig" />
</ReadLinesFromFile>
<ItemGroup>
<SLConfigAutoSync Include="$([MSBuild]::ValueOrDefault(%(SLConfig.Identity), '').Trim())"
Condition="$([MSBuild]::ValueOrDefault(%(SLConfig.Identity), '').Trim().StartsWith('autosync'))" />
<SLConfigAutoSync Include="$([MSBuild]::ValueOrDefault(%(SLConfig.Identity), '').Trim())" Condition="$([MSBuild]::ValueOrDefault(%(SLConfig.Identity), '').Trim().StartsWith('autosync'))" />
</ItemGroup>
<PropertyGroup>
<SLConfigAutoSync>%(SLConfigAutoSync.Identity)</SLConfigAutoSync>
Expand Down
2 changes: 1 addition & 1 deletion src/SponsorLink/Tests/Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
<PackageReference Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.4.0" PrivateAssets="all" />
<PackageReference Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.13.0" PrivateAssets="all" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="ThisAssembly.Resources" Version="2.0.10" PrivateAssets="all" />
<PackageReference Include="xunit" Version="2.9.3" />
Expand Down
Loading