build: manage version via MinVer with AssemblyInformationalVersion
Uses MinVer to derive the version from git tags (prefix "v"), stored in AssemblyInformationalVersion. Program.cs reads that attribute (stripping the "+sha" build metadata) so the update-check compares against a clean semver. CI overrides the tag via /p:MinVerVersionOverride=$VERSION.
This commit is contained in:
@@ -53,7 +53,7 @@ jobs:
|
|||||||
cd "$WORK/src"
|
cd "$WORK/src"
|
||||||
dotnet publish src/ClaudeDo.App/ClaudeDo.App.csproj \
|
dotnet publish src/ClaudeDo.App/ClaudeDo.App.csproj \
|
||||||
-c Release -r win-x64 --self-contained true \
|
-c Release -r win-x64 --self-contained true \
|
||||||
/p:Version=$VERSION -o out/app
|
/p:MinVerVersionOverride=$VERSION -o out/app
|
||||||
|
|
||||||
- name: Publish ClaudeDo.Worker (win-x64, self-contained)
|
- name: Publish ClaudeDo.Worker (win-x64, self-contained)
|
||||||
env:
|
env:
|
||||||
@@ -65,7 +65,7 @@ jobs:
|
|||||||
cd "$WORK/src"
|
cd "$WORK/src"
|
||||||
dotnet publish src/ClaudeDo.Worker/ClaudeDo.Worker.csproj \
|
dotnet publish src/ClaudeDo.Worker/ClaudeDo.Worker.csproj \
|
||||||
-c Release -r win-x64 --self-contained true \
|
-c Release -r win-x64 --self-contained true \
|
||||||
/p:Version=$VERSION -o out/worker
|
/p:MinVerVersionOverride=$VERSION -o out/worker
|
||||||
|
|
||||||
- name: Publish ClaudeDo.Installer (win-x64, single-file, framework-dependent)
|
- name: Publish ClaudeDo.Installer (win-x64, single-file, framework-dependent)
|
||||||
env:
|
env:
|
||||||
@@ -80,7 +80,7 @@ jobs:
|
|||||||
# Target machines need .NET 8 Desktop Runtime (x64).
|
# Target machines need .NET 8 Desktop Runtime (x64).
|
||||||
dotnet publish src/ClaudeDo.Installer/ClaudeDo.Installer.csproj \
|
dotnet publish src/ClaudeDo.Installer/ClaudeDo.Installer.csproj \
|
||||||
-c Release -r win-x64 --self-contained false \
|
-c Release -r win-x64 --self-contained false \
|
||||||
/p:Version=$VERSION /p:PublishSingleFile=true \
|
/p:MinVerVersionOverride=$VERSION /p:PublishSingleFile=true \
|
||||||
-o out/installer
|
-o out/installer
|
||||||
|
|
||||||
- name: Package assets
|
- name: Package assets
|
||||||
|
|||||||
8
Directory.Build.props
Normal file
8
Directory.Build.props
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<MinVerTagPrefix>v</MinVerTagPrefix>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="MinVer" Version="5.0.0" PrivateAssets="all" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -85,7 +85,10 @@ sealed class Program
|
|||||||
sc.AddSingleton(sp =>
|
sc.AddSingleton(sp =>
|
||||||
{
|
{
|
||||||
var releases = sp.GetRequiredService<IReleaseClient>();
|
var releases = sp.GetRequiredService<IReleaseClient>();
|
||||||
var version = Assembly.GetEntryAssembly()?.GetName().Version?.ToString() ?? "0.0.0.0";
|
var informational = Assembly.GetEntryAssembly()?
|
||||||
|
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;
|
||||||
|
// Strip MinVer build metadata ("+sha") and any prerelease suffix for the update-compare.
|
||||||
|
var version = (informational ?? "0.0.0").Split('+')[0];
|
||||||
return new UpdateCheckService(releases, version);
|
return new UpdateCheckService(releases, version);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user