From 23cf0286f6a2fc415ea0cb6375efd596c45ed411 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sat, 19 May 2012 15:36:43 +0100 Subject: [PATCH] EnvDTE.Project's unique name includes the subfolder inside the solution. --- .../Project/Src/EnvDTE/Project.cs | 7 ++++++- .../Test/Src/EnvDTE/ProjectTests.cs | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs index 3e2959c651..0a1ac4f0fc 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs @@ -56,7 +56,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE } public virtual string UniqueName { - get { return Path.GetFileName(FileName); } + get { return GetUniqueName(); } + } + + string GetUniqueName() + { + return FileUtility.GetRelativePath(MSBuildProject.ParentSolution.Directory, FileName); } public virtual string FileName { diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs index 62a23df6ce..f34fb970f2 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs @@ -134,9 +134,10 @@ namespace PackageManagement.Tests.EnvDTE } [Test] - public void UniqueName_ProjectFileNameHasFullPath_ReturnsProjectFileNameWithoutDirectoryPart() + public void UniqueName_ProjectInSameFolderAsSolution_ReturnsProjectFileNameWithoutDirectoryPart() { CreateProject(); + msbuildProject.ParentSolution.FileName = @"d:\projects\myproject\MyProject.sln"; msbuildProject.FileName = @"d:\projects\myproject\MyProject.csproj"; string name = project.UniqueName; @@ -144,6 +145,18 @@ namespace PackageManagement.Tests.EnvDTE Assert.AreEqual("MyProject.csproj", name); } + [Test] + public void UniqueName_ProjectInSubDirectoryOfSolutionFolder_ReturnsProjectFileNameWithContainsSubFolder() + { + CreateProject(); + msbuildProject.ParentSolution.FileName = @"d:\projects\myproject\MyProject.sln"; + msbuildProject.FileName = @"d:\projects\myproject\SubFolder\MyProject.csproj"; + + string name = project.UniqueName; + + Assert.AreEqual(@"SubFolder\MyProject.csproj", name); + } + [Test] public void ProjectItemsParent_ParentOfProjectsProjectItems_ReturnsTheProject() {