/// <summary> /// Creates a Nuget package from a SmartInk Package /// </summary> /// <param name="package">Package to use for Nuget creation</param> /// <param name="destination">File handle for saving the Nuget package</param> public async Task PublishPackageAsync(ISmartInkPackage package, IStorageFile destination) { if (package == null) { throw new ArgumentNullException($"{nameof(package)} cannot be null"); } if (destination == null) { throw new ArgumentNullException($"{nameof(destination)} cannot be null"); } Debug.WriteLine($"Publish package"); ManifestMetadata metadata = new ManifestMetadata() { Title = $"{package.Name}", Owners = new string[] { "jabj" }, Authors = new string[] { "mauvo" }, Version = new NuGet.Versioning.NuGetVersion(new Version(package.Version)), Id = $"SmartInk.{package.Name}", Description = $"{package.Description}", MinClientVersionString = "3.3.0" }; NuGet.Frameworks.NuGetFramework targetFramework = new NuGet.Frameworks.NuGetFramework(new NuGet.Frameworks.NuGetFramework(".NETStandard2.0")); IEnumerable <NuGet.Packaging.Core.PackageDependency> packages = new NuGet.Packaging.Core.PackageDependency[] { new NuGet.Packaging.Core.PackageDependency("NETStandard.Library", new NuGet.Versioning.VersionRange(new NuGet.Versioning.NuGetVersion(2, 0, 0))) }; var dependencyGroup = new PackageDependencyGroup(targetFramework, packages); metadata.DependencyGroups = new PackageDependencyGroup[] { dependencyGroup }; PackageBuilder builder = new PackageBuilder(); builder.Populate(metadata); builder.ContentFiles.Add(new ManifestContentFiles() { Include = $"**/SmartInkPackages/*", CopyToOutput = "true", Flatten = "false", BuildAction = "None" }); builder.ContentFiles.Add(new ManifestContentFiles() { Include = $"**/SmartInkPackages/{package.Name}/*", CopyToOutput = "true", Flatten = "false", BuildAction = "None" }); builder.ContentFiles.Add(new ManifestContentFiles() { Include = $"**/SmartInkPackages/{package.Name}/Model/*", CopyToOutput = "true", Flatten = "false", BuildAction = "None" }); builder.ContentFiles.Add(new ManifestContentFiles() { Include = $"**/SmartInkPackages/{package.Name}/Icons/*", CopyToOutput = "true", Flatten = "false", BuildAction = "None" }); var root = $"{_provider.RootFolderPath}\\{package.Name}\\"; List <ManifestFile> manifestFiles = new List <ManifestFile>(); var rootFolder = await StorageFolder.GetFolderFromPathAsync(root); var files = await rootFolder.GetFilesAsync(Windows.Storage.Search.CommonFileQuery.OrderByName); foreach (var file in files) { ManifestFile manifestFile = new ManifestFile(); manifestFile.Source = file.Path; manifestFile.Target = $"contentFiles\\cs\\uap10.0\\SmartInkPackages{file.Path.Replace(_provider.RootFolderPath, "")}"; manifestFiles.Add(manifestFile); } builder.PopulateFiles(root, manifestFiles); using (var fileaccess = await destination.OpenAsync(FileAccessMode.ReadWrite)) { Debug.WriteLine($"Publish package: {builder.ToString()}"); var stream = fileaccess.AsStreamForWrite(); builder.Save(stream); await stream.FlushAsync(); } }
public SmartInkPackageViewModel(ISmartInkPackage package) { BasePackage = package; }