C# 动态版本控制
我希望版本控制在构建时是动态的 版本模式:C# 动态版本控制,c#,vb.net,assemblyfileversion,C#,Vb.net,Assemblyfileversion,我希望版本控制在构建时是动态的 版本模式:… 但是我已经读到属性中使用的字符串值在编译时被重新解析的地方 关于如何完成这个动态版本控制有什么建议吗 理想情况: <Assembly: AssemblyVersion("4.0.0.0")> <Assembly: AssemblyFileVersion(Year(Now) & "." & Month(Now()) & "." & Day(Now()) & "." & String.f
…
但是我已经读到属性中使用的字符串值在编译时被重新解析的地方
关于如何完成这个动态版本控制有什么建议吗
理想情况:
<Assembly: AssemblyVersion("4.0.0.0")>
<Assembly: AssemblyFileVersion(Year(Now) & "." & Month(Now()) & "." & Day(Now()) & "." & String.format("hhmm", now()))>
我知道它不起作用,但应该能解决这个问题。您可以使用生成版本号,并在预生成时自定义程序集文件版本
- 下载zip地址:
- 解压缩到文件夹[SolutionFolder]\MsBuildExtensions\MSBuildCommunityTasks
- 在导入Microsoft.CSharp.Targets之后,将下面的示例添加到您的项目(csproj)中
$(MSBuildThisFileDirectory)…\MsBuildExtensions\MSBuildCommunityTasks
性质
- 从AssemblyInfo.cs中删除AssemblyFileVersion属性。它将在构建时生成
- 构建时,您将看到控制台上打印的版本号。生成的文件将在后生成目标上删除,以保持源代码管理的干净 建造前: 建筑物2013.01.14.1016。。。 已创建AssemblyInfo文件“Properties\AssemblyVersionInfo.cs” (……) 后建: 正在删除文件“Properties\AssemblyVersionInfo.cs”
- 如果要对许多具有较少msbuild代码的项目执行此操作,则需要创建自定义生成脚本来封装解决方案
<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>