我有一个简单的解决方案,其中包含一个dll项目(在其他位置进行热加载)。
我需要AssemblyName在每个版本上都是唯一的(由于我在同一应用程序域中执行热重装的方式)。
但是,我还需要AssemblyName保持相同,直到下一次构建之前,这样我才能进行调试(dll身份基于AssemblyName建立)。
我一直在使用一些东西来更新带有当前刻度的csproj中的AssemblyName。但是,这没有我的第二个要求-在项目中执行各种操作(不一定要重建)会刷新IDE中的AssemblyName(我正在使用Rider)。
关于如何实现此目标的任何想法?
答案 0 :(得分:0)
我们需要两点:
Release
上更改程序集名称。release
上更改AssemblyName 在source code部分的.csproj
文件中配置的程序集名称,标签为AssemblyName
。
要仅更改发布的名称,我们需要向PropertyGroup添加竞争:
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<AssemblyName>MyCustomOrDefaultAssemblyName</AssemblyName>
</PropertyGroup>
我们使用PropertyGroup
获得唯一的名称:
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<CurrentDate>$([System.DateTime]::Now.ToString(yyyyMMdd-mmss))</CurrentDate>
<AssemblyName>MyCustom$(CurrentDate)</AssemblyName>
</PropertyGroup>
我们也可以从外部注入名称。如果从命令行进行构建,则可以通过在构建命令中添加DateTime来注入属性,并将该属性用作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%