I am trying to update many different projects in a solution in order to have a new version number. Is there an easy way to synchronize the version number in all fileversion and clickonce options?
Answer
Finally, I solved the problem by writing a small tool:
Sub Main() Try Console.WriteLine("Updating version numbers") Dim strPath As String = System.AppDomain.CurrentDomain.BaseDirectory() Dim strAppName As String = "" Console.WriteLine(strPath) If My.Application.CommandLineArgs.Count > 0 Then Console.WriteLine(My.Application.CommandLineArgs(0)) strPath = My.Application.CommandLineArgs(0) strAppName = My.Application.CommandLineArgs(1) Else strPath = "C:\Projects\APP\" Console.WriteLine("Error loading settings") End If Dim strAssemblyInfoFile As String = strPath + "Properties\AssemblyInfo.cs" If Not File.Exists(strAssemblyInfoFile) Then strAssemblyInfoFile = strPath + "My Project\AssemblyInfo.vb" End If Console.WriteLine("Loading " + strAssemblyInfoFile) Dim strFileContent As String strFileContent = ReadFileText(strAssemblyInfoFile) Dim AssemblyVersionRegex As New Regex("AssemblyVersion(?:Attribute)?\(\s*?""(?<version>(?<major>[0-9]+)\.(?<minor>[0-9]+)\.(?<build>[0-9]+)\.(?<revision>[0-9]+))""\s*?\)") Dim strOldVersion As String = AssemblyVersionRegex.Match(strFileContent).Groups("version").Value Dim oldVersion As New Version(strOldVersion) Dim newVersion As New Version(oldVersion.Major.ToString + "." + oldVersion.Minor.ToString + "." + oldVersion.MajorRevision.ToString + "." + (oldVersion.MinorRevision + 1).ToString) Dim strNewVersion As String = newVersion.ToString() Console.WriteLine("Newversion " + strNewVersion) 'Replace oldversion to newversion strFileContent = strFileContent.Replace(strOldVersion, strNewVersion) File.WriteAllText(strAssemblyInfoFile, strFileContent) Dim strProjectFile As String = strPath + strAppName + ".csproj" If Not File.Exists(strProjectFile) Then strProjectFile = strPath + strAppName + ".vbproj" End If Console.WriteLine("Loading " + strProjectFile) strFileContent = File.ReadAllText(strProjectFile) strFileContent = strFileContent.Replace(strOldVersion, strNewVersion) Dim strOld As String = "<ApplicationRevision>" + oldVersion.MinorRevision.ToString() + "</ApplicationRevision>" Dim strNew As String = "<ApplicationRevision>" + (oldVersion.MinorRevision + 1).ToString() + "</ApplicationRevision>" strFileContent = strFileContent.Replace(strOld, strNew) SaveFile(strProjectFile, strFileContent) Console.WriteLine("Done") Catch ex As Exception Console.WriteLine(ex.Message) End Try End Sub Function ReadFileText(ByVal strFilePath As String) As String Return File.ReadAllText(strFilePath) End Function Sub SaveFile(ByVal strFilePath As String, ByVal strData As String) File.WriteAllText(strFilePath, strData) End Sub
source share