Browse Source

Fix exception when NuGetPSVariables package iterates over project properties.

pull/15/head
Matt Ward 14 years ago
parent
commit
dadb1e0ceb
  1. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 12
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs
  3. 6
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectPropertyFactory.cs
  4. 13
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectPropertyTests.cs

1
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -36,6 +36,7 @@ @@ -36,6 +36,7 @@
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Build" />
<Reference Include="NuGet.Core">
<HintPath>..\RequiredLibraries\NuGet.Core.dll</HintPath>
</Reference>

12
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs

@ -6,6 +6,7 @@ using System.Collections.Generic; @@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.IO;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.Build.Construction;
using SD = ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
@ -142,5 +143,16 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -142,5 +143,16 @@ namespace ICSharpCode.PackageManagement.EnvDTE
fileProjectItem.Include = include;
return fileProjectItem;
}
internal IList<string> GetAllPropertyNames()
{
var names = new List<string>();
lock (MSBuildProject.SyncRoot) {
foreach (ProjectPropertyElement propertyElement in MSBuildProject.MSBuildProjectFile.Properties) {
names.Add(propertyElement.Name);
}
}
return names;
}
}
}

6
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectPropertyFactory.cs

@ -3,6 +3,8 @@ @@ -3,6 +3,8 @@
using System;
using System.Collections.Generic;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.Build.Construction;
namespace ICSharpCode.PackageManagement.EnvDTE
{
@ -22,7 +24,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -22,7 +24,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public IEnumerator<Property> GetEnumerator()
{
throw new NotImplementedException();
foreach (string propertyName in project.GetAllPropertyNames()) {
yield return CreateProperty(propertyName);
}
}
}
}

13
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectPropertyTests.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;
@ -113,5 +114,17 @@ namespace PackageManagement.Tests.EnvDTE @@ -113,5 +114,17 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(expectedTargetFrameworkMoniker, targetFrameworkMoniker);
}
[Test]
public void GetEnumerator_TargetFrameworkVersionSetTo40_TargetFrameworkVersionPropertyReturned()
{
CreateProperties();
msbuildProject.SetProperty("TargetFrameworkVersion", "4.0");
Property targetFrameworkVersionProperty = project.Properties.First(p => p.Name == "TargetFrameworkVersion");
string targetFrameworkVersion = targetFrameworkVersionProperty.Value as string;
Assert.AreEqual("4.0", targetFrameworkVersion);
}
}
}

Loading…
Cancel
Save