Browse Source

Implement Visual Studio API to support installing T4 scaffolding package.

pull/28/head
Matt Ward 14 years ago
parent
commit
5c26245277
  1. 2
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 13
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Constants.cs
  3. 21
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DTE.cs
  4. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItem.cs
  5. 21
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs
  6. 14
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs
  7. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs
  8. 6
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemsInsideProject.cs
  9. 29
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs
  10. 22
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs
  11. 20
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Projects.cs
  12. 13
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Solution.cs
  13. 9
      src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/Package.cs
  14. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  15. 45
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs
  16. 11
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs
  17. 44
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs
  18. 105
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/SolutionTests.cs
  19. 17
      src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/PackageTests.cs

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

@ -95,7 +95,9 @@ @@ -95,7 +95,9 @@
<Compile Include="Src\EnvDTE\CodeVariable.cs" />
<Compile Include="Src\EnvDTE\ConfigurationManager.cs" />
<Compile Include="Src\EnvDTE\Configuration.cs" />
<Compile Include="Src\EnvDTE\Constants.cs" />
<Compile Include="Src\EnvDTE\EditPoint.cs" />
<Compile Include="Src\EnvDTE\ProjectKind.cs" />
<Compile Include="Src\EnvDTE\Projects.cs" />
<Compile Include="Src\EnvDTE\SourceControl.cs" />
<Compile Include="Src\EnvDTE\TextPoint.cs" />

13
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Constants.cs

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
// 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;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public static class Constants
{
public static readonly string VsProjectItemKindPhysicalFile = "{6BB5F8EE-4483-11D3-8BCF-00C04F8EC28C}";
public static readonly string VsProjectItemKindPhysicalFolder = "{6BB5F8EF-4483-11D3-8BCF-00C04F8EC28C}";
}
}

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

@ -36,7 +36,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -36,7 +36,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public Solution Solution {
get {
if (IsSolutionOpen) {
return new Solution(projectService.OpenSolution);
return new Solution(projectService);
}
return null;
}
@ -55,23 +55,16 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -55,23 +55,16 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public object ActiveSolutionProjects {
get { return GetProjectsInSolution().ToArray(); }
}
IEnumerable<object> GetProjectsInSolution()
{
foreach (SD.MSBuildBasedProject msbuildProject in GetOpenMSBuildProjects()) {
yield return new Project(msbuildProject);
get {
if (IsSolutionOpen) {
return Solution.Projects.ToArray();
}
return new Project[0];
}
}
IEnumerable<SD.IProject> GetOpenMSBuildProjects()
{
return projectService.GetOpenProjects();
}
public SourceControl SourceControl {
get { throw new NotImplementedException(); }
get { return null; }
}
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItem.cs

@ -44,6 +44,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -44,6 +44,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return true;
}
return false;
}
}
}
}

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

@ -49,10 +49,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -49,10 +49,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
Properties = new Properties(propertyFactory);
}
public virtual string Kind {
get { throw new NotImplementedException(); }
}
public virtual string Name {
get { return MSBuildProject.Name; }
}
@ -88,8 +84,16 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -88,8 +84,16 @@ namespace ICSharpCode.PackageManagement.EnvDTE
string GetProjectType()
{
var projectType = new ProjectType(this);
return projectType.Type;
return new ProjectType(this).Type;
}
public virtual string Kind {
get { return GetProjectKind(); }
}
string GetProjectKind()
{
return new ProjectKind(this).Kind;
}
internal MSBuildBasedProject MSBuildProject { get; private set; }
@ -174,5 +178,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -174,5 +178,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public virtual ConfigurationManager ConfigurationManager {
get { throw new NotImplementedException(); }
}
internal virtual string GetLowercaseFileExtension()
{
return Path.GetExtension(FileName).ToLowerInvariant();
}
}
}

14
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs

@ -24,6 +24,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -24,6 +24,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
this.ContainingProject = project;
this.ProjectItems = new DirectoryProjectItems(this);
CreateProperties();
Kind = Constants.VsProjectItemKindPhysicalFile;
}
public ProjectItem()
@ -40,12 +41,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -40,12 +41,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
get { return Path.GetFileName(projectItem.Include); }
}
public virtual string Kind {
get { throw new NotImplementedException(); }
}
public virtual string Kind { get; set; }
public Project SubProject {
get { throw new NotImplementedException(); }
get { return null; }
}
public virtual Properties Properties { get; private set; }
@ -105,5 +104,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -105,5 +104,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
return new ProjectItemRelationship(this, msbuildProjectItem);
}
/// <summary>
/// TODO: delete project item from project
/// </summary>
public void Delete()
{
}
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs

