Browse Source

Add support for adding GAC references and post build events in NuGet PowerShell scripts.

pull/15/head
Matt Ward 14 years ago
parent
commit
873c6af946
  1. 4
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs
  3. 16
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs
  4. 21
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectObject.cs
  5. 23
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Properties.cs
  6. 28
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Property.cs
  7. 33
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/References.cs
  8. 4
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs
  9. 4
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs
  10. 2
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  11. 68
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs
  12. 7
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs
  13. 10
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs
  14. 2
      src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInstallScriptTests.cs

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

@ -70,6 +70,10 @@ @@ -70,6 +70,10 @@
<Compile Include="Src\AddPackageReferenceCommand.cs" />
<Compile Include="Src\AggregateExceptionErrorMessage.cs" />
<Compile Include="Src\Design\FakePackageManagementProject.cs" />
<Compile Include="Src\EnvDTE\ProjectObject.cs" />
<Compile Include="Src\EnvDTE\Properties.cs" />
<Compile Include="Src\EnvDTE\Property.cs" />
<Compile Include="Src\EnvDTE\References.cs" />
<Compile Include="Src\IAddPackageReferenceView.cs" />
<Compile Include="Src\IPackageFromRepository.cs" />
<Compile Include="Src\IPackageManagementEvents.cs" />

2
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs

@ -150,7 +150,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -150,7 +150,7 @@ namespace ICSharpCode.PackageManagement.Design
}
}
public Project DTEProject = new Project();
public Project DTEProject;
public Project ConvertToDTEProject()
{

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

@ -2,10 +2,26 @@ @@ -2,10 +2,26 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class Project
{
MSBuildBasedProject project;
public Project(MSBuildBasedProject project)
{
this.project = project;
Object = new ProjectObject(project);
Properties = new Properties(project);
}
public string Name {
get { return "Test"; }
}
public ProjectObject Object { get; private set; }
public Properties Properties { get; private set; }
}
}

21
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectObject.cs

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
// 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.EnvDTE
{
public class ProjectObject
{
MSBuildBasedProject project;
public ProjectObject(MSBuildBasedProject project)
{
this.project = project;
References = new References(project);
}
public References References { get; private set; }
}
}

23
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Properties.cs

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
// 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.EnvDTE
{
public class Properties
{
MSBuildBasedProject project;
public Properties(MSBuildBasedProject project)
{
this.project = project;
}
public Property Item(string propertyName)
{
return new Property(project, propertyName);
}
}
}

28
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Property.cs

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
// 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.EnvDTE
{
public class Property
{
MSBuildBasedProject project;
string name;
public Property(MSBuildBasedProject project, string name)
{
this.project = project;
this.name = name;
}
public object Value {
get { return project.GetEvaluatedProperty(name); }
set {
bool escapeValue = false;
project.SetProperty(name, value as string, escapeValue);
}
}
}
}

33
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/References.cs

@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
// 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.EnvDTE
{
public class References
{
MSBuildBasedProject project;
IPackageManagementProjectService projectService;
public References(MSBuildBasedProject project)
: this(project, new PackageManagementProjectService())
{
}
public References(
MSBuildBasedProject project,
IPackageManagementProjectService projectService)
{
this.project = project;
this.projectService = projectService;
}
public void Add(string path)
{
var referenceItem = new ReferenceProjectItem(project, path);
projectService.AddProjectItem(project, referenceItem);
}
}
}

4
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs

@ -16,6 +16,7 @@ namespace ICSharpCode.PackageManagement @@ -16,6 +16,7 @@ namespace ICSharpCode.PackageManagement
ISharpDevelopPackageManager packageManager;
ISharpDevelopProjectManager projectManager;
IPackageManagementEvents packageManagementEvents;
MSBuildBasedProject msbuildProject;
public PackageManagementProject(
IPackageRepository sourceRepository,
@ -24,6 +25,7 @@ namespace ICSharpCode.PackageManagement @@ -24,6 +25,7 @@ namespace ICSharpCode.PackageManagement
IPackageManagerFactory packageManagerFactory)
{
SourceRepository = sourceRepository;
msbuildProject = project;
this.packageManagementEvents = packageManagementEvents;
packageManager = packageManagerFactory.CreatePackageManager(sourceRepository, project);
@ -110,7 +112,7 @@ namespace ICSharpCode.PackageManagement @@ -110,7 +112,7 @@ namespace ICSharpCode.PackageManagement
public Project ConvertToDTEProject()
{
return null;
return new Project(msbuildProject);
}
}
}

