/// <summary> /// Executes the activity. /// </summary> /// <param name="context">The context.</param> /// <returns> /// A <see cref="BuildVersionDetails"/> instance representing the generated version. /// </returns> protected override BuildVersionDetails Execute(CodeActivityContext context) { // Validate required input properties. var connectionString = DatabaseConnectionString.Get(context); if (string.IsNullOrWhiteSpace(connectionString)) { throw new InvalidOperationException("The DatabaseConnectionString property is required and cannot be null, empty or whitespace."); } var projectName = ProjectName.Get(context); if (string.IsNullOrWhiteSpace(projectName)) { throw new InvalidOperationException("The ProjectName property is required and cannot be null, empty or whitespace."); } var projectConfigName = ProjectConfigName.Get(context); if (string.IsNullOrWhiteSpace(projectConfigName)) { throw new InvalidOperationException("The ProjectConfigName property is required and cannot be null, empty or whitespace."); } var buildDetail = context.GetExtension <IBuildDetail>(); var buildDefinitionName = buildDetail.BuildDefinition.Name; var commandLog = new CodeActivityContextCommandLog(context); var lockTimeoutSeconds = LockTimeoutSeconds.Get(context); var requestedBy = buildDetail.RequestedBy; var teamProject = buildDetail.TeamProject; var command = new CreateVersionCommand { BuildDefinitionName = buildDefinitionName, CommandLog = commandLog, ConnectionString = connectionString, LockTimeoutSeconds = lockTimeoutSeconds, ProjectConfigName = projectConfigName, ProjectName = projectName, RequestedBy = requestedBy, TeamProjectName = teamProject }; var versionDetails = command.Execute(); // Execute optional features. SetBuildNumber(context, buildDetail, versionDetails); SetDropLocation(context, buildDetail, versionDetails, projectName); // Save any changes to the build detail instance. buildDetail.Save(); // Map the IVersionDetails instance to an instance of BuildVersionDetails. var buildVersionDetails = BuildVersionDetails.FromIVersionDetails(versionDetails); // Return the result. return(buildVersionDetails); }