Browse Source

Support finding a project by unique name in EnvDTE.Solution.Projects.

pull/28/head
Matt Ward 13 years ago
parent
commit
71f8ccce41
  1. 17
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Projects.cs
  2. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/SolutionBuild.cs
  3. 2
      src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/Src/Projects.vb
  4. 24
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectsTests.cs

17
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Projects.cs

@ -43,13 +43,28 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -43,13 +43,28 @@ namespace ICSharpCode.PackageManagement.EnvDTE
/// <summary>
/// Index of 1 returns the first project.
/// </summary>
public global::EnvDTE.Project Item(int index)
public global::EnvDTE.Project Item(object index)
{
if (index is int) {
return Item((int)index);
}
return Item((string)index);
}
global::EnvDTE.Project Item(int index)
{
return GetProjectsInSolution()
.Skip(index - 1)
.First();
}
global::EnvDTE.Project Item(string uniqueName)
{
return GetProjectsInSolution()
.Where(p => p.UniqueName == uniqueName)
.First();
}
public int Count {
get { return GetProjectsInSolution().Count(); }
}

2
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/SolutionBuild.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Project.Commands;
namespace ICSharpCode.PackageManagement.EnvDTE
{
@ -31,7 +32,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -31,7 +32,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public void BuildProject(string solutionConfiguration, string projectUniqueName, bool waitForBuildToFinish)
{
throw new NotImplementedException();
}
public object StartupProjects {

2
src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/Src/Projects.vb

@ -8,7 +8,7 @@ Namespace EnvDTE @@ -8,7 +8,7 @@ Namespace EnvDTE
''' <summary>
''' Index of 1 returns the first project.
''' </summary>
Function Item(index As Integer) As Project
Function Item(index As Object) As Project
ReadOnly Property Count() As Integer
End Interface

24
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectsTests.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Linq;
using ICSharpCode.PackageManagement.EnvDTE;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
@ -29,6 +30,18 @@ namespace PackageManagement.Tests.EnvDTE @@ -29,6 +30,18 @@ namespace PackageManagement.Tests.EnvDTE
projects = (Projects)solutionHelper.Solution.Projects;
}
void CreateSolution(string fileName)
{
solutionHelper = new SolutionHelper();
solutionHelper.MSBuildSolution.FileName = fileName;
projects = (Projects)solutionHelper.Solution.Projects;
}
void AddProjectToSolution(string fileName)
{
solutionHelper.AddProjectToSolutionWithFileName("MyProject", fileName);
}
[Test]
public void Item_OneProjectAndFirstItemRequested_ReturnsProject()
{
@ -68,5 +81,16 @@ namespace PackageManagement.Tests.EnvDTE @@ -68,5 +81,16 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(2, count);
}
[Test]
public void Item_GetProjectByUniqueName_ReturnsProject()
{
CreateSolution(@"d:\projects\MyProject\MySolution.sln");
AddProjectToSolution(@"d:\projects\MyProject\SubFolder\MyProject.csproj");
Project project = (Project)projects.Item(@"SubFolder\MyProject.csproj");
Assert.AreEqual(@"d:\projects\MyProject\SubFolder\MyProject.csproj", project.FileName);
}
}
}

Loading…
Cancel
Save