Skip to content

Commit ae91ef3

Browse files
committed
2 parents d079f22 + e76f065 commit ae91ef3

File tree

3 files changed

+74
-4
lines changed

3 files changed

+74
-4
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Publish NuGet Package
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*' # Triggers only when a new tag is pushed (e.g., v1.0.0)
7+
8+
jobs:
9+
publish:
10+
runs-on: ubuntu-latest
11+
12+
permissions:
13+
contents: read
14+
15+
steps:
16+
- uses: actions/checkout@v4
17+
18+
- name: Setup .NET
19+
uses: actions/setup-dotnet@v4
20+
with:
21+
dotnet-version: '8.0.x'
22+
23+
- name: Restore dependencies (target project only)
24+
run: dotnet restore "Sharpen.Analyzer/Sharpen.Analyzer/Sharpen.Analyzer/Sharpen.Analyzer.csproj"
25+
26+
- name: Build (target project only)
27+
run: dotnet build "Sharpen.Analyzer/Sharpen.Analyzer/Sharpen.Analyzer/Sharpen.Analyzer.csproj" --configuration Release --no-restore
28+
29+
- name: Pack (target project only)
30+
run: dotnet pack "Sharpen.Analyzer/Sharpen.Analyzer/Sharpen.Analyzer/Sharpen.Analyzer.csproj" --configuration Release --no-build --output nupkgs
31+
32+
- name: Publish to NuGet
33+
run: dotnet nuget push "nupkgs/*.nupkg" --source https://api.nuget.org/v3/index.json --api-key "${{ secrets.NUGET_API_KEY }}" --skip-duplicate

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ x64/
2121
# Local test run logs (vstest blame / diagnostics)
2222
testlog*.txt
2323
testlog.datacollector.*.txt
24-
24+
*.nupkg
2525
*_i.c
2626
*_p.c
2727
*_i.h

Sharpen.Analyzer/Sharpen.Analyzer/Sharpen.Analyzer/Sharpen.Analyzer.csproj

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4+
<!-- Analyzers should target netstandard2.0 for maximum compatibility with the compiler/IDE hosts. -->
45
<TargetFramework>netstandard2.0</TargetFramework>
5-
<IsPackable>false</IsPackable>
6+
67
<Nullable>enable</Nullable>
78
<LangVersion>latest</LangVersion>
89

@@ -11,15 +12,51 @@
1112

1213
<RootNamespace>Sharpen.Analyzer</RootNamespace>
1314
<AssemblyName>Sharpen.Analyzer</AssemblyName>
15+
16+
<!-- NuGet packaging (Roslyn analyzer) -->
17+
<IsPackable>true</IsPackable>
18+
<PackageId>Sharpen.Analyzer</PackageId>
19+
<VersionPrefix>0.1.0</VersionPrefix>
20+
<Authors>Jean Fischer</Authors>
21+
<Description>Roslyn analyzers + code fixes to help modernize C# codebases.</Description>
22+
<PackageTags>roslyn;analyzer;codefix;csharp</PackageTags>
23+
<PackageProjectUrl>https://github.com/Jean-Fischer/sharpen.analyzer</PackageProjectUrl>
24+
<RepositoryUrl>https://github.com/Jean-Fischer/sharpen.analyzer</RepositoryUrl>
25+
<RepositoryType>git</RepositoryType>
26+
<PackageReadmeFile>Readme.md</PackageReadmeFile>
27+
<PackageLicenseExpression>MIT</PackageLicenseExpression>
28+
29+
<!-- Do not put the analyzer assembly under lib/. We'll pack it under analyzers/dotnet/cs instead. -->
30+
<IncludeBuildOutput>false</IncludeBuildOutput>
31+
<NoPackageAnalysis>true</NoPackageAnalysis>
1432
</PropertyGroup>
1533

1634
<ItemGroup>
1735
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4">
1836
<PrivateAssets>all</PrivateAssets>
1937
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2038
</PackageReference>
21-
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0"/>
22-
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.12.0"/>
39+
40+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0">
41+
<PrivateAssets>all</PrivateAssets>
42+
</PackageReference>
43+
44+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.12.0">
45+
<PrivateAssets>all</PrivateAssets>
46+
</PackageReference>
47+
</ItemGroup>
48+
49+
<ItemGroup>
50+
<!-- Pack the analyzer assembly in the conventional analyzer location. -->
51+
<None Include="$(OutputPath)$(AssemblyName).dll"
52+
Pack="true"
53+
PackagePath="analyzers/dotnet/cs"
54+
Visible="false" />
55+
56+
<!-- Do not include markdown files in the NuGet package. -->
57+
<None Update="AnalyzerReleases.Shipped.md" Pack="false" />
58+
<None Update="AnalyzerReleases.Unshipped.md" Pack="false" />
59+
<None Update="Readme.md" Pack="false" />
2360
</ItemGroup>
2461

2562
<ItemGroup>

0 commit comments

Comments
 (0)