gpt4 book ai didi

c# - 动态版本控制

转载 作者:太空狗 更新时间:2023-10-29 19:44:13 25 4
gpt4 key购买 nike

我有一种情况,我希望版本控制在构建时是动态的。

版本模式:<year>.<month>.<day>.<hhmm>

但我已经阅读了在编译时重新解析属性中使用的字符串值的位置。

关于如何完成此动态版本控制的任何建议?

理想情况:

<Assembly: AssemblyVersion("4.0.0.0")> 
<Assembly: AssemblyFileVersion(Year(Now) & "." & Month(Now()) & "." & Day(Now()) & "." & String.format("hhmm", now()))>

我知道这行不通,但应该能说明问题。

最佳答案

您可以使用 MsbuildCommunityTasks生成内部版本号并在预构建时自定义程序集文件版本。

  • MsbuildCommunityTasks 下载压缩包

  • 解压到文件夹 [SolutionFolder]\MsBuildExtensions\MSBuildCommunityTasks

  • 在您的项目 (csproj) 中添加以下示例,就在 Microsoft.CSharp.Targets 导入之后。

  <PropertyGroup>
<MSBuildCommunityTasksPath>$(MSBuildThisFileDirectory)..\MsBuildExtensions\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
<My-PropertiesDir>Properties</My-PropertiesDir>
</PropertyGroup>
<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets"/>
<Target Name="BeforeBuild">
<Time Format="yyyy.MM.dd.HHmm">
<Output TaskParameter="FormattedTime" PropertyName="My-VersionNumber" />
</Time>
<Message Text="Building $(My-VersionNumber) ...">
</Message>
<ItemGroup>
<My-AssemblyInfo Include="$(My-PropertiesDir)\AssemblyVersionInfo.cs" />
<Compile Include="@(My-AssemblyInfo)" />
</ItemGroup>
<MakeDir Directories="$(My-PropertiesDir)" />
<AssemblyInfo OutputFile="@(My-AssemblyInfo)"
CodeLanguage="CS"
AssemblyFileVersion="$(My-VersionNumber)"
AssemblyInformationalVersion="$(My-VersionNumber)"
Condition="$(My-VersionNumber) != '' "
/>
</Target>
<Target Name="AfterBuild">
<Delete Files="@(My-AssemblyInfo)" />
</Target>

  • 从您的 AssemblyInfo.cs 中删除 AssemblyFileVersion 属性。它将在构建时生成。

  • 构建时,您会在控制台上看到打印的版本号。生成的文件在 AfterBuild 目标上被删除,以保持源代码管理干净。

    构建前:

    建筑 2013.01.14.1016 ... 创建了 AssemblyInfo 文件“Properties\AssemblyVersionInfo.cs”。

    (...)

    构建后:

    正在删除文件“Properties\AssemblyVersionInfo.cs”。

  • 如果您想用较少的 msbuild 代码对许多项目执行此操作,则有必要创建一个自定义的构建脚本来包装您的解决方案。

关于c# - 动态版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14203468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com