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 @@
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE</DefineConstants>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Microsoft.Build" />
<Reference Include="NuGet.Core"> <Reference Include="NuGet.Core">
<HintPath>..\RequiredLibraries\NuGet.Core.dll</HintPath> <HintPath>..\RequiredLibraries\NuGet.Core.dll</HintPath>
</Reference> </Reference>

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

@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
using Microsoft.Build.Construction;
using SD = ICSharpCode.SharpDevelop.Project; using SD = ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
@ -142,5 +143,16 @@ namespace ICSharpCode.PackageManagement.EnvDTE
fileProjectItem.Include = include; fileProjectItem.Include = include;
return fileProjectItem; 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 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.Build.Construction;
namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
{ {
@ -22,7 +24,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public IEnumerator<Property> GetEnumerator() 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 @@
// 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;
@ -113,5 +114,17 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(expectedTargetFrameworkMoniker, targetFrameworkMoniker); 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