C# 使用C获取NSIS文件版本#

C# 使用C获取NSIS文件版本#,c#,nsis,fileversioninfo,C#,Nsis,Fileversioninfo,我使用NSIS编写了安装程序脚本,并通过VIProductVersion和viadVersionKey命令添加了版本信息。当我查看编译文件的属性时,版本信息就如我所期望的那样存在 我的问题是,当我试图通过C#命令FileVersionInfo.GetVersionInfo(fileName).FileVersion获取版本信息时,它返回一个空字符串 以下是一种快速复制的方法: NSIS脚本 !include LogicLib.nsh !include FileFunc.nsh !define

我使用NSIS编写了安装程序脚本,并通过
VIProductVersion
viadVersionKey
命令添加了版本信息。当我查看编译文件的属性时,版本信息就如我所期望的那样存在

我的问题是,当我试图通过C#命令
FileVersionInfo.GetVersionInfo(fileName).FileVersion
获取版本信息时,它返回一个空字符串

以下是一种快速复制的方法:

NSIS脚本

!include LogicLib.nsh
!include FileFunc.nsh

!define PRODUCT_NAME "Installer"
!define PRODUCT_VERSION "1.0.0.2"

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"

VIProductVersion "${PRODUCT_VERSION}"
VIAddVersionKey ProductVersion "${PRODUCT_VERSION}"

OutFile "Setup.exe"

Section "Installer"
SectionEnd
C#代码

class Program
{
    static void Main(string[] args)
    {
        FileVersionInfo fvi = FileVersionInfo.GetVersionInfo("Setup.exe");

        if (fvi != null)
        {
            Console.WriteLine(string.Format("File Version: {0}", fvi.FileVersion));
        }
        else
        {
            Console.WriteLine("Could not load file version info");
        }

        Console.WriteLine("Press any key to continue...");

        Console.Read();
    }
}
这将提供以下输出:

File Version: 
Press any key to continue...

我需要获得什么才能将
文件版本
解读为
1.0.0.2

我知道我做错了什么。尽管它在属性对话框中看起来是正确的,但我在ViadVersionKey上使用了错误的值。要正确阅读,应使用
viadVersionKey文件版本“${PRODUCT\u VERSION}”