如何为DotNet函数应用设置类似Web应用的程序集版本
.NET函数应用构建时设置版本并运行时读取的解决方案
一、修改发布命令传递版本号
你可以直接沿用Web应用的参数传递方式,在现有发布命令中添加-p:Version=$(version)参数,修改后的命令如下:
dotnet publish -c Release -p:UseAppHost=false -p:Version=$(version) -o buildFolder project.csproj
该参数会将指定的版本号注入到你的项目程序集信息中,逻辑和Web应用完全一致。
二、调整运行时读取版本的代码
之前读取到函数运行时版本的原因是:Assembly.GetEntryAssembly()返回的是Azure Functions宿主的程序集,而非你自己的项目程序集。需要改为读取你项目代码所属的程序集,以下是两种可靠的实现方式:
方法1:通过当前函数类的程序集读取
假设你的函数类为SampleFunction,可以直接通过该类的类型信息获取程序集版本:
using System.Reflection; string version = typeof(SampleFunction).Assembly.GetName().Version.ToString();
方法2:通过程序集名称直接加载读取
如果你明确知道项目的程序集名称(通常与项目名称一致),也可以直接加载指定程序集获取版本:
using System.Reflection; string version = Assembly.Load("YourProjectAssemblyName").GetName().Version.ToString();
三、Visual Studio中设置版本的注意事项
如果在Visual Studio中通过项目属性设置程序集版本,需确保SDK风格的项目文件中已包含版本关联配置(默认已自动生成):
<PropertyGroup> <Version>1.0.0.0</Version> </PropertyGroup>
你也可以通过「项目属性→打包→版本」可视化界面设置,设置后的版本会在发布时自动注入到程序集,无需额外修改命令。
内容的提问来源于stack exchange,提问作者Rakesh T.R
相关产品推荐
相关产品推荐

