build: add more projects for sdks
All checks were successful
dotnet publish / package (8.0) (push) Successful in 22s
All checks were successful
dotnet publish / package (8.0) (push) Successful in 22s
Add projects for creating new sdk based msbuild projects.
This commit is contained in:
parent
2fec5e69e3
commit
1eb1846f5e
32 changed files with 831 additions and 242 deletions
10
src/Geekeey.DotNet.Sdk.Tasks/Geekeey.DotNet.Sdk.Tasks.csproj
Normal file
10
src/Geekeey.DotNet.Sdk.Tasks/Geekeey.DotNet.Sdk.Tasks.csproj
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<IsShipping>true</IsShipping>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<IsBuildTaskProject>true</IsBuildTaskProject>
|
||||
</PropertyGroup>
|
||||
</Project>
|
1
src/Geekeey.DotNet.Sdk.Tasks/README.md
Normal file
1
src/Geekeey.DotNet.Sdk.Tasks/README.md
Normal file
|
@ -0,0 +1 @@
|
|||
# Geekeey.DotNet.Sdk.Tasks
|
3
src/Geekeey.DotNet.Sdk.Tasks/sdk/Sdk.props
Normal file
3
src/Geekeey.DotNet.Sdk.Tasks/sdk/Sdk.props
Normal file
|
@ -0,0 +1,3 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
</Project>
|
110
src/Geekeey.DotNet.Sdk.Tasks/sdk/Sdk.targets
Normal file
110
src/Geekeey.DotNet.Sdk.Tasks/sdk/Sdk.targets
Normal file
|
@ -0,0 +1,110 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<IncludeBuildOutput>false</IncludeBuildOutput>
|
||||
<IsPackable>true</IsPackable>
|
||||
<!-- Build Tasks should not include any dependencies -->
|
||||
<SuppressDependenciesWhenPacking Condition="'$(SuppressDependenciesWhenPacking)' == ''">true</SuppressDependenciesWhenPacking>
|
||||
<!-- Build Tasks should have an assembly version set -->
|
||||
<AutoGenerateAssemblyVersion>true</AutoGenerateAssemblyVersion>
|
||||
<BuildTaskTargetFolder Condition="'$(BuildTaskTargetFolder)' == ''">tools</BuildTaskTargetFolder>
|
||||
<PackTasks Condition="'$(PackTasks)' == ''">true</PackTasks>
|
||||
</PropertyGroup>
|
||||
|
||||
<!--
|
||||
Default to including all *.props and *.targets files
|
||||
from the project directory into the NuGet package root
|
||||
-->
|
||||
<ItemGroup Condition="'$(EnableDefaultItems)' != 'false'">
|
||||
<None Condition="'$(EnableDefaultNoneItems)' != 'false'"
|
||||
Include="**/*.props;**/*.targets"
|
||||
Pack="true"
|
||||
PackagePath="%(RecursiveDir)%(Filename)%(Extension)" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Don't include assemblies that MSBuild ships with. -->
|
||||
<ItemGroup>
|
||||
<PackageReference Update="Microsoft.Build" Publish="false" />
|
||||
<PackageReference Update="Microsoft.Build.Framework" Publish="false" />
|
||||
<PackageReference Update="Microsoft.Build.Tasks.Core" Publish="false" />
|
||||
<PackageReference Update="Microsoft.Build.Utilities.Core" Publish="false" />
|
||||
<PackageReference Update="Microsoft.NET.StringTools" Publish="false" />
|
||||
<PackageReference Update="System.Resources.Extensions" Publish="false" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Don't include assemblies that are provided by the SDK, next to MSBuild. -->
|
||||
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(SkipSDKInboxPublishExcludes)' != 'true'">
|
||||
<PackageReference Update="Newtonsoft.Json" Publish="false" />
|
||||
<PackageReference Update="NuGet.Commands" Publish="false" />
|
||||
<PackageReference Update="NuGet.Common" Publish="false" />
|
||||
<PackageReference Update="NuGet.Configuration" Publish="false" />
|
||||
<PackageReference Update="NuGet.Frameworks" Publish="false" />
|
||||
<PackageReference Update="NuGet.Packaging" Publish="false" />
|
||||
<PackageReference Update="NuGet.ProjectModel" Publish="false" />
|
||||
<PackageReference Update="NuGet.Versioning" Publish="false" />
|
||||
<PackageReference Update="System.CodeDom" Publish="false" />
|
||||
<PackageReference Update="System.Security.Cryptography.ProtectedData" Publish="false" />
|
||||
<PackageReference Update="System.Text.Encoding.CodePages" Publish="false" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Don't include assemblies that are inbox in Desktop MSBuild -->
|
||||
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">
|
||||
<PackageReference Update="Microsoft.Bcl.AsyncInterfaces" Publish="false" />
|
||||
<PackageReference Update="System.Buffers" Publish="false" />
|
||||
<PackageReference Update="System.Collections.Immutable" Publish="false" />
|
||||
<PackageReference Update="System.Memory" Publish="false" />
|
||||
<PackageReference Update="System.Numerics.Vectors" Publish="false" />
|
||||
<PackageReference Update="System.Reflection.Metadata" Publish="false" />
|
||||
<PackageReference Update="System.Reflection.MetadataLoadContext" Publish="false" />
|
||||
<PackageReference Update="System.Runtime.CompilerServices.Unsafe" Publish="false" />
|
||||
<PackageReference Update="System.Text.Encodings.Web" Publish="false" />
|
||||
<PackageReference Update="System.Text.Json" Publish="false" />
|
||||
<PackageReference Update="System.Threading.Channels" Publish="false" />
|
||||
<PackageReference Update="System.Threading.Tasks.Dataflow" Publish="false" />
|
||||
<PackageReference Update="System.Threading.Tasks.Extensions" Publish="false" />
|
||||
<PackageReference Update="System.ValueTuple" Publish="false" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!--
|
||||
Update all PackageReference items to default Publish to true.
|
||||
This forces the publish output to contain the dlls.
|
||||
-->
|
||||
<PackageReference Update="@(PackageReference)">
|
||||
<Publish Condition="'%(PackageReference.Publish)' == ''">true</Publish>
|
||||
<ExcludeAssets Condition="'%(PackageReference.Publish)' == 'false'">runtime</ExcludeAssets>
|
||||
</PackageReference>
|
||||
|
||||
<!--
|
||||
Update all Reference items to have Pack="false"
|
||||
This removes the frameworkDependency nodes from the generated nuspec
|
||||
-->
|
||||
<Reference Update="@(Reference)"
|
||||
Pack="false" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetsForTfmSpecificContentInPackage Condition="'$(PackTasks)' == 'true'">$(TargetsForTfmSpecificContentInPackage);_AddBuildOutputToPackageCore;_AddBuildOutputToPackageDesktop</TargetsForTfmSpecificContentInPackage>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Publish .NET Core assets and include them in the package under $(BuildTaskTargetFolder) directory. -->
|
||||
<Target Name="_AddBuildOutputToPackageCore" DependsOnTargets="Publish" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'">
|
||||
<PropertyGroup>
|
||||
<BuildTaskTargetTfmSpecificFolder Condition="'$(BuildTaskTargetTfmSpecificFolder)' == ''">$(TargetFramework)</BuildTaskTargetTfmSpecificFolder>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<TfmSpecificPackageFile Include="$(PublishDir)**"
|
||||
PackagePath="$(BuildTaskTargetFolder)/$(BuildTaskTargetTfmSpecificFolder)/%(RecursiveDir)%(FileName)%(Extension)" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<!-- Include .NET Framework build outputs in the package under $(BuildTaskTargetFolder) directory. -->
|
||||
<Target Name="_AddBuildOutputToPackageDesktop" Condition="'$(TargetFrameworkIdentifier)' != '.NETCoreApp'">
|
||||
<PropertyGroup>
|
||||
<BuildTaskTargetTfmSpecificFolder Condition="'$(BuildTaskTargetTfmSpecificFolder)' == ''">$(TargetFramework)</BuildTaskTargetTfmSpecificFolder>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<TfmSpecificPackageFile Include="$(OutputPath)**" PackagePath="$(BuildTaskTargetFolder)/$(BuildTaskTargetTfmSpecificFolder)/%(RecursiveDir)%(FileName)%(Extension)" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
</Project>
|
8
src/Geekeey.DotNet.Sdk.Tasks/src/Program.cs
Normal file
8
src/Geekeey.DotNet.Sdk.Tasks/src/Program.cs
Normal file
|
@ -0,0 +1,8 @@
|
|||
namespace Geekeey.DotNet.Sdk.Tasks;
|
||||
|
||||
internal sealed class Program
|
||||
{
|
||||
static public void Main(string[] args)
|
||||
{
|
||||
}
|
||||
}
|
10
src/Geekeey.DotNet.Sdk/Geekeey.DotNet.Sdk.csproj
Normal file
10
src/Geekeey.DotNet.Sdk/Geekeey.DotNet.Sdk.csproj
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<IsShipping>true</IsShipping>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<IsBuildTaskProject>true</IsBuildTaskProject>
|
||||
</PropertyGroup>
|
||||
</Project>
|
1
src/Geekeey.DotNet.Sdk/README.md
Normal file
1
src/Geekeey.DotNet.Sdk/README.md
Normal file
|
@ -0,0 +1 @@
|
|||
# Geekeey.DotNet.Sdk
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<ItemDefinitionGroup>
|
||||
<AnalyzerReference>
|
||||
<Visible>false</Visible>
|
||||
</AnalyzerReference>
|
||||
</ItemDefinitionGroup>
|
||||
</Project>
|
102
src/Geekeey.DotNet.Sdk/sdk/Geekeey.DotNet.Sdk.Analyzer.targets
Normal file
102
src/Geekeey.DotNet.Sdk/sdk/Geekeey.DotNet.Sdk.Analyzer.targets
Normal file
|
@ -0,0 +1,102 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<IncludeMultiTargetRoslynComponentTargets Condition="'$(IncludeMultiTargetRoslynComponentTargets)' == ''">false</IncludeMultiTargetRoslynComponentTargets>
|
||||
<BeforePack>IncludeAnalyzersInPackage;$(BeforePack)</BeforePack>
|
||||
<BuildAnalyzerReferences>$(BuildProjectReferences)</BuildAnalyzerReferences>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- FROM: https://github.com/dotnet/runtime/blob/main/eng/packaging.targets -->
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Ensure AnalyzerReference items are restored and built
|
||||
The target framework of Analyzers has no relationship to that of the referencing project,
|
||||
so we don't apply TargetFramework filters nor do we pass in TargetFramework.
|
||||
When BuildProjectReferences=false we make sure to set BuildReference=false to make
|
||||
sure not to try to call GetTargetPath in the outerbuild of the analyzer project. -->
|
||||
<ProjectReference Include="@(AnalyzerReference)"
|
||||
SkipGetTargetFrameworkProperties="true"
|
||||
UndefineProperties="TargetFramework"
|
||||
ReferenceOutputAssembly="false"
|
||||
PrivateAssets="all"
|
||||
Condition="'$(BuildingSlnForDocs)' != 'true'"
|
||||
BuildReference="$(BuildAnalyzerReferences)" />
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="IncludeAnalyzersInPackage" Condition="'@(AnalyzerReference)' != ''">
|
||||
<!-- Call a target in the analyzer project to get all the files it would normally place in a package.
|
||||
These will be returned as items with identity pointing to the built file, and PackagePath metadata
|
||||
set to their location in the package. IsSymbol metadata will be set to distinguish symbols. -->
|
||||
<MSBuild Projects="@(AnalyzerReference)"
|
||||
Targets="GetAnalyzerPackFiles">
|
||||
<Output TaskParameter="TargetOutputs" ItemName="_AnalyzerFile" />
|
||||
</MSBuild>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="@(_AnalyzerFile)" Pack="true" Condition="!%(_AnalyzerFile.IsSymbol)" />
|
||||
<!-- Symbols don't honor PackagePath. By default they are placed in lib/%(TargetFramework).
|
||||
Pack does honor TargetPath and does Path.Combine("lib/%(TargetFramework)", "%(TargetPath)"),
|
||||
so a rooted path value for TargetPath will override lib.
|
||||
https://github.com/NuGet/Home/issues/10860 -->
|
||||
<_TargetPathsToSymbols Include="@(_AnalyzerFile)" TargetPath="/%(_AnalyzerFile.PackagePath)" Condition="%(_AnalyzerFile.IsSymbol)" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="GetAnalyzerPackFiles"
|
||||
DependsOnTargets="$(GenerateNuspecDependsOn)"
|
||||
Returns="@(_AnalyzerPackFile)">
|
||||
<PropertyGroup>
|
||||
<_AnalyzerPath>analyzers/dotnet</_AnalyzerPath>
|
||||
<_AnalyzerPath Condition="'$(AnalyzerRoslynVersion)' != ''">$(_AnalyzerPath)/roslyn$(AnalyzerRoslynVersion)</_AnalyzerPath>
|
||||
<_AnalyzerPath Condition="'$(AnalyzerLanguage)' != ''">$(_AnalyzerPath)/$(AnalyzerLanguage)</_AnalyzerPath>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<!-- Packs *.dll -->
|
||||
<_AnalyzerPackFile IsSymbol="false"
|
||||
Include="%(_BuildOutputInPackage.FinalOutputPath)"
|
||||
TargetPath="%(_BuildOutputInPackage.TargetPath)"
|
||||
TargetFramework="%(_BuildOutputInPackage.TargetFramework)" />
|
||||
<!-- Packs *.pdb -->
|
||||
<_AnalyzerPackFile IsSymbol="true"
|
||||
Include="%(_TargetPathsToSymbols.FinalOutputPath)"
|
||||
TargetPath="%(_TargetPathsToSymbols.TargetPath)"
|
||||
TargetFramework="%(_TargetPathsToSymbols.TargetFramework)" />
|
||||
<_AnalyzerPackFile PackagePath="$(_AnalyzerPath)/%(TargetPath)" />
|
||||
</ItemGroup>
|
||||
<Error Condition="'%(_AnalyzerPackFile.TargetFramework)' != 'netstandard2.0'"
|
||||
Text="Analyzers must only target netstandard2.0 since they run in the compiler which targets netstandard2.0. The following files were found to target '%(_AnalyzerPackFile.TargetFramework)': @(_AnalyzerPackFile)" />
|
||||
</Target>
|
||||
|
||||
<PropertyGroup>
|
||||
<_MultiTargetRoslynComponentTargetsTemplate>$(MSBuildThisFileDirectory)templates\MultiTargetRoslynComponent.targets.template</_MultiTargetRoslynComponentTargetsTemplate>
|
||||
<MultiTargetRoslynComponentTargetsFileIntermediatePath>$(IntermediateOutputPath)MultiTargetRoslynComponent.targets</MultiTargetRoslynComponentTargetsFileIntermediatePath>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- In packages that contain Analyzers, include a .targets file that will select the correct analyzer. -->
|
||||
<Target Name="IncludeMultiTargetRoslynComponentTargetsInPackage"
|
||||
AfterTargets="IncludeAnalyzersInPackage"
|
||||
Condition="'@(AnalyzerReference)' != '' AND '$(IncludeMultiTargetRoslynComponentTargets)' == 'true'"
|
||||
DependsOnTargets="GenerateMultiTargetRoslynComponentTargetsFile">
|
||||
<ItemGroup>
|
||||
<Content Include="$(MultiTargetRoslynComponentTargetsFileIntermediatePath)"
|
||||
PackagePath="buildTransitive\MultiTargetRoslynComponent.targets"
|
||||
Pack="true" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateMultiTargetRoslynComponentTargetsFile"
|
||||
Inputs="$(MSBuildProjectFullPath);_MultiTargetRoslynComponentTargetsTemplate"
|
||||
Outputs="$(MultiTargetRoslynComponentTargetsFileIntermediatePath)">
|
||||
<PropertyGroup>
|
||||
<_MultiTargetRoslynComponentTargetPrefix>$(PackageId.Replace('.', '_'))</_MultiTargetRoslynComponentTargetPrefix>
|
||||
<DisableSourceGeneratorPropertyName Condition="'$(DisableSourceGeneratorPropertyName)' == ''">Disable$(PackageId.Replace('.', ''))SourceGenerator</DisableSourceGeneratorPropertyName>
|
||||
</PropertyGroup>
|
||||
|
||||
<WriteLinesToFile File="$(MultiTargetRoslynComponentTargetsFileIntermediatePath)"
|
||||
Lines="$([System.IO.File]::ReadAllText('$(_MultiTargetRoslynComponentTargetsTemplate)')
|
||||
.Replace('{TargetPrefix}', '$(_MultiTargetRoslynComponentTargetPrefix)')
|
||||
.Replace('{NuGetPackageId}', '$(PackageId)')
|
||||
.Replace('{DisableSourceGeneratorPropertyName}', '$(DisableSourceGeneratorPropertyName)'))"
|
||||
Overwrite="true" />
|
||||
</Target>
|
||||
</Project>
|
43
src/Geekeey.DotNet.Sdk/sdk/Geekeey.DotNet.Sdk.Common.props
Normal file
43
src/Geekeey.DotNet.Sdk/sdk/Geekeey.DotNet.Sdk.Common.props
Normal file
|
@ -0,0 +1,43 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
|
||||
<Platform Condition="'$(Platform)' == ''">AnyCPU</Platform>
|
||||
<PlatformName Condition="'$(PlatformName)' == ''">$(Platform)</PlatformName>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<IsShipping Condition="'$(IsShipping)' == ''">true</IsShipping>
|
||||
<IsShippingPackage Condition="'$(IsShippingPackage)' == ''">$(IsShipping)</IsShippingPackage>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- We are doing an outer cross-targeting build if there is a non-empty list of target frameworks specified
|
||||
and there is no current target framework being built individually. -->
|
||||
<IsCrossTargetingBuild Condition="'$(TargetFrameworks)' != '' AND '$(TargetFramework)' == ''">true</IsCrossTargetingBuild>
|
||||
<!-- We are doing a single targeting build if there is a empty list of target frameworks specified
|
||||
and there is a current target framework being built. -->
|
||||
<IsPlainTargetingBuild Condition="'$(TargetFrameworks)' == '' AND '$(TargetFramework)' != ''">true</IsPlainTargetingBuild>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- respect environment variable for the nuget packages root otherwise fallback to use the default location -->
|
||||
<NuGetPackageRoot Condition="'$(NuGetPackageRoot)' != ''">$([MSBuild]::NormalizeDirectory('$(NuGetPackageRoot)'))</NuGetPackageRoot>
|
||||
<NuGetPackageRoot Condition="'$(NuGetPackageRoot)' == '' and '$(NUGET_PACKAGES)' != ''">$([MSBuild]::NormalizeDirectory('$(NUGET_PACKAGES)'))</NuGetPackageRoot>
|
||||
<NuGetPackageRoot Condition="'$(NuGetPackageRoot)' == '' and '$(OS)' == 'Windows_NT'">$([MSBuild]::NormalizeDirectory('$(UserProfile)', '.nuget', 'packages'))</NuGetPackageRoot>
|
||||
<NuGetPackageRoot Condition="'$(NuGetPackageRoot)' == '' and '$(OS)' != 'Windows_NT'">$([MSBuild]::NormalizeDirectory('$(HOME)', '.nuget', 'packages'))</NuGetPackageRoot>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(DotNetTool)' == ''">
|
||||
<!-- Respect environment variable for the .NET install directory if set; otherwise, use the repo default location -->
|
||||
<DotNetRoot Condition="'$(DOTNET_INSTALL_DIR)' != ''">$(DOTNET_INSTALL_DIR)</DotNetRoot>
|
||||
<DotNetRoot Condition="'$(DotNetRoot)' != ''">$([MSBuild]::NormalizeDirectory('$(DotNetRoot)'))</DotNetRoot>
|
||||
<DotNetRoot Condition="'$(DotNetRoot)' == ''">$([MSBuild]::NormalizeDirectory('$(RepositoryRoot)', '.dotnet'))</DotNetRoot>
|
||||
|
||||
<!-- let the exec task find dotnet on PATH -->
|
||||
<DotNetRoot Condition="!Exists($(DotNetRoot))" />
|
||||
|
||||
<DotNetTool Condition="'$(OS)' == 'Windows_NT'">$(DotNetRoot)dotnet.exe</DotNetTool>
|
||||
<DotNetTool Condition="'$(OS)' != 'Windows_NT'">$(DotNetRoot)dotnet</DotNetTool>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<PackageOutputPath Condition="'$(IsShippingPackage)' == 'true'">$(ArtifactsShippingPackagesDir)</PackageOutputPath>
|
||||
<PackageOutputPath Condition="'$(IsShippingPackage)' != 'true'">$(ArtifactsInternalPackagesDir)</PackageOutputPath>
|
||||
<!-- workaround for https://github.com/NuGet/Home/issues/12589 -->
|
||||
<NuspecOutputPath>$(IntermediateOutputPath)</NuspecOutputPath>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<RepositoryRoot Condition="'$(RepositoryRoot)' == ''">$([MSBuild]::NormalizeDirectory('$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'global.json'))'))</RepositoryRoot>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<RepositoryEngDir>$([MSBuild]::NormalizeDirectory('$(RepositoryRoot)', 'eng'))</RepositoryEngDir>
|
||||
<RepositoryDocDir>$([MSBuild]::NormalizeDirectory('$(RepositoryRoot)', 'doc'))</RepositoryDocDir>
|
||||
|
||||
<RepositoryEngGitHooksDir>$([MSBuild]::NormalizeDirectory('$(RepositoryEngDir)', 'hooks'))</RepositoryEngGitHooksDir>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<ArtifactsDir Condition="'$(ArtifactsDir)' == ''">$([MSBuild]::NormalizeDirectory('$(RepositoryRoot)', 'artifacts'))</ArtifactsDir>
|
||||
<ArtifactsObjDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'obj'))</ArtifactsObjDir>
|
||||
<ArtifactsBinDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'bin'))</ArtifactsBinDir>
|
||||
<ArtifactsLogDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'log', '$(Configuration)'))</ArtifactsLogDir>
|
||||
<ArtifactsTmpDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'tmp', '$(Configuration)'))</ArtifactsTmpDir>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<UseArtifactsOutput>true</UseArtifactsOutput>
|
||||
<ArtifactsPath>$(ArtifactsDir)</ArtifactsPath>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<ArtifactsPackageDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', '$(ArtifactsPackageOutputName)'))</ArtifactsPackageDir>
|
||||
<ArtifactsPublishDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', '$(ArtifactsPublishOutputName)'))</ArtifactsPublishDir>
|
||||
|
||||
<ArtifactsShippingPackagesDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsPackageDir)', $(ArtifactsPivots), 'shipping'))</ArtifactsShippingPackagesDir>
|
||||
<ArtifactsInternalPackagesDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsPackageDir)', $(ArtifactsPivots), 'internal'))</ArtifactsInternalPackagesDir>
|
||||
</PropertyGroup>
|
||||
</Project>
|
6
src/Geekeey.DotNet.Sdk/sdk/Sdk.props
Normal file
6
src/Geekeey.DotNet.Sdk/sdk/Sdk.props
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<Import Project="Geekeey.DotNet.Sdk.Repository.props" />
|
||||
<Import Project="Geekeey.DotNet.Sdk.Common.props" />
|
||||
<Import Project="Geekeey.DotNet.Sdk.Analyzer.props" />
|
||||
</Project>
|
6
src/Geekeey.DotNet.Sdk/sdk/Sdk.targets
Normal file
6
src/Geekeey.DotNet.Sdk/sdk/Sdk.targets
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<Import Project="Geekeey.DotNet.Sdk.Repository.targets" />
|
||||
<Import Project="Geekeey.DotNet.Sdk.Common.targets" />
|
||||
<Import Project="Geekeey.DotNet.Sdk.Analyzer.targets" />
|
||||
</Project>
|
|
@ -0,0 +1,69 @@
|
|||
<Project>
|
||||
<Target Name="_{TargetPrefix}GatherAnalyzers">
|
||||
|
||||
<ItemGroup>
|
||||
<_{TargetPrefix}Analyzer Include="@(Analyzer)" Condition="'%(Analyzer.NuGetPackageId)' == '{NuGetPackageId}'" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="_{TargetPrefix}AnalyzerMultiTargeting"
|
||||
Condition="'$(SupportsRoslynComponentVersioning)' != 'true'"
|
||||
AfterTargets="ResolvePackageDependenciesForBuild;ResolveNuGetPackageAssets"
|
||||
DependsOnTargets="_{TargetPrefix}GatherAnalyzers">
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Remove our analyzers targeting roslyn4.x -->
|
||||
<Analyzer Remove="@(_{TargetPrefix}Analyzer)"
|
||||
Condition="$([System.String]::Copy('%(_{TargetPrefix}Analyzer.Identity)').IndexOf('roslyn4')) >= 0"/>
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="_{TargetPrefix}RemoveAnalyzers"
|
||||
Condition="'$({DisableSourceGeneratorPropertyName})' == 'true'"
|
||||
AfterTargets="ResolvePackageDependenciesForBuild;ResolveNuGetPackageAssets"
|
||||
DependsOnTargets="_{TargetPrefix}GatherAnalyzers">
|
||||
|
||||
<!-- Remove all our analyzers -->
|
||||
<ItemGroup>
|
||||
<Analyzer Remove="@(_{TargetPrefix}Analyzer)" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<!--
|
||||
Microsoft's mandatory guardian build analysis removes all analyzers, including code generators,
|
||||
from a csproj then adds back only their own. But our projects need generators to build, so we
|
||||
need a mechanism to add them back.
|
||||
|
||||
See: https://dev.azure.com/securitytools/SecurityIntegration/_git/Microsoft.Guardian?path=%2Fsrc%2FMicrosoft.Guardian.RoslynAnalyzers%2FRoslynEnvironment.cs
|
||||
|
||||
Workaround is done in two steps (targets):
|
||||
|
||||
1. We make a snapshot of set of analyzers BEFORE guardian build analysis removes them,
|
||||
but AFTER we have evaluated which of them based on the .NET toolchain we should use
|
||||
(Roslyn3.8 vs. Roslyn4.0 saga).
|
||||
|
||||
2. Re-add subset of analyzers back AFTER guardian build analysis runs but BEFORE core
|
||||
compilation starts, effectively reverting the changes done. Note that this is only
|
||||
done for analyzers that are shipped with this package only.
|
||||
-->
|
||||
<Target Name="_{TargetPrefix}CreateAnalyzerSnapshot"
|
||||
Condition="'$(GdnRoslynAnalyzersRunId)' != ''"
|
||||
AfterTargets="_{TargetPrefix}AnalyzerMultiTargeting;_{TargetPrefix}RemoveAnalyzers">
|
||||
|
||||
<CreateItem Include="@(Analyzer)">
|
||||
<Output ItemName="_{TargetPrefix}AnalyzerSnapshot" TaskParameter="Include"/>
|
||||
</CreateItem>
|
||||
</Target>
|
||||
|
||||
<Target Name="_{TargetPrefix}ReAddCodeGenerators"
|
||||
Condition="'$(GdnRoslynAnalyzersRunId)' != ''"
|
||||
AfterTargets="ResolveCodeAnalysisRuleSet"
|
||||
BeforeTargets="CoreCompile"
|
||||
DependsOnTargets="_{TargetPrefix}CreateAnalyzerSnapshot">
|
||||
|
||||
<ItemGroup>
|
||||
<Analyzer Include="@(_{TargetPrefix}AnalyzerSnapshot)"
|
||||
Condition="'%(_{TargetPrefix}AnalyzerSnapshot.NuGetPackageId)' == '{NuGetPackageId}'"/>
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
</Project>
|
5
src/Geekeey.DotNet.Sdk/src/Program.cs
Normal file
5
src/Geekeey.DotNet.Sdk/src/Program.cs
Normal file
|
@ -0,0 +1,5 @@
|
|||
namespace Geekeey.DotNet.Sdk;
|
||||
|
||||
internal sealed class Program
|
||||
{
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue