public void WriteTestsWritesDirectoriesForReferencedProjectsToSysPathCommandLineArguments() { MockCSharpProject referencedProject = new MockCSharpProject(); referencedProject.FileName = @"c:\projects\pyproject\pyproject.pyproj"; MockCSharpProject unitTestProject = new MockCSharpProject(); ProjectReferenceProjectItem projectRef = new ProjectReferenceProjectItem(unitTestProject, referencedProject); projectRef.FileName = @"c:\projects\pyproject\pyproject.pyproj"; ProjectService.AddProjectItem(unitTestProject, projectRef); MockMethod method = MockMethod.CreateMockMethodWithoutAnyAttributes(); method.FullyQualifiedName = "MyNamespace.MyTests.MyTestMethod"; SelectedTests tests = new SelectedTests(unitTestProject, null, null, method); responseFile.WriteTests(tests); string expectedText = "/p:\"c:\\projects\\pyproject\"\r\n" + "MyNamespace.MyTests.MyTestMethod\r\n"; Assert.AreEqual(expectedText, responseFileText.ToString()); }
public ProjectReferenceProjectItem AddProjectReference(IProject referencedProject) { var referenceProjectItem = new ProjectReferenceProjectItem(this, referencedProject); ProjectService.AddProjectItem(this, referenceProjectItem); return(referenceProjectItem); }
public void CreateProcessInfoReturnsCommandLineWithDirectoriesForReferencedProjects() { MockCSharpProject referencedProject = new MockCSharpProject(); referencedProject.FileName = @"c:\projects\rbproject\rbproject.rbproj"; MockCSharpProject unitTestProject = new MockCSharpProject(); ProjectReferenceProjectItem projectRef = new ProjectReferenceProjectItem(unitTestProject, referencedProject); projectRef.FileName = @"c:\projects\rbproject\pyproject.rbproj"; ProjectService.AddProjectItem(unitTestProject, projectRef); MockMethod method = MockMethod.CreateMockMethodWithoutAnyAttributes(); method.CompilationUnit.FileName = @"d:\mytest.rb"; FileProjectItem fileItem = new FileProjectItem(unitTestProject, ItemType.Compile); fileItem.FileName = @"d:\mytest.rb"; ProjectService.AddProjectItem(unitTestProject, fileItem); SelectedTests tests = RubySelectedTestsHelper.CreateSelectedTests(unitTestProject); ProcessStartInfo processStartInfo = GetProcessStartInfoFromTestRunnerApp(tests); string expectedCommandLine = "--disable-gems " + "\"-Ic:\\rubybinding\\TestRunner\" " + "\"-Ic:\\projects\\rbproject\" " + "\"c:\\rubybinding\\TestRunner\\sdtest.rb\" " + "-- " + "\"results.txt\" " + "\"temp.tmp\""; Assert.AreEqual(expectedCommandLine, processStartInfo.Arguments); }
static void AddProjectReferenceToProject(IProject project, IProject referenceTo) { LoggingService.Warn("Adding project reference to project."); ProjectReferenceProjectItem reference = new ProjectReferenceProjectItem(project, referenceTo); ProjectService.AddProjectItem(project, reference); project.Save(); }
void DoResolveReferences(IProgressMonitor progressMonitor) { var referenceItems = project.ResolveAssemblyReferences(progressMonitor.CancellationToken); const double assemblyResolvingProgress = 0.3; // 30% asm resolving, 70% asm loading progressMonitor.Progress += assemblyResolvingProgress; progressMonitor.CancellationToken.ThrowIfCancellationRequested(); List <FileName> assemblyFiles = new List <FileName>(); List <IAssemblyReference> newReferences = new List <IAssemblyReference>(); foreach (var reference in referenceItems) { ProjectReferenceProjectItem projectReference = reference as ProjectReferenceProjectItem; if (projectReference != null) { newReferences.Add(projectReference); } else { assemblyFiles.Add(reference.FileName); } } foreach (var file in assemblyFiles) { progressMonitor.CancellationToken.ThrowIfCancellationRequested(); if (File.Exists(file)) { try { var pc = SD.AssemblyParserService.GetAssembly(file, false, progressMonitor.CancellationToken); if (pc != null) { newReferences.Add(pc); } } catch (IOException ex) { LoggingService.Warn(ex); } catch (BadImageFormatException ex) { LoggingService.Warn(ex); } } progressMonitor.Progress += (1.0 - assemblyResolvingProgress) / assemblyFiles.Count; } lock (lockObj) { if (!disposed) { projectContent = projectContent.RemoveAssemblyReferences(this.references).AddAssemblyReferences(newReferences); this.references = newReferences.ToArray(); SD.ParserService.InvalidateCurrentSolutionSnapshot(); SD.MainThread.InvokeAsyncAndForget( delegate { assemblyModel.UpdateReferences(projectContent.AssemblyReferences.Select(ResolveReferenceForAssemblyModel).Where(r => r != null).ToList()); }); } } }
TestableProject CreateProjectReference() { project = new TestableDTEProject(); msbuildProject = project.TestableProject; TestableProject referencedProject = ProjectHelper.CreateTestProject(); ProjectReferenceProjectItem referenceProjectItem = msbuildProject.AddProjectReference(referencedProject); fakeProjectService = project.FakeProjectService; CreateReference(project, referenceProjectItem); return(referencedProject); }
void AddLoadPathForReferencedProjects(IProject project) { foreach (ProjectItem item in project.Items) { ProjectReferenceProjectItem projectRef = item as ProjectReferenceProjectItem; if (projectRef != null) { string directory = Path.GetDirectoryName(projectRef.FileName); consoleApplication.AddLoadPath(directory); } } }
public static void RenameProject(IProject project, string newName) { if (project.Name == newName) { return; } if (!FileService.CheckFileName(newName)) { return; } // multiple projects with the same name shouldn't be a problem // foreach (IProject p in ProjectService.OpenSolution.Projects) { // if (string.Equals(p.Name, newName, StringComparison.OrdinalIgnoreCase)) { // MessageService.ShowMessage("There is already a project with this name."); // return; // } // } string newFileName = Path.Combine(project.Directory, newName + Path.GetExtension(project.FileName)); if (!FileService.RenameFile(project.FileName, newFileName, false)) { return; } if (project.AssemblyName == project.Name) { project.AssemblyName = newName; } if (File.Exists(project.FileName + ".user")) { FileService.RenameFile(project.FileName + ".user", newFileName + ".user", false); } foreach (IProject p in ProjectService.OpenSolution.Projects) { foreach (ProjectItem item in p.Items) { if (item.ItemType == ItemType.ProjectReference) { ProjectReferenceProjectItem refItem = (ProjectReferenceProjectItem)item; if (refItem.ReferencedProject == project) { refItem.ProjectName = newName; refItem.Include = FileUtility.GetRelativePath(p.Directory, newFileName); } } } } project.FileName = newFileName; project.Name = newName; ProjectService.SaveSolution(); }
void WritePathsForReferencedProjects(IProject project) { if (project != null) { foreach (ProjectItem item in project.Items) { ProjectReferenceProjectItem projectRef = item as ProjectReferenceProjectItem; if (projectRef != null) { string directory = Path.GetDirectoryName(projectRef.FileName); WritePathIfNotEmpty(directory); } } } }
static string GetICSharpCodeCoreFullPath(IProject sourceProject) { if (sourceProject == null) { return(null); } string coreAssemblyFullPath = null; if (sourceProject.Name.Equals("ICSharpCode.Core", StringComparison.OrdinalIgnoreCase)) { // This is the ICSharpCode.Core project itself. coreAssemblyFullPath = sourceProject.OutputAssemblyFullPath; } else { // Get the ICSharpCode.Core.dll path by using the project reference. foreach (ProjectItem item in sourceProject.Items) { ProjectReferenceProjectItem prpi = item as ProjectReferenceProjectItem; if (prpi != null) { if (prpi.ReferencedProject != null) { if (prpi.ReferencedProject.Name.Equals("ICSharpCode.Core", StringComparison.OrdinalIgnoreCase) && prpi.ReferencedProject.OutputAssemblyFullPath != null) { coreAssemblyFullPath = prpi.ReferencedProject.OutputAssemblyFullPath; break; } } } ReferenceProjectItem rpi = item as ReferenceProjectItem; if (rpi != null) { if (rpi.Name.Equals("ICSharpCode.Core", StringComparison.OrdinalIgnoreCase) && rpi.FileName != null) { coreAssemblyFullPath = rpi.FileName; break; } } } } return(coreAssemblyFullPath); }
TestableProject CreateProjectReference(string parentProjectFileName, string referencedProjectFileName) { project = new TestableDTEProject(); msbuildProject = project.TestableProject; msbuildProject.FileName = new FileName(parentProjectFileName); TestableProject referencedProject = ProjectHelper.CreateTestProject(); referencedProject.FileName = new FileName(referencedProjectFileName); ((ICollection <IProject>)msbuildProject.ParentSolution.Projects).Add(referencedProject); IWorkbench workbench = MockRepository.GenerateStub <IWorkbench>(); ICSharpCode.SharpDevelop.SD.Services.AddService(typeof(IWorkbench), workbench); ProjectReferenceProjectItem referenceProjectItem = msbuildProject.AddProjectReference(referencedProject); fakeProjectService = project.FakeProjectService; CreateReference(project, referenceProjectItem); return(referencedProject); }