Постоянно уникальное AssemblyName в каждой сборке - PullRequest
0 голосов
/ 14 января 2019

У меня есть простое решение с одним проектом DLL (горячая перезагрузка в другом месте).

Мне нужно, чтобы AssemblyName был уникальным в каждой сборке (из-за способа, которым я выполняю горячую перезагрузку в том же домене приложения).

Однако мне также нужно, чтобы AssemblyName оставалась неизменной до следующей сборки, поэтому я могу отлаживать (идентификация dll устанавливается на основе AssemblyName).

Я использовал что-то, что обновляло AssemblyName в csproj текущими галочками. Однако это не соответствует моему второму требованию - выполнение различных действий в проекте (не обязательно перестройка) обновляет AssemblyName внутри IDE (я использую Rider).

Есть мысли о том, как этого добиться?

1 Ответ

0 голосов
/ 14 января 2019

Нам нужны две точки:

  1. Изменить имя сборки только на Release.
  2. Создать уникальное имя для сборки.

Менять AssemblyName только на release

Имя сборки, сконфигурированное в файле .csproj, с тегом AssemblyName, в секции PropertyGroup.

Чтобы изменить имя только для Релиз , нам нужно добавить условие в PropertyGroup:

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
  <AssemblyName>MyCustomOrDefaultAssemblyName</AssemblyName>
</PropertyGroup>

Создать уникальное имя для сборки

Мы используем DateTime для получения уникального имени:

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
  <CurrentDate>$([System.DateTime]::Now.ToString(yyyyMMdd-mmss))</CurrentDate>
  <AssemblyName>MyCustom$(CurrentDate)</AssemblyName>
</PropertyGroup>

Мы также можем ввести имя извне. Если мы выполняем сборку из командной строки, мы можем внедрить свойство, добавив /p:name=value к команде построения и использовать свойство как AssemblyName:

csproj файл:

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
  <AssemblyName>$(GeneratedProperty)</AssemblyName>
</PropertyGroup>

Командная строка:

MSBuild /t:Build /p:GeneratedProperty=%TIME:~0,2%.%TIME:~3,2%
dotnet build -c Release -p:GeneratedProperty=%TIME:~0,2%.%TIME:~3,2%
...