You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6发布版本下如何获取项目完整属性(产品、版本等)

发布版本下获取完整项目属性的解决方法

问题场景

通过Visual Studio的「生成→发布」构建发布版本时,原代码无法正常读取项目的公司、产品、版本等属性:

var assembly = Assembly.GetExecutingAssembly();
var version = FileVersionInfo.GetVersionInfo(assembly.Location);

该代码因无法访问Assembly失效;仅能通过以下代码获取版本号,但无法获取其他扩展属性:

GetType().Assembly.GetName().Version.ToString();

仅发布版本出现此问题,调试或直接运行代码时一切正常。

可行解决方案

1. 通过程序集特性读取完整属性

利用GetType().Assembly获取当前程序集,再通过对应特性类读取各类元数据属性,这是最可靠的方式:

using System.Reflection;

var assembly = GetType().Assembly;

// 读取版本号
var version = assembly.GetName().Version?.ToString();

// 读取公司名称
var companyAttr = assembly.GetCustomAttribute<AssemblyCompanyAttribute>();
var companyName = companyAttr?.Company;

// 读取产品名称
var productAttr = assembly.GetCustomAttribute<AssemblyProductAttribute>();
var productName = productAttr?.Product;

// 读取版权信息
var copyrightAttr = assembly.GetCustomAttribute<AssemblyCopyrightAttribute>();
var copyright = copyrightAttr?.Copyright;

// 读取项目描述
var descAttr = assembly.GetCustomAttribute<AssemblyDescriptionAttribute>();
var description = descAttr?.Description;

2. 检查发布配置确保属性不丢失

需要确认发布设置未剥离程序集元数据:

  • 右键项目 →「属性」→「应用程序」→「程序集信息」:确认已填写所有需要的属性(公司、产品、版本等),确保信息完整。
  • 右键项目 →「属性」→「发布」→「设置」:在「文件发布选项」中,若勾选了「优化代码」可尝试取消勾选——部分优化策略会移除非必要的元数据属性。
  • 对于.NET Core/.NET 5+项目,检查.csproj文件中的配置,确保自动生成程序集信息:
    <PropertyGroup>
      <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
    </PropertyGroup>
    

3. 备选:通过进程模块路径获取FileVersionInfo

如果发布后能正常访问程序集文件路径,可通过当前进程主模块路径读取FileVersionInfo:

using System.Diagnostics;

var mainModulePath = Process.GetCurrentProcess().MainModule?.FileName;
if (!string.IsNullOrEmpty(mainModulePath))
{
    var fileInfo = FileVersionInfo.GetVersionInfo(mainModulePath);
    var company = fileInfo.CompanyName;
    var product = fileInfo.ProductName;
    var fullVersion = fileInfo.ProductVersion;
}

内容的提问来源于stack exchange,提问作者Fedor Yudin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:52:41