@ -95,7 +95,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -95,7 +95,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public virtual int Count {
get { throw new NotImplementedException(); }
get { return new ProjectItemsInsideProject(project).Count; }
}
}
}

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

@ -28,6 +28,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -28,6 +28,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return projectItems.GetEnumerator();
}
internal virtual int Count {
get { return GetProjectItems().Count(); }
}
IEnumerable<ProjectItem> GetProjectItems()
{
foreach (SD.ProjectItem item in project.MSBuildProject.Items) {
@ -124,7 +128,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -124,7 +128,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
var directoryItem = new FileProjectItem(project.MSBuildProject, ItemType.Folder);
directoryItem.Include = directoryName;
return new ProjectItem(project, directoryItem);
return new ProjectItem(project, directoryItem) { Kind = Constants.VsProjectItemKindPhysicalFolder };
}
string GetFirstSubDirectoryName(string include)

29
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
// 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 SD = ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class ProjectKind
{
public ProjectKind(Project project)
{
this.Kind = GetProjectKind(project);
}
string GetProjectKind(Project project)
{
string type = new ProjectType(project).Type;
if (type == ProjectType.CSharp) {
return SD.ProjectTypeGuids.CSharp;
} else if (type == ProjectType.VBNet) {
return SD.ProjectTypeGuids.VBNet;
}
return String.Empty;
}
public string Kind { get; private set; }
}
}

22
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs

@ -2,34 +2,28 @@ @@ -2,34 +2,28 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class ProjectType
{
Project project;
public static readonly string VBNet = "VB.NET";
public static readonly string CSharp = "C#";
public ProjectType(Project project)
{
this.project = project;
Type = String.Empty;
GetProjectType();
this.Type = GetProjectType(project);
}
void GetProjectType()
string GetProjectType(Project project)
{
string extension = GetProjectFileExtension();
string extension = project.GetLowercaseFileExtension();
if (extension == ".csproj") {
Type = "C#";
return CSharp;
} else if (extension == ".vbproj") {
Type = "VB.NET";
return VBNet;
}
}
string GetProjectFileExtension()
{
return Path.GetExtension(project.FileName).ToLowerInvariant();
return String.Empty;
}
public string Type { get; private set; }

20
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Projects.cs

@ -4,23 +4,39 @@ @@ -4,23 +4,39 @@
using System;
using System.Collections;
using System.Collections.Generic;
using SD = ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class Projects : MarshalByRefObject, IEnumerable<Project>
{
public Projects()
IPackageManagementProjectService projectService;
public Projects(IPackageManagementProjectService projectService)
{
this.projectService = projectService;
}
public IEnumerator<Project> GetEnumerator()
{
throw new NotImplementedException();
return GetProjectsInSolution().GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
IEnumerable<Project> GetProjectsInSolution()
{
foreach (SD.MSBuildBasedProject msbuildProject in GetOpenMSBuildProjects()) {
yield return new Project(msbuildProject);
}
}
IEnumerable<SD.IProject> GetOpenMSBuildProjects()
{
return projectService.GetOpenProjects();
}
}
}

13
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Solution.cs

@ -8,11 +8,14 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -8,11 +8,14 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public class Solution : MarshalByRefObject
{
IPackageManagementProjectService projectService;
SD.Solution solution;
public Solution(SD.Solution solution)
public Solution(IPackageManagementProjectService projectService)
{
this.solution = solution;
this.projectService = projectService;
this.solution = projectService.OpenSolution;
this.Projects = new Projects(projectService);
}
public string FullName {
@ -24,11 +27,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -24,11 +27,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public bool IsOpen {
get { throw new NotImplementedException(); }
get { return projectService.OpenSolution == solution; }
}
public Projects Projects {
get { throw new NotImplementedException(); }
}
public Projects Projects { get; private set; }
}
}

9
src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/Package.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 Microsoft.VisualStudio.ExtensionManager;
namespace Microsoft.VisualStudio.Shell
@ -10,11 +11,15 @@ namespace Microsoft.VisualStudio.Shell @@ -10,11 +11,15 @@ namespace Microsoft.VisualStudio.Shell
{
public static object GetGlobalService(Type serviceType)
{
//typeof(DTE)
//typeof(IVsSolution)
//typeof(SComponentModel) --> not used - console initializer.
//typeof(SVsExtensionManager)
return new SVsExtensionManager();
if (serviceType == typeof(DTE)) {
return new DTE();
} else if (serviceType == typeof(SVsExtensionManager)) {
return new SVsExtensionManager();
}
return null;
}
}
}

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

