PageRenderTime 50ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/SolutionFramework/Microsoft.VisualStudio.ServiceModel.DomainServices.Tools.10.0/Microsoft/VisualStudio/ServiceModel/DomainServices/Tools/RiaServicesLibraryWizard.cs

#
C# | 106 lines | 98 code | 8 blank | 0 comment | 18 complexity | be1efbea51f07c6680cc29fc00141404 MD5 | raw file
Possible License(s): Apache-2.0, LGPL-3.0
  1. namespace Microsoft.VisualStudio.ServiceModel.DomainServices.Tools
  2. {
  3. using EnvDTE;
  4. using EnvDTE80;
  5. using Microsoft.VisualStudio.Silverlight;
  6. using Microsoft.VisualStudio.TemplateWizard;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.IO;
  10. using System.Linq;
  11. using System.Runtime.InteropServices;
  12. public class RiaServicesLibraryWizard : IWizard
  13. {
  14. private SolutionFolder _activeSolutionFolder;
  15. private DTE2 _dte2;
  16. private Dictionary<string, string> _replacementsDictionary;
  17. private Project _slClassLibProject;
  18. public void BeforeOpeningFile(ProjectItem projectItem)
  19. {
  20. }
  21. public void ProjectFinishedGenerating(Project project)
  22. {
  23. this._slClassLibProject = project;
  24. }
  25. public void ProjectItemFinishedGenerating(ProjectItem projectItem)
  26. {
  27. }
  28. public void RunFinished()
  29. {
  30. Solution2 solution = (Solution2) this._dte2.Solution;
  31. string fullName = this._slClassLibProject.FullName;
  32. string name = this._replacementsDictionary["$safeprojectname$"];
  33. ProjectItem parentProjectItem = this._slClassLibProject.ParentProjectItem;
  34. ProjectItems items = (parentProjectItem == null) ? null : parentProjectItem.Collection;
  35. Project project = (items == null) ? null : (items.Parent as Project);
  36. SolutionFolder folder = ((project != null) && (project.Kind == "{66A26720-8FB5-11D2-AA7E-00C04F688DDE}")) ? (project.Object as SolutionFolder) : null;
  37. SolutionFolder folder2 = folder ?? this._activeSolutionFolder;
  38. if (folder2 == null)
  39. {
  40. try
  41. {
  42. folder2 = (SolutionFolder) solution.AddSolutionFolder(name).Object;
  43. }
  44. catch (COMException)
  45. {
  46. folder2 = null;
  47. }
  48. }
  49. string language = this._slClassLibProject.CodeModel.Language.Equals("{B5E9BD33-6D3E-4B5D-925E-8A43B79820B4}", StringComparison.OrdinalIgnoreCase) ? "VisualBasic" : "CSharp";
  50. string projectTemplate = solution.GetProjectTemplate("ClassLibrary.zip", language);
  51. string str5 = name + ".Web";
  52. string destination = Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(fullName)), str5);
  53. if (folder2 != null)
  54. {
  55. folder2.AddFromTemplate(projectTemplate, destination, str5);
  56. if (folder == null)
  57. {
  58. solution.Remove(this._slClassLibProject);
  59. this._slClassLibProject = folder2.AddFromFile(fullName);
  60. }
  61. }
  62. else
  63. {
  64. solution.AddFromTemplate(projectTemplate, destination, str5, false);
  65. }
  66. SLProjectExtender extender = this._slClassLibProject.get_Extender("SilverlightProject") as SLProjectExtender;
  67. if (extender != null)
  68. {
  69. string extension = Path.GetExtension(fullName);
  70. extender.LinkedServerProject = Path.Combine("..", Path.Combine(str5, str5 + extension));
  71. }
  72. }
  73. public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
  74. {
  75. this._dte2 = (DTE2) automationObject;
  76. this._replacementsDictionary = replacementsDictionary;
  77. this._replacementsDictionary["$targetsilverlightversion$"] = TemplateUtilities.GetSilverlightToolsVersion();
  78. this._dte2.Globals["safeclientprojectname"] = replacementsDictionary["$safeprojectname$"];
  79. Array source = null;
  80. try
  81. {
  82. source = (Array) this._dte2.ActiveSolutionProjects;
  83. }
  84. catch (COMException)
  85. {
  86. }
  87. Project project = (source == null) ? null : source.OfType<Project>().FirstOrDefault<Project>();
  88. if ((project != null) && (project.Kind == "{66A26720-8FB5-11D2-AA7E-00C04F688DDE}"))
  89. {
  90. this._activeSolutionFolder = project.Object as SolutionFolder;
  91. }
  92. }
  93. public bool ShouldAddProjectItem(string filePath)
  94. {
  95. return true;
  96. }
  97. }
  98. }