首页 > 解决方案 > 获取 WPF 的程序集版本

问题描述

我有一个程序,我刚刚用 wix 构建了一个安装程序,我现在试图获取我的程序的程序集版本,我在教程中查看了 GetAssemblyIdentity,但我看不到我应该如何为我的应用程序执行此操作 quz不是控制台应用程序!我正在看的教程是这个https://www.youtube.com/watch?v=6Yf-eDsRrnM并且在时间戳 1 小时 28 分钟时,他开始查看程序集版本以及如何为您的安装程序获取它们,但我不是真的了解如何使用 wpf 应用程序执行此操作。我到目前为止所尝试的是

<Target Name="BeforeBuild">
<GetAssemblyIdentity AssemblyFiles="..\WPFAPP\bin\$(C)">


</GetAssemblyIdentity>

</Target>
<Target Name="AfterBuild">

WPFAPP 是我的应用程序的占位符。

标签: c#wpfwixversion

解决方案


第一个解决方案:

您可以使用 $(MSBuildProjectName) 所以,指定

<TargetName>$(ProjectName)</TargetName>

在你的 *.csproj

然后您可以使用 $(MSBuildProjectName) 作为程序集名称。要访问此变量,您应该在 wixproj 中编写

<Target Name="BeforeBuild">
  <PropertyGroup>
    <DefineConstants>ProjectName=%(MSBuildProjectName)</DefineConstants>
  </PropertyGroup>
</Target>

你可以在这里看到的可用变量列表

https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-reserved-and-well-known-properties?view=vs-2019

第二个解决方案:

所以,如果你想使用版本。请参见此处的示例。

<Target Name="BeforeBuild">
  <GetAssemblyIdentity AssemblyFiles="..\MyApp\bin\$(Configuration)\MyApp.exe">
    <Output TaskParameter="Assemblies" ItemName="AssemblyVersion" />
  </GetAssemblyIdentity>
  <PropertyGroup>
    <DefineConstants>BuildVersion=%(AssemblyVersion.Version)</DefineConstants>
  </PropertyGroup>
</Target>

您应该指定程序集文件(dll 和 exe 文件都是 .Net 文件,.exe 文件也可以在此处指定)。

然后你可以像这里一样使用 BuildVersionVariable:

<Product Id="*" 
         Name="WixProject1" 
         Language="1033" 
         Version="$(var.BuildVersion)" 
         Manufacturer="WixProject1" 
         UpgradeCode="c93e09b9-9e8f-444c-a35b-84beb2c3788f">
...
</Product>

ps 您可以结合这些方法,从一条路径获取一些信息,从另一条路径获取一些信息。在项目文件中定义常量然后从 WIX 获取访问的主要 IDEA


推荐阅读