msbuild vs reflection
От: vaa  
Дата: 20.05.22 03:15
Оценка:
решил синхронизировать 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"
☭ ✊ В мире нет ничего, кроме движущейся материи.
Отредактировано 20.05.2022 4:17 Разраб . Предыдущая версия . Еще …
Отредактировано 20.05.2022 4:05 Разраб . Предыдущая версия .
Отредактировано 20.05.2022 3:47 Разраб . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.