获取.Net Core 3.1 单文件可执行版本号
Posted
技术标签:
【中文标题】获取.Net Core 3.1 单文件可执行版本号【英文标题】:Get .Net Core 3.1 single-file executable version number 【发布时间】:2020-06-02 17:14:41 【问题描述】:我有一个已发布为单个文件可执行文件的 .Net Core 应用程序。当我在 Visual Studio 中运行以下任何代码时,我得到了预期的结果:
Assembly.GetAssembly(typeof(Installer)).GetName().Version.ToString();
Assembly.GetEntryAssembly().GetName().Version.ToString();
Assembly.GetExecutingAssembly().GetName().Version.ToString();
但是当上述代码在已发布的应用程序(生产中)中运行时,它总是返回“0.0.0.0”
【问题讨论】:
【参考方案1】:你试过了吗?我创建了一个新项目,它似乎工作。
假设您使用的是 Visual Studio 2019。
-
右键项目->添加->新建项目->装配信息文件
然后您将拥有一个 AssemblyInfo.cs 文件,其中包含程序集版本
然后您需要忽略生成的程序集版本,因此您需要将带有 false 的 GenerateAssemblyInfo 添加到您的 .csproj。
右键项目 -> 编辑项目文件 -> 添加 GenerateAssemblyInfo 元素,如下所示:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
</Project>
【讨论】:
【参考方案2】:程序集版本应在您正在编译的项目的属性中设置。
右键项目->属性->包:
【讨论】:
正如我在原始问题中所述,当我“从 Visual Studio 中以调试模式执行代码时,我得到了预期的结果”。因此,我相信我已经正确设置了版本号。顺便说一句,我使用了 Shoejep 建议的方法。我认为挑战与设置版本号无关,而是在应用程序作为独立的单文件可执行文件发布时检索版本号。当发布为独立的单文件可执行文件时,查询版本号的标准方法似乎不起作用。 此外,当我在 Windows 资源管理器中打开 DLL 和可执行文件并查看文件的详细信息时,正确的版本号就在那里......所以再说一次,这不是我没有设置版本号正确。以上是关于获取.Net Core 3.1 单文件可执行版本号的主要内容,如果未能解决你的问题,请参考以下文章
Serilog Net Core 3.1 不创建任何日志文件
.NET Core 3.1 并且无法加载文件或程序集 System.Data.Entity,版本 = 4.0.0.0
在VS2019 / .Net Core 3.1中使用“生产单个文件”发布选项时,是否可以保持appsettings.json可编辑的后期部署?