Exemple #1
0
        public MetaPackScenarioTestBase()
        {
            var useSPMeta2Provider       = true;
            var useSharePointPnPProvider = false;

            var files2delete = new List <string>();

            files2delete.AddRange(Directory.GetFiles(Directory.GetCurrentDirectory(), "SPMeta2.CSOM**dll"));
            files2delete.AddRange(Directory.GetFiles(Directory.GetCurrentDirectory(), "Microsoft.SharePoint.Client**dll"));

            foreach (var f in files2delete)
            {
                try
                {
                    System.IO.File.Delete(f);
                }
                catch (Exception e)
                {
                }
            }


            var regressionTraceService = new RegressionTraceService();

            SPMeta2SolutionPackagingService       = new SPMeta2SolutionPackageService();
            SharePointPnPSolutionPackagingService = new SharePointPnPSolutionPackageService();

            MetaPackServiceContainer.Instance.ReplaceService(typeof(TraceServiceBase), regressionTraceService);

            UseLocaNuGet = true;

            InitEnvironmentVariables();

            SPMeta2ServiceContext = new MetaPackServiceContext
            {
                PackagingService  = new SPMeta2SolutionPackageService(),
                DeploymentService = new SPMeta2SolutionPackageDeploymentService(),

                ToolPackage = new SolutionToolPackage
                {
                    Id = "MetaPack.SPMeta2"
                },

                CIPackageId = "MetaPack.SPMeta2.CI"
            };

            SharePointPnPServiceContext = new MetaPackServiceContext
            {
                PackagingService  = new SharePointPnPSolutionPackageService(),
                DeploymentService = new SharePointPnPSolutionDeploymentService(),

                ToolPackage = new SolutionToolPackage
                {
                    Id = "MetaPack.SharePointPnP"
                },

                CIPackageId = "MetaPack.SharePointPnP.CI"
            };

            //if (!Environment.Is64BitProcess)
            //    throw new Exception("x64 process is requred. VS -> Test -> Test Settings -> Default process architecture -> x64");

            // packaging
            MetaPackService = new List <MetaPackServiceContext>();

            if (useSPMeta2Provider)
            {
                MetaPackService.Add(SPMeta2ServiceContext);
            }

            if (useSharePointPnPProvider)
            {
                MetaPackService.Add(SharePointPnPServiceContext);
            }

            var localAssemblyDirectoryPath = Path.GetDirectoryName(GetType().Assembly.Location);
            var localNuGetFolder           = Path.GetFullPath(localAssemblyDirectoryPath + @"\..\..\..\Build\local-ci-packages");

            LocalNuGetRepositoryFolderPath = localNuGetFolder;

            Directory.CreateDirectory(LocalNuGetRepositoryFolderPath);

            if (UseLocaNuGet)
            {
                var toolResolutionService = new ToolResolutionService();
                toolResolutionService.PackageSources.Add(LocalNuGetRepositoryFolderPath);

                // environment varioable must go first so that we can override stuff
                toolResolutionService.InitPackageSourcesFromGetEnvironmentVariable("MetaPack.NuGet.Galleries", EnvironmentVariableTarget.Machine);
                toolResolutionService.InitPackageSourcesFromGetEnvironmentVariable("MetaPack.NuGet.Galleries", EnvironmentVariableTarget.User);
                toolResolutionService.InitPackageSourcesFromGetEnvironmentVariable("MetaPack.NuGet.Galleries", EnvironmentVariableTarget.Process);

                toolResolutionService.InitPackageSourcesFromString(ConfigurationManager.AppSettings["NuGet.Galleries"]);

                toolResolutionService.RefreshPackageManager();

                MetaPackServiceContainer.Instance.RegisterService(typeof(ToolResolutionService), toolResolutionService);
            }
        }
Exemple #2
0
        public void Create_Package_PnP()
        {
            // A high level abstraction for solution package.
            // Follows NuGet spec design - https://docs.nuget.org/ndocs/schema/nuspec
            // Solution package is a container for SERIALIZED models.
            // It means that solution package does not depend on a particular API oe assembly so that  models have to be in serialazable, platform and api independent way.

            var solutionPackage = new SolutionPackageBase();

            solutionPackage.Name  = "Contoso Intranet PnP - Site Fields";
            solutionPackage.Title = "Contoso Intranet PnP - Site Fields";

            solutionPackage.Description = "Contains site level fields for Contoso intranet";
            solutionPackage.Id          = "Contoso.Intranet.SiteFields.PnP";
            solutionPackage.Authors     = "SubPoint Solutions";
            solutionPackage.Company     = "SubPoint Solutions";
            solutionPackage.Version     = "1.0.0.0";
            solutionPackage.Owners      = "SubPoint Solutions";

            solutionPackage.ReleaseNotes = "Initial set of the site fields for Contoso Intranet";
            solutionPackage.Summary      = "All site fields required for Contoso intranet";
            solutionPackage.ProjectUrl   = "https://github.com/SubPointSolutions/DefinitelyPacked";
            solutionPackage.IconUrl      = "https://github.com/SubPointSolutions/metapack/metapack.png";
            solutionPackage.LicenseUrl   = "https://opensource.org/licenses/MIT";

            solutionPackage.Copyright = "All yours";
            solutionPackage.Tags      = "MetaPack SPMeta2 SiteFields Taxonomy";

            // create a new ModelContainerBase for every SharePointPnP solution
            // * currently only OpenXML PnP packages as supported
            // then add to solution package
            // you can put "Order" option to control deployment order of the models

            // all your SharePointPnP OpenXML packages
            var allPnPOpenXmlFiles = new List <string>();

            for (var index = 0; index < allPnPOpenXmlFiles.Count; index++)
            {
                var pnpPackageFilePath = allPnPOpenXmlFiles[index];
                var pnpPackageBytes    = System.IO.File.ReadAllBytes(pnpPackageFilePath);

                var modelContainer = new ModelContainerBase
                {
                    Model = pnpPackageBytes
                };

                // add sort order to control deployment order of the models
                modelContainer.AdditionalOptions.Add(new OptionValue
                {
                    Name  = DefaultOptions.Model.Order.Id,
                    Value = index.ToString()
                });

                // add type of the SharePointPnP package
                // current only OpenXml is supoported
                modelContainer.AdditionalOptions.Add(new OptionValue
                {
                    Name  = DefaultOptions.Model.Type.Id,
                    Value = "SharePointPnP.OpenXml"
                });

                // add model container to solution
                solutionPackage.AddModel(modelContainer);
            }

            // flag a provider which will be used for solution package deployment
            solutionPackage.AdditionalOptions.Add(new OptionValue
            {
                Name  = DefaultOptions.SolutionToolPackage.PackageId.Id,
                Value = "MetaPack.SharePointPnP"
            });

            var solutionPackageService = new SharePointPnPSolutionPackageService();

            // save your NuGet solution package as stream
            var nuGetPackageStream = solutionPackageService.Pack(solutionPackage, null);

            // or save it straight to file, for instance, on shared folder
            solutionPackageService.PackToFile(solutionPackage, "Contoso.Intranet.SiteFields.PnP.nupkg");

            // or push it straight to NuGet gallery you've got - http://NuGet.org or http://MyGet.org
            // follow instructions on how obtain Url/Key for a specific NuGet Gallery
            var nuGetGallery_ApiUrl = "";
            var nuGetGallery_ApiKey = "";

            solutionPackageService.Push(solutionPackage, nuGetGallery_ApiUrl, nuGetGallery_ApiKey);
        }