コード例 #1
0
        /// <summary>
        ///   Moves selected item up or down.
        /// </summary>
        /// <param name="direction"></param>
        private void MoveSelectedItem(MoveDirection direction)
        {
            Debug.Assert(m_checkedListBoxVersions.SelectedItems.Count == 1);
            int  index              = m_checkedListBoxVersions.SelectedIndex;
            bool isChecked          = m_checkedListBoxVersions.GetItemChecked(index);
            AssemblyVersionType avt = (AssemblyVersionType)m_checkedListBoxVersions.Items[index];

            m_checkedListBoxVersions.Items.RemoveAt(index);
            int newIndex = index;

            switch (direction)
            {
            case MoveDirection.Down:
                newIndex++;
                break;

            case MoveDirection.Up:
                newIndex--;
                break;

            default:
                Debug.Assert(false, "Not supported MoveDirection");
                break;
            }
            m_checkedListBoxVersions.Items.Insert(newIndex, avt);
            m_checkedListBoxVersions.SetItemChecked(newIndex, isChecked);
            m_checkedListBoxVersions.SelectedIndex = newIndex;
        }
コード例 #2
0
 public void SetUpdated(ProjectInfo projectInfo, AssemblyVersionType versionType, string newVersion)
 {
     Debug.Assert(Contains(projectInfo));
     this[projectInfo].UpdateState = UpdateState.Updated;
     this[projectInfo][versionType].UpdateState = UpdateState.Updated;
     this[projectInfo][versionType].Version     = newVersion;
 }
コード例 #3
0
        /// <summary>
        ///   Extracts version string from resource file content.
        /// </summary>
        /// <param name="versionType">
        ///   Version type to search. Can be AssemblyFileVersion or
        ///   AssemblyInformationalVersion, corresponding to FILEVERSION and
        ///   PRODUCTVERSION respectively.
        /// </param>
        /// <returns>
        ///   Version string found.
        /// </returns>
        protected override string GetVersionString(AssemblyVersionType versionType)
        {
            Debug.Assert(versionType != AssemblyVersionType.AssemblyVersion && versionType != AssemblyVersionType.All);
            // if VS_VERSION_INFO header not found, there is no valid version
            Regex regex = new Regex(VersionInfoHeaderLine, RegexOptions.Multiline);
            Match match = regex.Match(m_fileContent);

            if (!match.Success)
            {
                return("");
            }
            int    offset  = match.Index + match.Length;
            string pattern = "";

            switch (versionType)
            {
            case AssemblyVersionType.AssemblyFileVersion:
                pattern = StartOfLine + FileVersionCaps + OneOrMoreWhitespacePattern + VersionPattern;
                break;

            case AssemblyVersionType.AssemblyInformationalVersion:
                pattern = StartOfLine + ProductVersionCaps + OneOrMoreWhitespacePattern + VersionPattern;
                break;

            default:
                Debug.Assert(false, string.Format("Illegal versionName: {0}", versionType.ToString()));
                break;
            }
            regex = new Regex(pattern, RegexOptions.Multiline);
            match = regex.Match(m_fileContent, offset);
            Debug.Assert(match.Value.Length > 0);
            return(match.Value);
        }
