Represents project file as XML document.
Пример #1
0
		private void UpdateReferenceVersions(ProjectDocument project)
		{
			Console.Write("Updating reference versions... ");

			foreach (var reference in project.GetBinaryReferences())
			{
				// skip assemblies from GAC
				if (reference.IsGlobal)
					continue;

				// skip remote packages
				if (!m_checker.IsLocal(reference.Name))
					continue;

				// skip static packages
				if (m_checker.IsStatic(reference.Name))
					continue;

				// package should be pinned to its current version
				if (m_checker.IsPinnedToCurrentVersion(reference.Name))
					continue;

				// get version to use for local package
				var versionToUse = m_checker.VersionToUse(reference.Name);

				// update is not required
				if (versionToUse.Normalize() == reference.Version.Normalize())
					continue;

				// update package version within project file
				reference.UpdateVersion(versionToUse);
			}

			Console.WriteLine("OK");
		}
Пример #2
0
		private void ConvertProjectReferences(ProjectDocument project)
		{
			if (Path.GetExtension(Args.ProjectFile) == ".sfproj")
				return;

			Console.Write("Resolving project references... ");

			foreach (var reference in project.GetProjectReferences())
			{
				string name = null;
				foreach (var check in Util.LocalNameToProjectNames(reference.Name))
				{
					if (m_log.ContainsKey(check))
					{
						name = check;
						break;
					}
				}

				if (name == null)
				{
					throw new InvalidOperationException(
						$@"Referenced project '{reference.Name}' was not found in 'packages.config'.
Please add it as a NuGet reference first, and only after that you can convert it into project reference.");
				}

				m_log[name].ProjectReference = true;

				var framework = m_checker.TargetFramework(name);
				reference.ConvertToBinary(framework, name);
			}

			Console.WriteLine("OK");
		}
Пример #3
0
		private ProjectDocument GetProjectDocument()
		{
			Console.WriteLine("Loading project...");
			var project = new ProjectDocument(Paths.ProjectFile);

			return project;
		}
Пример #4
0
		public void Adjust()
		{
			Console.Write("Loading project... ");
			var project = new ProjectDocument(Args.ProjectFile);
			Console.WriteLine("OK");

			ConvertProjectReferences(project);
			UpdateReferenceVersions(project);
			SetupRelatedProjects(project);

			Console.Write("Saving project... ");
			project.Save();
			Console.WriteLine("OK");
		}
Пример #5
0
		private static void SetupRelatedProjects()
		{
			string path;
			switch (Args.ProjectType)
			{
				case ProjectType.CloudService:
					path = Paths.CloudProjectFile;
					break;

				case ProjectType.FabricApplication:
					path = Paths.FabricProjectFile;
					break;

				default:
					return;
			}

			if (String.IsNullOrEmpty(Args.RelatedPath))
				throw new InvalidOperationException("Configuration argument 'RelatedPath' is not set.");

			if (String.IsNullOrEmpty(Args.ReferencesPath))
				throw new InvalidOperationException("Configuration argument 'ReferencesPath' is not set.");

			Args.RelatedPath.CreateDirectoryIfNotExists();
			Args.ReferencesPath.CreateDirectoryIfNotExists();

			Console.Write("Converting paths for related projects... ");

			var project = new ProjectDocument(path);

			var references = project.GetProjectReferences();
			if (references.Count == 0)
				throw new InvalidOperationException("It is strange that cloud service or fabric application does not have any referenced projects.");

			var log = new LogPackages();
			foreach (var reference in references)
			{
				SetupRelatedProject(reference, log);
			}

			project.Save();
			Console.WriteLine("OK");

			log.Report();

			Console.Write("Saving local references... ");
			log.SaveReferences(Args.ReferencesPath);
			Console.WriteLine("OK");

			Console.Write("Saving packages summary... ");
			log.SaveSummary(Args.TempPath);
			Console.WriteLine("OK");
		}
Пример #6
0
		public override void CheckPage(TfsClient client)
		{
			base.CheckPage(client);

			var path = TfsPath;

			if (!CheckTfsPathArea(path, AreaName))
				throw new InvalidOperationException($"TFS path '{path}' seems not conforming with area name '{AreaName}'.");

			if (!CheckTfsPathProject(path, ProjectName))
				throw new InvalidOperationException($"TFS path '{path}' seems not conforming with project name '{ProjectName}'.");

			var project = new ProjectDocument(() => client.ReadFile(ProjectFile));

			ProjectUid = project.GetProjectGuid();
		}
Пример #7
0
		private void SetupRelatedProjects(ProjectDocument project)
		{
			if (Path.GetExtension(Args.ProjectFile) != ".sfproj")
				return;

			Console.WriteLine("Converting paths for related projects...");

			if (String.IsNullOrEmpty(Args.RelatedPath))
				throw new InvalidOperationException("Related path is not set.");

			var references = project.GetProjectReferences();
			if (references.Count == 0)
				throw new InvalidOperationException("Cannot find any related projects from a project file.");

			foreach (var reference in references)
			{
				SetupRelatedProject(reference);
			}

			Console.WriteLine("OK");
		}