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
/// <summary> /// <summary>
/// Index of 1 returns the first project. /// Index of 1 returns the first project.
/// </summary> /// </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() return GetProjectsInSolution()
.Skip(index - 1) .Skip(index - 1)
.First(); .First();
} }
global::EnvDTE.Project Item(string uniqueName)
{
return GetProjectsInSolution()
.Where(p => p.UniqueName == uniqueName)
.First();
}
public int Count { public int Count {
get { return GetProjectsInSolution().Count(); } get { return GetProjectsInSolution().Count(); }
} }

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

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

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

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

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

@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.Linq;
using ICSharpCode.PackageManagement.EnvDTE; using ICSharpCode.PackageManagement.EnvDTE;
using NUnit.Framework; using NUnit.Framework;
using PackageManagement.Tests.Helpers; using PackageManagement.Tests.Helpers;
@ -29,6 +30,18 @@ namespace PackageManagement.Tests.EnvDTE
projects = (Projects)solutionHelper.Solution.Projects; 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] [Test]
public void Item_OneProjectAndFirstItemRequested_ReturnsProject() public void Item_OneProjectAndFirstItemRequested_ReturnsProject()
{ {
@ -68,5 +81,16 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(2, count); 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