@ -69,6 +69,7 @@ @@ -69,6 +69,7 @@
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Properties\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Src\EnvDTE\SolutionTests.cs" />
<Compile Include="Src\Helpers\FakeSelectProjectsService.cs" />
<Compile Include="Src\Helpers\FakeSolutionPackageRepositoryFactory.cs" />
<Compile Include="Src\Helpers\FakeUpdatePackageActions.cs" />

45
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs

@ -33,8 +33,8 @@ namespace PackageManagement.Tests.EnvDTE @@ -33,8 +33,8 @@ namespace PackageManagement.Tests.EnvDTE
CreateProjectItems();
msbuildProject.AddFile(@"src\program.cs");
var directoryItem = projectItems.Item("src");
var directoryProjectItems = directoryItem.ProjectItems;
ProjectItem directoryItem = projectItems.Item("src");
ProjectItems directoryProjectItems = directoryItem.ProjectItems;
string[] expectedFiles = new string[] {
"program.cs"
@ -49,8 +49,8 @@ namespace PackageManagement.Tests.EnvDTE @@ -49,8 +49,8 @@ namespace PackageManagement.Tests.EnvDTE
CreateProjectItems();
msbuildProject.AddDirectory(@"src\test");
var directoryItem = projectItems.Item("src");
var directoryProjectItems = directoryItem.ProjectItems;
ProjectItem directoryItem = projectItems.Item("src");
ProjectItems directoryProjectItems = directoryItem.ProjectItems;
var items = directoryProjectItems as IEnumerable;
string[] expectedItems = new string[] {
@ -67,8 +67,8 @@ namespace PackageManagement.Tests.EnvDTE @@ -67,8 +67,8 @@ namespace PackageManagement.Tests.EnvDTE
msbuildProject.AddFile(@"src\test.cs");
msbuildProject.AddFile("program.cs");
var directoryItem = projectItems.Item("src");
var directoryProjectItems = directoryItem.ProjectItems;
ProjectItem directoryItem = projectItems.Item("src");
ProjectItems directoryProjectItems = directoryItem.ProjectItems;
var items = directoryProjectItems as IEnumerable;
string[] expectedItems = new string[] {
@ -84,9 +84,9 @@ namespace PackageManagement.Tests.EnvDTE @@ -84,9 +84,9 @@ namespace PackageManagement.Tests.EnvDTE
CreateProjectItems();
msbuildProject.AddFile(@"src\test\test.cs");
var directoryItem = projectItems.Item("src");
var testDirectoryItem = directoryItem.ProjectItems.Item("test");
var testDirectoryProjectItems = testDirectoryItem.ProjectItems;
ProjectItem directoryItem = projectItems.Item("src");
ProjectItem testDirectoryItem = directoryItem.ProjectItems.Item("test");
ProjectItems testDirectoryProjectItems = testDirectoryItem.ProjectItems;
var items = testDirectoryProjectItems as IEnumerable;
string[] expectedItems = new string[] {
@ -95,5 +95,32 @@ namespace PackageManagement.Tests.EnvDTE @@ -95,5 +95,32 @@ namespace PackageManagement.Tests.EnvDTE
ProjectItemCollectionAssert.AreEqual(expectedItems, items);
}
[Test]
public void Kind_ProjectDirectory_ReturnsGuidForDirectory()
{
CreateProjectItems();
msbuildProject.AddFile(@"src\program.cs");
ProjectItem directoryItem = projectItems.Item("src");
string kind = directoryItem.Kind;
Assert.AreEqual(Constants.VsProjectItemKindPhysicalFolder, kind);
}
[Test]
public void Kind_ProjectFile_ReturnsGuidForFile()
{
CreateProjectItems();
msbuildProject.AddFile(@"src\program.cs");
ProjectItem directoryItem = projectItems.Item("src");
ProjectItem fileItem = directoryItem.ProjectItems.Item("program.cs");
string kind = fileItem.Kind;
Assert.AreEqual(Constants.VsProjectItemKindPhysicalFile, kind);
}
}
}

11
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs

@ -320,5 +320,16 @@ namespace PackageManagement.Tests.EnvDTE @@ -320,5 +320,16 @@ namespace PackageManagement.Tests.EnvDTE
bool contains = ex.Message.Contains("'test.cs'");
Assert.IsTrue(contains);
}
[Test]
public void Count_ProjectHasOneFile_ReturnsOne()
{
CreateProjectItems();
msbuildProject.AddFile(@"Test.cs");
int count = projectItems.Count;
Assert.AreEqual(1, count);
}
}
}

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

