From 7b0d8e92c92785bacf1ed21db398227860963f3f Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Mon, 27 Aug 2012 10:54:48 +0100 Subject: [PATCH] Fix different EnvDTE behaviour between SharpDevelop and Visual Studio. Throw exception when unknown item requested from EnvDTE.ProjectItems.Item() instead of returning null. The T4MVC template relies on this behaviour when looking for folders that do not exist. --- .../PackageManagement/Project/Src/EnvDTE/ProjectItems.cs | 2 +- .../Test/Src/EnvDTE/ProjectItemsTests.cs | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs index e1b4d3cf1e..a96d3dca8c 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs @@ -88,7 +88,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE return item; } } - return null; + throw new ArgumentException("Unable to find item: " + name, "name"); } internal virtual ProjectItem Item(int index) diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs index 9fec6053a6..bbf272916a 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs @@ -831,5 +831,14 @@ namespace PackageManagement.Tests.EnvDTE Assert.AreEqual("AccountController.cs", projectItem.Name); } + + [Test] + public void Item_UnknownProjectItemName_ThrowsException() + { + CreateProjectItems(); + msbuildProject.AddFile("Program.cs"); + + Assert.Throws(() => projectItems.Item("unknown.cs")); + } } }