如何在AssemblyInfo.tt中引用GitHub Workflow的GitHub_Run_ID环境变量?
在AssemblyInfo.tt中获取GitHub Workflow的GITHUB_RUN_ID环境变量
这个需求完全可行,GitHub Actions会将预设环境变量注入构建进程,而T4模板可以直接访问系统环境变量,具体实现步骤如下:
1. 修改AssemblyInfo.tt模板读取环境变量
在T4模板中插入C#代码块读取GITHUB_RUN_ID,并将其注入生成的AssemblyInfo.cs中。示例代码如下:
<#@ template language="C#" #> <#@ output extension=".cs" #> <# // 读取GitHub Actions环境变量,本地开发时用默认值兜底 string githubRunId = Environment.GetEnvironmentVariable("GITHUB_RUN_ID") ?? "LocalBuild"; #> using System.Reflection; // 将GitHub Run ID注入到程序集元数据中 [assembly: AssemblyMetadata("GitHubRunId", "<#= githubRunId #>")] // 或者替换到版本信息中 [assembly: AssemblyInformationalVersion("1.0.0.<#= githubRunId #>")] // 其他原有AssemblyInfo配置...
2. 确保构建过程自动执行T4模板转换
在项目的.csproj文件中添加配置,让MSBuild/dotnet build在构建时自动运行T4模板生成代码:
<ItemGroup> <None Include="AssemblyInfo.tt"> <Generator>TextTemplatingFileGenerator</Generator> <LastGenOutput>AssemblyInfo.cs</LastGenOutput> </None> </ItemGroup>
3. GitHub Workflow配置无需额外操作
GitHub Actions的GITHUB_RUN_ID是预设环境变量,会自动注入到构建进程中。你的Workflow构建步骤只需正常执行构建命令即可,示例:
jobs: build-and-deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' - name: Build application run: dotnet build --configuration Release # 后续部署步骤...
注意事项
- 本地开发时,
GITHUB_RUN_ID环境变量不存在,模板中必须设置默认值(如示例中的LocalBuild),避免生成失败。 - 若使用Visual Studio开发,确保已安装T4模板工具,否则手动保存模板时不会自动生成代码。
内容的提问来源于stack exchange,提问作者SuperVillainPresident
相关产品推荐
相关产品推荐