コード例 #4
0
        /// <summary>
        ///   Determines if one of <c>AssemblyVersionType</c> assembly infos
        ///   should be updated.
        /// </summary>
        /// <param name="projectInfo">
        ///   <c>ProjectInfo</c> for the project that is considered.
        /// </param>
        /// <param name="assemblyVersionType">
        ///   <c>AssemblyVersionType</c> for which version update is determined.
        /// </param>
        /// <param name="highestProjectVersion">
        ///   Highest <c>ProjectVersion</c> used as a reference for update.
        /// </param>
        /// <returns>
        ///   <c>true</c> if version should be incremented.
        /// </returns>
        private bool ShouldUpdateOneOfAssemblyVersionTypes(ProjectInfo projectInfo, AssemblyVersionType assemblyVersionType, ProjectVersion highestProjectVersion)
        {
            Debug.Assert(assemblyVersionType == AssemblyVersionType.AssemblyVersion || assemblyVersionType == AssemblyVersionType.AssemblyFileVersion || assemblyVersionType == AssemblyVersionType.AssemblyInformationalVersion);
            // first check if corresponding assembly version type exists at all
            if (projectInfo.CurrentAssemblyVersions[assemblyVersionType] == ProjectVersion.Empty)
            {
                return(false);
            }
            // else, depending on settings
            switch (m_numberingOptions.BatchCommandIncrementScheme)
            {
            case (BatchCommandIncrementScheme.IncrementModifiedIndependently):
                return(projectInfo.IsMarkedForUpdate(assemblyVersionType));

            case (BatchCommandIncrementScheme.IncrementAllIndependently):
                return(true);

            case (BatchCommandIncrementScheme.IncrementModifiedOnlyAndSynchronize):
                int resetBuildAndRevisionValues = (int)m_numberingOptions.ResetBuildAndRevisionTo;
                return(projectInfo.Modified || ProjectVersion.ApplyVersionPattern(highestProjectVersion.ToString(), projectInfo.CurrentAssemblyVersions[assemblyVersionType].ToString(), resetBuildAndRevisionValues) != projectInfo.CurrentAssemblyVersions[assemblyVersionType].ToString());//projectInfo.CurrentAssemblyVersions[assemblyVersionType] < highestProjectVersion;

            case (BatchCommandIncrementScheme.IncrementAllAndSynchronize):
                int buildAndRevisionResetValue = (int)m_numberingOptions.ResetBuildAndRevisionTo;
                return(ProjectVersion.ApplyVersionPattern(highestProjectVersion.ToString(), projectInfo.CurrentAssemblyVersions[assemblyVersionType].ToString(), buildAndRevisionResetValue) != projectInfo.CurrentAssemblyVersions[assemblyVersionType].ToString()); // projectInfo.CurrentAssemblyVersions[assemblyVersionType] < highestProjectVersion;
            }
            Debug.Assert(false, "Not supported option");
            return(false);
        }
