решил синхронизировать 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"
Здравствуйте, RushDevion, Вы писали:
RD>Посмотри https://andrewlock.net/version-vs-versionsuffix-vs-packageversion-what-do-they-all-mean
посмотрел, но вроде version из кода не задать, только каr свойство или аргументом.
RD>>Посмотри https://andrewlock.net/version-vs-versionsuffix-vs-packageversion-what-do-they-all-mean
vaa>посмотрел, но вроде version из кода не задать, только каr свойство или аргументом.
Так Version (свойство) в атрибутах сборки (читай, в коде) никак и не фигурирует
Оно просто используется для генерации FileVersion, AssemblyVersion, InformationalVersion.
Я,честно скажу, не особо вникал в твою задачу.
Но вот сейчас перечитал. Имхо, есть 2 варианта:
1. Удалить *Version-атрибуты из AssemblyInfo.cs. Задавать Version в файле проекта (или в командной строке).
При этом Version-атрибуты сгенерятся автоматом на основе переданного Version. Это рекомендованный способ для .NET Core проектов.
2. Отключить генерацию Version-атрибутов в файле проекта: GenerateAssemblyInfo=false и задавать их по старинке в AssemblyInfo.cs (CI/CD соответственно, должен патчить/генерить этот файл).
Смешивать эти подходы (т.е. задать часть свойств через атрибуты, часть в проекте и пытаться их как-то переопределять через command-line) — не рекомендуется.