这看起来相当简单,但是,获取版本的典型方法仅获取需要手动设置的版本信息,而不是发布的构建版本。
这会导致(如果我从不进入属性并更改项目设置内部的值),版本始终返回 1.0.0.0。事实上,当我右键单击任何发布文件夹中的任何已编译的 .NET exe 时,这也是始终显示的版本。例如:
/publish/1.0.0.2/foo.exe
属性显示 1.0.0.0
,即使它是版本 1.0.0.2
。
我愿意接受能够实现以下任一目的的解决方案:
- 自动将实际文件版本设置为发布时的当前版本。
- 使用 c# 获取实际版本(不是 1.0.0.0)。
不寻找黑客来添加我自己的版本控制系统。我想使用内置的机制(并且在 .NET 的前身中完美运行)。
为了补充说明,自动版本控制在 .NET 中似乎是垃圾,它没有使用发布版本,而是使用内部版本
属性 > 应用 > [装配信息]
提前致谢:)
最佳答案
我认为这可能是您的解决方案:
using System.Reflection;
....
string path = Assembly.GetExecutingAssembly().Location;
FileVersionInfo versioninfo = FileVersionInfo.GetVersionInfo(path);
return fvi.FileVersion; // type: string
这段代码返回 list 文件中设置的程序集版本。它还适用于检索 native 应用程序/库的汇编版本
编辑:如 adv12之前写过,这将是我更新的解决方案:
using System.Deployment;
...
if (ApplicationDeployment.IsNetworkDeployed)
return ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString(4));
关于c# - 在 C# 中获取真实产品版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30627939/