コード例 #5
0
ファイル: AssemblyVersionTests.cs プロジェクト: ywscr/NLog
        public void AssemblyVersionFormatAndTypeTest(AssemblyVersionType type, string format, string expected)
        {
            LogManager.Configuration = XmlLoggingConfiguration.CreateFromXmlString(@"
            <nlog>
                <targets><target name='debug' type='Debug' layout='${message:withException=true}|${assembly-version:type=" + type.ToString().ToLower() + @":format=" + format + @"}' /></targets>
                <rules><logger name='*' minlevel='Debug' writeTo='debug' /></rules>
            </nlog>");
            var logger             = LogManager.GetLogger("SomeLogger");
            var compiledAssembly   = TestAssembly.Value;
            var testLoggerType     = compiledAssembly.GetType("LogTester.LoggerTest");
            var logMethod          = testLoggerType.GetMethod("TestLog");
            var testLoggerInstance = Activator.CreateInstance(testLoggerType);

            logMethod.Invoke(testLoggerInstance, new object[] { logger, compiledAssembly });

            var lastMessage  = GetDebugLastMessage("debug");
            var messageParts = lastMessage.Split('|');
            var logMessage   = messageParts[0];
            var logVersion   = messageParts[1];

            if (logMessage.StartsWith("Skip:"))
            {
                _testOutputHelper.WriteLine(logMessage);
            }
            else
            {
                Assert.StartsWith("Pass:", logMessage);
                Assert.Equal(expected, logVersion);
            }
        }
コード例 #6
0
        protected override string GetVersionString(AssemblyVersionType versionType)
        {
            Debug.Assert(versionType != AssemblyVersionType.AssemblyVersion && versionType != AssemblyVersionType.All);
            int   pos   = GetMatchPosition(ProductVersionLinePattern, 0);
            Regex regex = new Regex(VersionPattern);

            return(regex.Match(m_fileContent, pos + 1).Value);
        }
コード例 #7
0
 public ProjectVersion this[AssemblyVersionType type] {
     get {
         Debug.Assert(type != AssemblyVersionType.All);
         return((ProjectVersion)m_versions[type]);
     }
     set {
         Debug.Assert(type != AssemblyVersionType.All);
         m_versions[type] = value;
     }
 }
コード例 #8
0
        protected void SetVersionString(AssemblyVersionType versionType, string newVersion)
        {
            string entireAttributeString = GetVersionString(versionType);

            Debug.Assert(entireAttributeString.Length > 0);
            Regex  regex            = new Regex(QuotesEnclosedPattern);
            string newVersionString = regex.Replace(entireAttributeString, string.Format(CultureInfo.CurrentCulture, "\"{0}\"", newVersion), 1);

            Debug.Assert(newVersionString.Length > 0);
            m_fileContent = m_fileContent.Replace(entireAttributeString, newVersionString);
            Debug.Assert(m_fileContent.IndexOf(newVersionString) != -1);
        }
コード例 #9
0
        public override void SaveVersion(AssemblyVersionType typeToSave, string newVersion)
        {
            Debug.Assert(typeToSave == AssemblyVersionType.AssemblyInformationalVersion);
            int   pos   = GetMatchPosition(ProductVersionLinePattern, 0);
            Regex regex = new Regex(VersionPattern);

            m_fileContent = regex.Replace(m_fileContent, newVersion, 1, pos + 1);
            if (ConfigurationPersister.Instance.Configuration.NumberingOptions.GeneratePackageAndProductCodes)
            {
                ModifyPackageAndProductCodes();
            }
            FileUtil.SaveTextFile(Filename, m_fileContent, m_encoding);
        }
コード例 #10
0
 /// <summary>
 ///   Saves version to corresponding files.
 /// </summary>
 /// <param name="newVersion">
 ///   New version string to be saved.
 /// </param>
 /// <param name="numberingOptions">
 ///   Numbering options.
 /// </param>
 public bool Save(AssemblyVersionType versionTypeToSave, string newVersion)
 {
     foreach (VersionStream vs in m_versionStreams)
     {
         try {
             vs.SaveVersion(versionTypeToSave, newVersion);
         }
         catch (Exception) {
             MessageBox.Show(s_txtCannotSaveFile + Environment.NewLine + vs.Filename, s_txtSaveErrorTitle);
             return(false);
         }
     }
     return(true);
 }
コード例 #11
0
 public void Increment(AssemblyVersionType typeToIncrement, NumberingOptions numberingOptions)
 {
     if ((typeToIncrement & AssemblyVersionType.AssemblyVersion) != 0)
     {
         this[AssemblyVersionType.AssemblyVersion].Increment(numberingOptions);
     }
     if ((typeToIncrement & AssemblyVersionType.AssemblyFileVersion) != 0)
     {
         this[AssemblyVersionType.AssemblyFileVersion].Increment(numberingOptions);
     }
     if ((typeToIncrement & AssemblyVersionType.AssemblyInformationalVersion) != 0)
     {
         this[AssemblyVersionType.AssemblyInformationalVersion].Increment(numberingOptions);
     }
 }
コード例 #12
0
        /// <summary>
        ///   Selects the listview with corresponding assembly version type.
        /// </summary>
        /// <param name="assemblyVersionType">
        ///   <c>AssemblyVersionType</c> for which listview should be selected.
        /// </param>
        public void SelectListView(AssemblyVersionType assemblyVersionType)
        {
            switch (assemblyVersionType)
            {
            case AssemblyVersionType.AssemblyVersion:
                m_radioButtonAssemblyVersions.PerformClick();
                break;

            case AssemblyVersionType.AssemblyFileVersion:
                m_radioButtonAssemblyFileVersions.PerformClick();
                break;

            case AssemblyVersionType.AssemblyInformationalVersion:
                m_radioButtonAssemblyInformationalVersions.PerformClick();
                break;
            }
        }
コード例 #13
0
 /// <summary>
 ///   Saves version to resource file.
 /// </summary>
 /// <param name="typeToSave">
 ///   Flags specifying which versions to save.
 /// </param>
 /// <param name="newVersion">
 ///   New version to save.
 /// </param>
 public override void SaveVersion(AssemblyVersionType typeToSave, string newVersion)
 {
     Debug.Assert(typeToSave != AssemblyVersionType.All);
     if (typeToSave == AssemblyVersionType.AssemblyVersion)
     {
         return;
     }
     if (typeToSave == AssemblyVersionType.AssemblyFileVersion)
     {
         SetHeaderVersionString(FileVersionCaps, newVersion);
         SetBlockVersionString(FileVersionQuoted, newVersion);
     }
     if (typeToSave == AssemblyVersionType.AssemblyInformationalVersion)
     {
         SetHeaderVersionString(ProductVersionCaps, newVersion);
         SetBlockVersionString(ProductVersionQuoted, newVersion);
     }
     FileUtil.SaveTextFile(Filename, m_fileContent, m_encoding);
 }
コード例 #14
0
        protected ProjectVersion GetVersion(AssemblyVersionType versionType)
        {
            Debug.Assert(versionType != AssemblyVersionType.All);
            string assemblyVersionString = GetVersionString(versionType);

            if (assemblyVersionString.Length == 0)
            {
                return(ProjectVersion.Empty);
            }
            Regex regex = new Regex(VersionPattern);
            Match match = regex.Match(assemblyVersionString);

            if (match.Length > 0)
            {
                return(new ProjectVersion(match.Value, versionType));
            }
            regex = new Regex(QuotesEnclosedPattern);
            match = regex.Match(assemblyVersionString);
            return(new ProjectVersion(match.ToString().Trim('\"'), versionType));
        }
コード例 #15
0
 /// <summary>
 ///   Determines if an <c>AssemblyVersion</c> for the project should be
 ///   updated according to configured settings, <c>AssemblyVersionType</c>
 ///   and highest <c>ProjectVersion</c>provided.
 /// </summary>
 /// <param name="projectInfo">
 ///   <c>ProjectInfo</c> for the project that is considered.
 /// </param>
 /// <param name="assemblyVersionType">
 ///   <c>AssemblyVersionType</c> for which version update is determined.
 /// </param>
 /// <param name="highestProjectVersion">
 ///   Highest <c>ProjectVersion</c> used as a reference for update.
 /// </param>
 /// <returns>
 ///   <c>true</c> if version should be incremented.
 /// </returns>
 public bool ShouldUpdate(ProjectInfo projectInfo, AssemblyVersionType assemblyVersionType, ProjectVersion highestProjectVersion)
 {
     if (m_numberingOptions.SynchronizeAllVersionTypes)
     {
         if (!projectInfo.CurrentAssemblyVersions.AreVersionsSynchronized)
         {
             return(true);
         }
     }
     foreach (AssemblyVersionType at in AssemblyVersions.AssemblyVersionTypes)
     {
         if ((assemblyVersionType & at) == at)
         {
             if (ShouldUpdateOneOfAssemblyVersionTypes(projectInfo, at, highestProjectVersion))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
コード例 #16
0
        /// <summary>
        ///   Provides the updated version as a string.
        /// </summary>
        /// <param name="projectInfo">
        ///   <c>ProjectInfo</c> for the project that is updated.
        /// </param>
        /// <param name="assemblyVersionType">
        ///   <c>AssemblyVersionType</c> for which version update is done.
        /// </param>
        /// <param name="highestProjectVersion">
        ///   Highest <c>ProjectVersion</c> used as a reference for update.
        /// </param>
        /// <returns>
        ///   New version as a string.
        /// </returns>
        public string ProvideNewVersion(ProjectInfo projectInfo, AssemblyVersionType assemblyVersionType, ProjectVersion highestProjectVersion)
        {
            Debug.Assert(assemblyVersionType != AssemblyVersionType.All);
            switch (m_numberingOptions.BatchCommandIncrementScheme)
            {
            case BatchCommandIncrementScheme.IncrementModifiedIndependently:
            case BatchCommandIncrementScheme.IncrementAllIndependently:
                if (m_numberingOptions.SynchronizeAllVersionTypes && !projectInfo.ToUpdate)
                {
                    return(projectInfo.CurrentAssemblyVersions.HighestProjectVersion.ToString());
                }
                return(projectInfo.ToBecomeAssemblyVersions[assemblyVersionType].ToString());

            case (BatchCommandIncrementScheme.IncrementAllAndSynchronize):
            case (BatchCommandIncrementScheme.IncrementModifiedOnlyAndSynchronize):
                int resetBuildAndRevisionValues = (int)m_numberingOptions.ResetBuildAndRevisionTo;
                return(ProjectVersion.ApplyVersionPattern(highestProjectVersion.ToString(), projectInfo.CurrentAssemblyVersions[assemblyVersionType].ToString(), resetBuildAndRevisionValues));// highestProjectVersion.ToString();
            }
            Debug.Assert(false, "Not supported option");
            return(null);
        }
コード例 #17
0
        /// <summary>
        ///   Searches the file content for the version provided.
        /// </summary>
        /// <param name="versionName">
        ///   Short attribute name to search for.
        /// </param>
        /// <returns></returns>
        protected override string GetVersionString(AssemblyVersionType versionType)
        {
            Debug.Assert(versionType != AssemblyVersionType.All);
            string shortAttributeName = versionType.ToString();

            Debug.Assert(shortAttributeName != null && !shortAttributeName.EndsWith(Attribute));
            // first try with a short name
            string pattern = BuildAttributeLinePattern(shortAttributeName);
            Regex  regex   = new Regex(pattern, RegexOptions.Multiline);
            Match  match   = regex.Match(m_fileContent);

            if (match.Length > 0)
            {
                return(match.ToString());
            }
            // now try with a long one
            pattern = BuildAttributeLinePattern(shortAttributeName + Attribute);
            regex   = new Regex(pattern, RegexOptions.Multiline);
            match   = regex.Match(m_fileContent);
            return(match.ToString());
        }
コード例 #18
0
 /// <summary>
 ///   Mark assembly version(s) for update.
 /// </summary>
 /// <param name="versionType">
 ///   Version type to mark. May be any combination of flags, including
 ///   <c>AssemblyVersionType.All</c>.
 /// </param>
 public void MarkAssemblyVersionsForUpdate(AssemblyVersionType versionType)
 {
     if ((versionType & AssemblyVersionType.AssemblyVersion) == AssemblyVersionType.AssemblyVersion)
     {
         if (CurrentAssemblyVersions[AssemblyVersionType.AssemblyVersion] != ProjectVersion.Empty)
         {
             m_assemblyVersionsUpdateInfo[AssemblyVersionType.AssemblyVersion] = true;
         }
     }
     if ((versionType & AssemblyVersionType.AssemblyFileVersion) == AssemblyVersionType.AssemblyFileVersion)
     {
         if (CurrentAssemblyVersions[AssemblyVersionType.AssemblyFileVersion] != ProjectVersion.Empty)
         {
             m_assemblyVersionsUpdateInfo[AssemblyVersionType.AssemblyFileVersion] = true;
         }
     }
     if ((versionType & AssemblyVersionType.AssemblyInformationalVersion) == AssemblyVersionType.AssemblyInformationalVersion)
     {
         if (CurrentAssemblyVersions[AssemblyVersionType.AssemblyInformationalVersion] != ProjectVersion.Empty)
         {
             m_assemblyVersionsUpdateInfo[AssemblyVersionType.AssemblyInformationalVersion] = true;
         }
     }
 }
コード例 #19
0
 public override void SaveVersion(AssemblyVersionType typeToSave, string newVersion)
 {
     SetVersionString(typeToSave, newVersion);
     FileUtil.SaveTextFile(Filename, m_fileContent, m_encoding);
 }
コード例 #20
0
 public bool ContainsVersion(AssemblyVersionType assemblyVersionType)
 {
     Debug.Assert(assemblyVersionType != AssemblyVersionType.All && assemblyVersionType != AssemblyVersionType.None);
     return(Array.IndexOf(GetValidVersionTypes(), assemblyVersionType) > -1);
 }
コード例 #21
0
 /// <summary>
 ///   Creates <c>AssemblyVersionTypeSelection</c> object with
 ///   <c>AssemblyVersionType</c> provided.
 /// </summary>
 /// <param name="assemblyVersionType">
 ///   <c>AssemblyVersionType</c> to initialize with.
 /// </param>
 public AssemblyVersionTypeSelection(AssemblyVersionType assemblyVersionType) : this()
 {
     m_assemblyVersionType = assemblyVersionType;
 }
コード例 #22
0
 /// <summary>
 ///   Gets a flag indicating if an assembly version is marked for
 ///   update.
 /// </summary>
 /// <param name="versionType">
 ///   Version type for which flag should be provided.
 /// </param>
 /// <returns>
 ///   <c>true</c> if version type is marked for update.
 /// </returns>
 public bool IsMarkedForUpdate(AssemblyVersionType versionType)
 {
     Debug.Assert(versionType != AssemblyVersionType.All);
     return((bool)m_assemblyVersionsUpdateInfo[versionType]);
 }
コード例 #23
0
 protected abstract string GetVersionString(AssemblyVersionType versionType);
コード例 #24
0
 public abstract void SaveVersion(AssemblyVersionType typeToSave, string newVersion);
コード例 #25
0
 public AssemblyVersionItem this[AssemblyVersionType assemblyVersionType] {
     get {
         return((AssemblyVersionItem)m_assemblyVersions[assemblyVersionType]);
     }
 }
コード例 #26
0
 /// <summary>
 ///   Creates a <c>ProjectInfoList</c> containing <c>ProjectInfo</c>
 ///   objects that have passed the filter provided.
 /// </summary>
 /// <param name="projectInfos">
 ///   An array of all <c>ProjectInfo</c> objects.
 /// </param>
 /// <param name="filter">
 ///   A filter used to select <c>ProjectInfo</c> objects.
 /// </param>
 /// <param name="newVersionProvider">
 ///   <c>NewVersionProvider</c> object responsible to propose a new
 ///   version for each <c>ProjectInfo</c> object.
 /// </param>
 /// <param name="assemblyVersionsUpdateMask">
 ///   Mask defining which versions (AssemblyInfo, Informational or
 ///   Product) may be updated.
 /// </param>
 public ProjectInfoList(ProjectInfo[] projectInfos, IProjectFilter filter, NewVersionProvider newVersionProvider, AssemblyVersionType assemblyVersionsUpdateMask)
 {
     m_projectInfos = new ArrayList(projectInfos.Length);
     m_highestToBeAssemblyVersions    = AssemblyVersions.MinValue;
     m_highestProposedAssemblyVersion = AssemblyVersions.MinValue;
     foreach (ProjectInfo projectInfo in projectInfos)
     {
         if (filter.Pass(projectInfo))
         {
             ProjectInfo pi = projectInfo;
             pi.SetToBecomeVersion(newVersionProvider);
             if (pi.Modified)
             {
                 pi.MarkAssemblyVersionsForUpdate(assemblyVersionsUpdateMask);
             }
             m_projectInfos.Add(pi);
             m_highestToBeAssemblyVersions    = AssemblyVersions.Max(m_highestToBeAssemblyVersions, pi);
             m_highestProposedAssemblyVersion = AssemblyVersions.MaxProposed(m_highestProposedAssemblyVersion, pi);
         }
     }
 }