public static bool TryGetVersion(string directory, out SemanticVersion versionAndBranch)
        {
            var gitDirectory = GitDirFinder.TreeWalkForGitDir(directory);

            if (string.IsNullOrEmpty(gitDirectory))
            {
                var message =
                    "No .git directory found in provided solution path. This means the assembly may not be versioned correctly. " +
                    "To fix this warning either clone the repository using git or remove the `GitVersion.Fody` nuget package. " +
                    "To temporarily work around this issue add a AssemblyInfo.cs with an appropriate `AssemblyVersionAttribute`." +
                    "If it is detected that this build is occurring on a CI server an error may be thrown.";
                Logger.WriteWarning(message);
                versionAndBranch = null;
                return(false);
            }

            var arguments = new Arguments();

            foreach (var buildServer in BuildServerList.GetApplicableBuildServers(arguments))
            {
                Logger.WriteInfo(string.Format("Executing PerformPreProcessingSteps for '{0}'.", buildServer.GetType().Name));
                buildServer.PerformPreProcessingSteps(gitDirectory);
            }
            versionAndBranch = VersionCache.GetVersion(gitDirectory);
            return(true);
        }
        private string GetDllVersion(FileInfo asm)
        {
            if (VersionCache.ContainsKey(asm.FullName))
            {
                return(VersionCache[asm.FullName]);
            }

            var version = FileVersionInfo.GetVersionInfo(asm.FullName);

            VersionCache.Add(asm.FullName, version.FileVersion);
            return(version.FileVersion);
        }
        public override bool Execute()
        {
            var gitFolder = GitDirFinder.TreeWalkForGitDir(ProjectFolder);

            if (string.IsNullOrEmpty(gitFolder))
            {
                if (TeamCity.IsRunningInBuildAgent()) //fail the build if we're on a TC build agent
                {
                    this.LogError("Failed to find .git directory on agent. Please make sure agent checkout mode is enabled for you VCS roots - http://confluence.jetbrains.com/display/TCD8/VCS+Checkout+Mode");
                    return(false);
                }

                var message = string.Format("No .git directory found in solution path '{0}'. This means the assembly may not be versioned correctly. To fix this warning either clone the repository using git or remove the `GitFlowVersion.Fody` nuget package. To temporarily work around this issue add a AssemblyInfo.cs with an appropriate `AssemblyVersionAttribute`.", ProjectFolder);
                this.LogWarning(message);

                return(true);
            }

            var versionAndBranch = VersionCache.GetVersion(gitFolder);

            WriteTeamCityParameters(versionAndBranch);
            var semanticVersion = versionAndBranch.Version;

            Version      = string.Format("{0}.{1}.{2}", semanticVersion.Major, semanticVersion.Minor, semanticVersion.Patch);
            FileVersion  = string.Format("{0}.{1}.{2}", semanticVersion.Major, semanticVersion.Minor, semanticVersion.Patch);
            InfoVersion  = versionAndBranch.ToLongString();
            NugetVersion = NugetVersionBuilder.GenerateNugetVersion(versionAndBranch);

            this.LogInfo(String.Format("Version number is {0} and InfoVersion is {1}", Version, InfoVersion));
            if (Files == null)
            {
                return(true);
            }
            var task = new UpdateAssemblyInfo(Files, Version, FileVersion);

            task.Execute();
            return(true);
        }
Exemple #4
0
 private async Task UpdateDocumentAsync(int newVersion, DocumentSnapshot documentSnapshot)
 {
     await Task.Factory.StartNew(() => VersionCache.TrackDocumentVersion(documentSnapshot, newVersion), CancellationToken.None, TaskCreationOptions.None, ForegroundDispatcher.ForegroundScheduler).ConfigureAwait(false);
 }
 private async Task UpdateDocumentAsync(int newVersion, DocumentSnapshot documentSnapshot)
 {
     await ProjectSnapshotManagerDispatcher.RunOnDispatcherThreadAsync(
         () => VersionCache.TrackDocumentVersion(documentSnapshot, newVersion), CancellationToken.None).ConfigureAwait(false);
 }