@ -88,5 +88,49 @@ namespace PackageManagement.Tests.EnvDTE @@ -88,5 +88,49 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual("VB.NET", projectType);
}
[Test]
public void Type_ProjectHasUnknownProjectExtension_ReturnsEmptyString()
{
CreateProject();
msbuildProject.FileName = @"c:\projects\myproject\test.unknown";
string projectType = project.Type;
Assert.AreEqual(String.Empty, projectType);
}
[Test]
public void Kind_ProjectIsCSharpProject_ReturnsCSharpProjectTypeGuid()
{
CreateProject();
msbuildProject.FileName = @"d:\projects\myproject\test.csproj";
string kind = project.Kind;
Assert.AreEqual(ProjectTypeGuids.CSharp, kind);
}
[Test]
public void Kind_ProjectIsVBNetProject_ReturnsCSharpProjectTypeGuid()
{
CreateProject();
msbuildProject.FileName = @"d:\projects\myproject\test.vbproj";
string kind = project.Kind;
Assert.AreEqual(ProjectTypeGuids.VBNet, kind);
}
[Test]
public void Kind_ProjectHasUnknownFileExtension_ReturnsEmptyString()
{
CreateProject();
msbuildProject.FileName = @"d:\projects\myproject\test.unknown";
string kind = project.Kind;
Assert.AreEqual(String.Empty, kind);
}
}
}

105
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/SolutionTests.cs

@ -0,0 +1,105 @@ @@ -0,0 +1,105 @@
// 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 System.Linq;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.EnvDTE;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using SD = ICSharpCode.SharpDevelop.Project;
namespace PackageManagement.Tests.EnvDTE
{
[TestFixture]
public class SolutionTests
{
Solution solution;
FakePackageManagementProjectService fakeProjectService;
SD.Solution sharpDevelopSolution;
void CreateSolution()
{
fakeProjectService = new FakePackageManagementProjectService();
sharpDevelopSolution = CreateSharpDevelopSolution();
fakeProjectService.OpenSolution = sharpDevelopSolution;
solution = new Solution(fakeProjectService);
}
SD.Solution CreateSharpDevelopSolution()
{
return new SD.Solution(new SD.MockProjectChangeWatcher());
}
SD.Solution OpenDifferentSolution()
{
SD.Solution solution = CreateSharpDevelopSolution();
fakeProjectService.OpenSolution = solution;
return solution;
}
void NoOpenSolution()
{
fakeProjectService.OpenSolution = null;
}
void AddProjectToSolution(string projectName)
{
TestableProject project = ProjectHelper.CreateTestProject(projectName);
fakeProjectService.AddFakeProject(project);
}
[Test]
public void IsOpen_NoOpenSolution_ReturnsFalse()
{
CreateSolution();
NoOpenSolution();
bool open = solution.IsOpen;
Assert.IsFalse(open);
}
[Test]
public void IsOpen_SolutionOpenInSharpDevelop_ReturnsTrue()
{
CreateSolution();
bool open = solution.IsOpen;
Assert.IsTrue(open);
}
[Test]
public void IsOpen_DifferentSolutionOpenInSharpDevelop_ReturnsFalse()
{
CreateSolution();
OpenDifferentSolution();
bool open = solution.IsOpen;
Assert.IsFalse(open);
}
[Test]
public void Projects_SolutionHasNoProjects_NoProjectsInCollection()
{
CreateSolution();
int count = solution.Projects.ToList().Count;
Assert.AreEqual(0, count);
}
[Test]
public void Projects_SolutionHasOnProject_OneProjectInCollection()
{
CreateSolution();
AddProjectToSolution("MyProject");
Project project = solution.Projects.First();
Assert.AreEqual("MyProject", project.Name);
}
}
}

17
src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/PackageTests.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 Microsoft.VisualStudio.ExtensionManager;
using Microsoft.VisualStudio.Shell;
using NUnit.Framework;
@ -18,5 +19,21 @@ namespace PackageManagement.Tests.VisualStudio @@ -18,5 +19,21 @@ namespace PackageManagement.Tests.VisualStudio
Assert.IsInstanceOf(typeof(SVsExtensionManager), extensionManager);
}
[Test]
public void GetGlobalService_GetDTE_ReturnsDTE()
{
object dte = Package.GetGlobalService(typeof(DTE)) as DTE;
Assert.IsInstanceOf(typeof(DTE), dte);
}
[Test]
public void GetGlobalService_UnknownType_ReturnsNull()
{
object instance = Package.GetGlobalService(typeof(PackageTests));
Assert.IsNull(instance);
}
}
}

Loading…
Cancel
Save