void EnsureBuildPackagingNugetInstalled(IProjectNode project)
        {
            var dteProject = project.As <EnvDTE.Project>();

            if (!packageInstallerServices.IsBuildPackagingNuGetInstalled(dteProject))
            {
                packageInstaller.InstallBuildPackagingNuget(dteProject);
            }
        }
        public void RunFinished()
        {
            var solutionContext = new SolutionContext(solutionExplorer);

            solutionContext.BaseProjectName = SafeProjectName;

            if (ViewModel.UsePlatformSpecific)
            {
                solutionContext.SharedProject = solutionExplorer.Solution.UnfoldTemplate(
                    Constants.Templates.SharedProject,
                    SafeProjectName + "." + Constants.Suffixes.SharedProject);


                // HACK (NuGetTemplate): dteSolution2.GetProjectTemplate ("NuGet.Packaging.VisualStudio.Package", "NuGet")
                // is not working when "NuGet" is used as the language name
                // So for now we replicate the template for CS and set its visibility to hidden

                solutionContext.NuGetProject = solutionExplorer.Solution.UnfoldTemplate(
                    Constants.Templates.NuGetPackage,
                    SafeProjectName + "." + Constants.Suffixes.NuGetPackage);

                //solutionContext.NuGetProject = solutionExplorer.Solution.UnfoldTemplate(
                //	Constants.Templates.NuGetPackage,
                //	SafeProjectName + "." + Constants.Suffixes.NuGetPackage,
                //Constants.Language);

                foreach (var selectedPlatform in ViewModel.Platforms.Where(x => x.IsSelected))
                {
                    var platformProject = solutionExplorer.Solution.UnfoldTemplate(
                        Constants.Templates.GetPlatformTemplate(selectedPlatform.Id),
                        solutionContext.GetTargetProjectName(selectedPlatform));

                    var platformDteProject = platformProject.As <EnvDTE.Project>();

                    if (!packageInstallerServices.IsBuildPackagingNuGetInstalled(platformDteProject))
                    {
                        packageInstaller.InstallBuildPackagingNuget(platformDteProject);
                    }

                    platformProject.AddReference(solutionContext.SharedProject);
                    solutionContext.NuGetProject.AddReference(platformProject);
                }
            }
            else
            {
                solutionContext.SharedProject = solutionExplorer.Solution.UnfoldTemplate(
                    Constants.Templates.PortableClassLibrary,
                    SafeProjectName);
            }
        }
示例#3
0
        protected override void Execute()
        {
            if (ActiveProject == null)
            {
                return;
            }

            var project = ActiveProject.As <EnvDTE.Project>();
            var vsBuildPropertyStorage = ActiveProject.AsVsHierarchy() as IVsBuildPropertyStorage;

            if (vsBuildPropertyStorage != null)
            {
                var storage   = new BuildPropertyStorage(vsBuildPropertyStorage);
                var viewModel = new PackageMetadataViewModel(storage);

                if (!packageInstallerServices.IsBuildPackagingNuGetInstalled(project))
                {
                    // Provide default values for required fields/properties
                    viewModel.PackageId      = project.Name;
                    viewModel.PackageVersion = "1.0.0";
                    viewModel.Description    = project.Name;
                    viewModel.Authors        = "MyCompany";
                }

                var view = new PackageMetadataView()
                {
                    DataContext = viewModel
                };
                if (dialogService.ShowDialog(view) == true)
                {
                    storage.CommitChanges();

                    if (!packageInstallerServices.IsBuildPackagingNuGetInstalled(project))
                    {
                        packageInstaller.InstallBuildPackagingNuget(project);
                    }

                    buildService.Pack(ActiveProject);
                }
            }
        }