4
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs

@ -50,5 +50,9 @@ namespace ICSharpCode.PackageManagement @@ -50,5 +50,9 @@ namespace ICSharpCode.PackageManagement
public static IPackageManagementOutputMessagesView OutputMessagesView {
get { return outputMessagesView; }
}
public static IPackageManagementProjectService ProjectService {
get { return projectService; }
}
}
}

2
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -70,6 +70,7 @@ @@ -70,6 +70,7 @@
<Link>Properties\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Src\AddPackageReferenceCommandTests.cs" />
<Compile Include="Src\EnvDTE\ProjectTests.cs" />
<Compile Include="Src\Helpers\ExceptionThrowingPackageManagementProject.cs" />
<Compile Include="Src\Helpers\ExceptionThrowingRegisteredPackageRepositories.cs" />
<Compile Include="Src\Helpers\FakeAddPackageReferenceView.cs" />
@ -214,6 +215,7 @@ @@ -214,6 +215,7 @@
<Folder Include="Src\Helpers" />
<Folder Include="Src\Helpers\Tests" />
<Folder Include="Src" />
<Folder Include="Src\EnvDTE" />
<Folder Include="Src\Scripting" />
</ItemGroup>
<ItemGroup>

68
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs

@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
// 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.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests.EnvDTE
{
[TestFixture]
public class ProjectTests
{
Project project;
TestableProject msbuildProject;
void CreateProject()
{
msbuildProject = ProjectHelper.CreateTestProject();
project = new Project(msbuildProject);
}
[Test]
public void ObjectReferencesAdd_AddGacAssemblyReference_ReferenceAddedToMSBuildProject()
{
CreateProject();
project.Object.References.Add("System.Data");
var reference = msbuildProject.Items[0] as ReferenceProjectItem;
string referenceName = reference.Name;
Assert.AreEqual("System.Data", referenceName);
}
[Test]
public void PropertiesItemValue_GetPostBuildEvent_ReturnsProjectsPostBuildEvent()
{
CreateProject();
msbuildProject.SetProperty("PostBuildEvent", "Test");
var postBuildEventProperty = project.Properties.Item("PostBuildEvent").Value;
Assert.AreEqual("Test", postBuildEventProperty);
}
[Test]
public void PropertiesItemValue_SetPostBuildEvent_UpdatesProjectsPostBuildEvent()
{
CreateProject();
project.Properties.Item("PostBuildEvent").Value = "Test";
string postBuildEventProperty = msbuildProject.GetEvaluatedProperty("PostBuildEvent");
Assert.AreEqual("Test", postBuildEventProperty);
}
[Test]
public void PropertiesItemValue_SetPostBuildEvent_DoesNotEscapeText()
{
CreateProject();
project.Properties.Item("PostBuildEvent").Value = "$(SolutionDir)";
string postBuildEventProperty = msbuildProject.GetUnevalatedProperty("PostBuildEvent");
Assert.AreEqual("$(SolutionDir)", postBuildEventProperty);
}
}
}

7
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.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 ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
@ -79,5 +80,11 @@ namespace PackageManagement.Tests.Helpers @@ -79,5 +80,11 @@ namespace PackageManagement.Tests.Helpers
}
return null;
}
public static Project CreateDTEProject()
{
TestableProject msbuildProject = CreateTestProject();
return new Project(msbuildProject);
}
}
}

10
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementProjectTests.cs

@ -420,5 +420,15 @@ namespace PackageManagement.Tests @@ -420,5 +420,15 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedPackage, eventArgs.Package);
}
[Test]
public void ConvertToDTEProject_MethodCalled_ReturnsProjectWithExpectedName()
{
CreateProject();
fakeMSBuildProject.Name = "Test";
var dteProject = project.ConvertToDTEProject();
Assert.AreEqual("Test", dteProject.Name);
}
}
}

2
src/AddIns/Misc/PackageManagement/Test/Src/Scripting/PackageInstallScriptTests.cs

@ -34,7 +34,7 @@ namespace PackageManagement.Tests.Scripting @@ -34,7 +34,7 @@ namespace PackageManagement.Tests.Scripting
public void Execute_PackageInstallDirectoryIsSet_ProjectSessionVariableIsSet()
{
CreateScript();
var expectedProject = new Project();
var expectedProject = ProjectHelper.CreateDTEProject();
var project = new FakePackageManagementProject();
project.DTEProject = expectedProject;
script.Project = project;

Loading…
Cancel
Save