获取 WPF 的程序集版本

Getting assembly version of 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 是我的应用程序的占位符。

第一个解决方案:

您可以使用 $(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>

p.s。您可以结合使用这些方法,从一条路径获取一些信息,从另一条路径获取一些信息。在项目文件中定义常量然后从 WIX

访问它的主要 IDEA