ПЕРВОЕ РЕШЕНИЕ:
Вы можете использовать $ (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. Вы можете комбинировать этот подход и получать некоторую информацию из одного пути и некоторую информацию из другого. Основная IDEA для определения констант в файле проекта и последующего доступа к нему из WIX