gpt4 book ai didi

msbuild - 如何在 MSBuild 中获取基本 msi 安装包 (setup.exe) 的文件版本

转载 作者:行者123 更新时间:2023-12-04 04:46:16 26 4
gpt4 key购买 nike

我有setup.exe。这是一个基本的 MSI 安装包。我使用 InstallShield 来创建它。
如何在 MSBuild 脚本中获取它的 FileVersion?
我无法使用 GetAssemblyIdentity 任务

    <GetAssemblyIdentity AssemblyFiles="setup.exe">
<Output
TaskParameter="Assemblies"
ItemName="MyAssemblyIdentities"/>
</GetAssemblyIdentity>

因为我的 setup.exe 不是程序集并且不包含程序集 list ,所以如果调用此任务会出现错误:

Could not load file or assembly 'setup.exe' or one of its dependencies. The module was expected to contain an assembly manifest.

最佳答案

FileVersionInfo类提供此功能,内联代码允许直接从 MSBuild 使用它:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >

<UsingTask TaskName="GetVersion" TaskFactory="CodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
<ParameterGroup>
<TheFile Required="true" ParameterType="System.String"/>
<TheVersion ParameterType="System.String" Output="true" />
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs">
<![CDATA[
TheVersion = System.Diagnostics.FileVersionInfo.GetVersionInfo( TheFile ).FileVersion;
]]>
</Code>
</Task>
</UsingTask>

<Target Name="DoGetVersion">
<GetVersion TheFile="$(MyAssemblyIdentities)">
<Output PropertyName="FetchedVersion" TaskParameter="TheVersion" />
</GetVersion>
<Message Text="Version = $(FetchedVersion)" />
</Target>

</Project>

关于msbuild - 如何在 MSBuild 中获取基本 msi 安装包 (setup.exe) 的文件版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18122597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com