This PR adds GitHub Actions automation for NfcAime.Dll so tag pushes produce a release artifact with commit history since the previous release, while regular commits run build-only validation without publishing.
Tag-triggered release pipeline
New workflow: .github/workflows/release-on-tag.yml
Triggers on tag push (on.push.tags: ['*'])
Builds src/NfcAime.Dll/NfcAime.Dll.csproj in Release with PlatformTarget=x64
This PR adds GitHub Actions automation for `NfcAime.Dll` so tag pushes produce a release artifact with commit history since the previous release, while regular commits run build-only validation without publishing.
- **Tag-triggered release pipeline**
- New workflow: `.github/workflows/release-on-tag.yml`
- Triggers on tag push (`on.push.tags: ['*']`)
- Builds `src/NfcAime.Dll/NfcAime.Dll.csproj` in `Release` with `PlatformTarget=x64`
- Disables project-reference builds (`BuildProjectReferences=false`)
- Creates/updates GitHub Release and uploads `NfcAime.Dll.dll`
- **Release notes with delta commits**
- Computes previous tag and generates release notes from `prevTag..currentTag`
- Adds commit list into release body (fallback for first tag supported)
- **Per-commit build-only workflow**
- New workflow: `.github/workflows/build-on-commit.yml`
- Triggers on non-tag `push`
- Builds the same DLL target/configuration but does not publish a release
- Uploads built DLL as workflow artifact for inspection/use
- **Workflow security/permissions**
- Explicit `permissions` set per workflow
- release workflow: `contents: write` (required for release creation/upload)
- commit-build workflow: `contents: read`
```yaml
- name: Build NfcAime.Dll (x64, no project references)
run: msbuild .\src\NfcAime.Dll\NfcAime.Dll.csproj ^
/p:Configuration=Release ^
/p:Platform="Any CPU" ^
/p:PlatformTarget=x64 ^
/p:BuildProjectReferences=false
```
copilot-pull-request-reviewer[bot]
(Migrated from github.com)
reviewed 2026-05-18 13:09:21 -04:00
copilot-pull-request-reviewer[bot]
(Migrated from github.com)
left a comment
Copy Link
Copy Source
Pull request overview
This PR introduces GitHub Actions CI automation to build NfcAime.Dll on every commit and to publish a GitHub Release (including generated commit delta notes) when a tag is pushed.
Changes:
Added a tag-triggered workflow to build NfcAime.Dll and create/update a GitHub Release with the built DLL attached.
Added a push-triggered (non-tag) workflow to build NfcAime.Dll and upload it as a workflow artifact.
Added release-note generation logic that summarizes commits since the previous tag (with a first-release fallback).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
File
Description
.github/workflows/release-on-tag.yml
Builds on tag pushes, generates commit-based release notes, creates a GitHub Release, and uploads the DLL artifact.
.github/workflows/build-on-commit.yml
Builds on non-tag pushes and uploads the built DLL as a workflow artifact for validation/inspection.
Comments suppressed due to low confidence (1)
.github/workflows/release-on-tag.yml:45
In the first-tag fallback branch, $range = $currentTag makes git log $range include the full history reachable from that tag (not just commits “in” the tag). The generated heading ## Commits in $currentTag is misleading; consider renaming it to something like “Commits up to …” or adjusting the range logic if you want a different behavior for the initial release.
$commitTitle = "## Commits since $prevTag"
} else {
$range = $currentTag
$commitTitle = "## Commits in $currentTag"
}
## Pull request overview
This PR introduces GitHub Actions CI automation to build `NfcAime.Dll` on every commit and to publish a GitHub Release (including generated commit delta notes) when a tag is pushed.
**Changes:**
- Added a tag-triggered workflow to build `NfcAime.Dll` and create/update a GitHub Release with the built DLL attached.
- Added a push-triggered (non-tag) workflow to build `NfcAime.Dll` and upload it as a workflow artifact.
- Added release-note generation logic that summarizes commits since the previous tag (with a first-release fallback).
### Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
| ---- | ----------- |
| .github/workflows/release-on-tag.yml | Builds on tag pushes, generates commit-based release notes, creates a GitHub Release, and uploads the DLL artifact. |
| .github/workflows/build-on-commit.yml | Builds on non-tag pushes and uploads the built DLL as a workflow artifact for validation/inspection. |
<details>
<summary>Comments suppressed due to low confidence (1)</summary>
**.github/workflows/release-on-tag.yml:45**
* In the first-tag fallback branch, `$range = $currentTag` makes `git log $range` include the full history reachable from that tag (not just commits “in” the tag). The generated heading `## Commits in $currentTag` is misleading; consider renaming it to something like “Commits up to …” or adjusting the range logic if you want a different behavior for the initial release.
```
$commitTitle = "## Commits since $prevTag"
} else {
$range = $currentTag
$commitTitle = "## Commits in $currentTag"
}
```
</details>
---
💡 <a href="/zhicheng233/PN532-Aime-Reader/new/master?filename=.github/instructions/*.instructions.md" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Add Copilot custom instructions</a> for smarter, more guided reviews. <a href="https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Learn how to get started</a>.
Same issue as the release workflow: /p:Platform="Any CPU" likely won’t match the project’s Release|AnyCPU condition in NfcAime.Dll.csproj. This can lead to a non-Release configuration being effectively used and/or output landing somewhere other than the expected bin/Release path. Remove /p:Platform or change it to /p:Platform=AnyCPU.
Same issue as the release workflow: `/p:Platform="Any CPU"` likely won’t match the project’s `Release|AnyCPU` condition in `NfcAime.Dll.csproj`. This can lead to a non-Release configuration being effectively used and/or output landing somewhere other than the expected `bin/Release` path. Remove `/p:Platform` or change it to `/p:Platform=AnyCPU`.
The MSBuild invocation passes /p:Platform="Any CPU", but NfcAime.Dll.csproj uses AnyCPU (no space) in its configuration conditions (e.g., Release|AnyCPU). With Platform="Any CPU", the intended Release property group may not apply (Optimize/DefineConstants/OutputPath), and the built DLL may not match the expected settings. Prefer removing /p:Platform entirely (letting the project default to AnyCPU) or set /p:Platform=AnyCPU.
This issue also appears on line 41 of the same file.
The MSBuild invocation passes `/p:Platform="Any CPU"`, but `NfcAime.Dll.csproj` uses `AnyCPU` (no space) in its configuration conditions (e.g., `Release|AnyCPU`). With `Platform="Any CPU"`, the intended Release property group may not apply (Optimize/DefineConstants/OutputPath), and the built DLL may not match the expected settings. Prefer removing `/p:Platform` entirely (letting the project default to AnyCPU) or set `/p:Platform=AnyCPU`.
This issue also appears on line 41 of the same file.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR adds GitHub Actions automation for
NfcAime.Dllso tag pushes produce a release artifact with commit history since the previous release, while regular commits run build-only validation without publishing.Tag-triggered release pipeline
.github/workflows/release-on-tag.ymlon.push.tags: ['*'])src/NfcAime.Dll/NfcAime.Dll.csprojinReleasewithPlatformTarget=x64BuildProjectReferences=false)NfcAime.Dll.dllRelease notes with delta commits
prevTag..currentTagPer-commit build-only workflow
.github/workflows/build-on-commit.ymlpushWorkflow security/permissions
permissionsset per workflowcontents: write(required for release creation/upload)contents: readPull request overview
This PR introduces GitHub Actions CI automation to build
NfcAime.Dllon every commit and to publish a GitHub Release (including generated commit delta notes) when a tag is pushed.Changes:
NfcAime.Dlland create/update a GitHub Release with the built DLL attached.NfcAime.Dlland upload it as a workflow artifact.Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
.github/workflows/release-on-tag.yml:45
$range = $currentTagmakesgit log $rangeinclude the full history reachable from that tag (not just commits “in” the tag). The generated heading## Commits in $currentTagis misleading; consider renaming it to something like “Commits up to …” or adjusting the range logic if you want a different behavior for the initial release.💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
@@ -0,0 +26,4 @@run: nuget restore .\\PN532-Aime-Reader.sln- name: Build NfcAime.Dll (x64, no project references)run: msbuild .\\src\\NfcAime.Dll\\NfcAime.Dll.csproj /p:Configuration=Release /p:Platform="Any CPU" /p:PlatformTarget=x64 /p:BuildProjectReferences=falseSame issue as the release workflow:
/p:Platform="Any CPU"likely won’t match the project’sRelease|AnyCPUcondition inNfcAime.Dll.csproj. This can lead to a non-Release configuration being effectively used and/or output landing somewhere other than the expectedbin/Releasepath. Remove/p:Platformor change it to/p:Platform=AnyCPU.@@ -0,0 +28,4 @@run: nuget restore .\\PN532-Aime-Reader.sln- name: Build NfcAime.Dll (x64, no project references)run: msbuild .\\src\\NfcAime.Dll\\NfcAime.Dll.csproj /p:Configuration=Release /p:Platform="Any CPU" /p:PlatformTarget=x64 /p:BuildProjectReferences=falseThe MSBuild invocation passes
/p:Platform="Any CPU", butNfcAime.Dll.csprojusesAnyCPU(no space) in its configuration conditions (e.g.,Release|AnyCPU). WithPlatform="Any CPU", the intended Release property group may not apply (Optimize/DefineConstants/OutputPath), and the built DLL may not match the expected settings. Prefer removing/p:Platformentirely (letting the project default to AnyCPU) or set/p:Platform=AnyCPU.This issue also appears on line 41 of the same file.