diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
index f2232b76ee..bc619c953b 100644
--- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
+++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
@@ -214,6 +214,7 @@
+
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/MSBuildBasedProjectExtensions.cs b/src/AddIns/Misc/PackageManagement/Project/Src/MSBuildBasedProjectExtensions.cs
new file mode 100644
index 0000000000..315832c0b0
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/MSBuildBasedProjectExtensions.cs
@@ -0,0 +1,19 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using ICSharpCode.SharpDevelop.Project;
+
+namespace ICSharpCode.PackageManagement
+{
+ public static class MSBuildBasedProjectExtensions
+ {
+ public static readonly Guid WebApplication = Guid.Parse(ProjectTypeGuids.WebApplication);
+ public static readonly Guid WebSite = Guid.Parse(ProjectTypeGuids.WebSite);
+
+ public static bool IsWebProject(this MSBuildBasedProject project)
+ {
+ return project.HasProjectType(WebApplication) || project.HasProjectType(WebSite);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
index cb22695907..54cc07a0b9 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
@@ -162,13 +162,26 @@ namespace ICSharpCode.PackageManagement
public bool IsSupportedFile(string path)
{
- return !IsAppConfigFile(path);
+ if (project.IsWebProject()) {
+ return !IsAppConfigFile(path);
+ }
+ return !IsWebConfigFile(path);
+ }
+
+ bool IsWebConfigFile(string path)
+ {
+ return IsFileNameMatchIgnoringPath("web.config", path);
}
bool IsAppConfigFile(string path)
{
- string fileName = Path.GetFileName(path);
- return IsMatchIgnoringCase("app.config", fileName);
+ return IsFileNameMatchIgnoringPath("app.config", path);
+ }
+
+ bool IsFileNameMatchIgnoringPath(string fileName1, string path)
+ {
+ string fileName2 = Path.GetFileName(path);
+ return IsMatchIgnoringCase(fileName1, fileName2);
}
public override void AddFile(string path, Stream stream)
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs
index ad6ad3c20d..f3900e8c67 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs
@@ -32,6 +32,35 @@ namespace PackageManagement.Tests.Helpers
return project;
}
+ public static TestableProject CreateTestWebApplicationProject()
+ {
+ TestableProject project = CreateTestProject();
+ AddWebApplicationProjectType(project);
+ return project;
+ }
+
+ public static TestableProject CreateTestWebSiteProject()
+ {
+ TestableProject project = CreateTestProject();
+ AddWebSiteProjectType(project);
+ return project;
+ }
+
+ public static void AddWebApplicationProjectType(MSBuildBasedProject project)
+ {
+ AddProjectType(project, ProjectTypeGuids.WebApplication);
+ }
+
+ public static void AddWebSiteProjectType(TestableProject project)
+ {
+ AddProjectType(project, ProjectTypeGuids.WebSite);
+ }
+
+ public static void AddProjectType(MSBuildBasedProject project, string guidText)
+ {
+ project.AddProjectType(Guid.Parse(guidText));
+ }
+
public static void AddReference(MSBuildBasedProject project, string referenceName)
{
var referenceProjectItem = new ReferenceProjectItem(project, referenceName);
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs
index ed040be096..3dcab9e2f4 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs
@@ -28,6 +28,16 @@ namespace PackageManagement.Tests
project = ProjectHelper.CreateTestProject();
}
+ void CreateTestWebApplicationProject()
+ {
+ project = ProjectHelper.CreateTestWebApplicationProject();
+ }
+
+ void CreateTestWebSiteProject()
+ {
+ project = ProjectHelper.CreateTestWebSiteProject();
+ }
+
void CreateTestProject(string fileName)
{
CreateTestProject();
@@ -133,9 +143,9 @@ namespace PackageManagement.Tests
}
[Test]
- public void IsSupportedFile_PassedAppConfigFileName_ReturnsFalse()
+ public void IsSupportedFile_ProjectIsWebProjectAndPassedAppConfigFileName_ReturnsFalse()
{
- CreateTestProject();
+ CreateTestWebApplicationProject();
CreateProjectSystem(project);
string fileName = @"d:\temp\app.config";
@@ -145,9 +155,9 @@ namespace PackageManagement.Tests
}
[Test]
- public void IsSupportedFile_PassedAppConfigFileNameInUpperCase_ReturnsFalse()
+ public void IsSupportedFile_ProjectIsWebProjectAndPassedAppConfigFileNameInUpperCase_ReturnsFalse()
{
- CreateTestProject();
+ CreateTestWebApplicationProject();
CreateProjectSystem(project);
string fileName = @"c:\projects\APP.CONFIG";
@@ -156,6 +166,66 @@ namespace PackageManagement.Tests
Assert.IsFalse(result);
}
+ [Test]
+ public void IsSupportedFile_ProjectIsWebApplicationProjectAndPassedWebConfigFileName_ReturnsTrue()
+ {
+ CreateTestWebApplicationProject();
+ CreateProjectSystem(project);
+
+ string fileName = @"d:\temp\web.config";
+ bool result = projectSystem.IsSupportedFile(fileName);
+
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void IsSupportedFile_ProjectIsWebSiteProjectAndPassedWebConfigFileName_ReturnsTrue()
+ {
+ CreateTestWebSiteProject();
+ CreateProjectSystem(project);
+
+ string fileName = @"d:\temp\web.config";
+ bool result = projectSystem.IsSupportedFile(fileName);
+
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void IsSupportedFile_ProjectIsCSharpProjectAndPassedWebConfigFileName_ReturnsFalse()
+ {
+ CreateTestProject();
+ CreateProjectSystem(project);
+
+ string fileName = @"d:\temp\web.config";
+ bool result = projectSystem.IsSupportedFile(fileName);
+
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void IsSupportedFile_ProjectIsCSharpProjectAndPassedWebConfigFileNameInUpperCase_ReturnsFalse()
+ {
+ CreateTestProject();
+ CreateProjectSystem(project);
+
+ string fileName = @"d:\temp\WEB.CONFIG";
+ bool result = projectSystem.IsSupportedFile(fileName);
+
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void IsSupportedFile_ProjectIsCSharpProjectAndPassedAppConfigFileName_ReturnsTrue()
+ {
+ CreateTestProject();
+ CreateProjectSystem(project);
+
+ string fileName = @"d:\temp\app.config";
+ bool result = projectSystem.IsSupportedFile(fileName);
+
+ Assert.IsTrue(result);
+ }
+
[Test]
public void ReferenceExists_ProjectHasReferenceAndFullPathToAssemblyPassedToMethod_ReturnsTrue()
{