第一个解决方案:
您可以使用 $(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>
你应该指定Assembly文件(dll和exe文件都是.Net的文件,.exe文件也可以在这里指定)。
然后你可以像这里一样使用 BuildVersionVariable:
<Product Id="*"
Name="WixProject1"
Language="1033"
Version="$(var.BuildVersion)"
Manufacturer="WixProject1"
UpgradeCode="c93e09b9-9e8f-444c-a35b-84beb2c3788f">
...
</Product>
附言您可以结合这些方法并从一条路径获取一些信息并从另一条路径获取一些信息。在项目文件中定义常量然后从 WIX 获取访问的主要 IDEA