решил синхронизировать AssemblyVersion c Version который юзается при публикации(кстати, в чем суть этой версии?
она пишется в метаданные сборки?).
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Version Condition=" $(AssemblyVersion) != '' ">$(AssemblyVersion.SubString(0,$(AssemblyVersion.LastIndexOf('.'))))</Version>
</PropertyGroup>
<Target Name="OnPublish" AfterTargets="Build">
<Message Text="START BUILD TO ZIP $(AssemblyVersion)" Importance="high" />
</Target>
</Project>
AssemblyVersion всегда пуст!
при этом команда
dotnet publish /p:AssemblyVersion=4.3.2.1 -v 5 успешно задает значение,
но в свойствах exe красуется номер из атрибута установленного в .cs.
Никак не обойти?
не хочется копированием заниматься.
Вот так удалось задать Version, но публикация остается 1.0.0
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<Target Name="OnBuild" BeforeTargets="Build">
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output TaskParameter="Assemblies" ItemName="fooAssemblyInfo"/>
</GetAssemblyIdentity>
<PropertyGroup>
<ApplicationVersion>%(fooAssemblyInfo.Version)</ApplicationVersion>
</PropertyGroup>
<PropertyGroup>
<Version Condition=" $(ApplicationVersion) != '' ">$(ApplicationVersion.SubString(0,$(ApplicationVersion.LastIndexOf('.'))))</Version>
</PropertyGroup>
<Message Text="AFTER $(Version)" Importance="high" />
</Target>
<Target Name="OnPublish" BeforeTargets="Publish" AfterTargets="Build">
<Message Text="START PUBLISH $(TargetPath) AS $(Version)" Importance="high" />
</Target>
</Project>
РЕШЕНО: <Target Name="OnBuild" BeforeTargets="Build"> заменил на
BeforeTargets="Compile"