public static ManifestDeclaration ToData(CdmManifestDeclarationDefinition instance, ResolveOptions resOpt, CopyOptions options) { var result = new ManifestDeclaration { Explanation = instance.Explanation, ManifestName = instance.ManifestName, LastFileStatusCheckTime = TimeUtils.GetFormattedDateString(instance.LastFileStatusCheckTime), LastFileModifiedTime = TimeUtils.GetFormattedDateString(instance.LastFileModifiedTime), Definition = instance.Definition }; return(result); }
public static CdmManifestDeclarationDefinition InstanceFromData(CdmCorpusContext ctx, ManifestDeclaration obj) { return(CdmObjectBase.InstanceFromData <CdmManifestDeclarationDefinition, ManifestDeclaration>(ctx, obj)); }
public static CdmManifestDeclarationDefinition FromData(CdmCorpusContext ctx, ManifestDeclaration obj) { var newManifestDoc = ctx.Corpus.MakeObject <CdmManifestDeclarationDefinition>(CdmObjectType.ManifestDeclarationDef, obj.ManifestName); newManifestDoc.Definition = obj.Definition; if (obj.LastFileStatusCheckTime != null) { newManifestDoc.LastFileStatusCheckTime = DateTimeOffset.Parse(obj.LastFileStatusCheckTime); } if (obj.LastFileModifiedTime != null) { newManifestDoc.LastFileModifiedTime = DateTimeOffset.Parse(obj.LastFileModifiedTime); } if (obj.Explanation != null) { newManifestDoc.Explanation = obj.Explanation; } return(newManifestDoc); }
/// <summary> /// Performs the NuGet package resolution. /// </summary> public override bool Execute() { var analyzers = new List <ITaskItem>(); var references = new List <ITaskItem>(); var copyLocals = new List <ITaskItem>(); if (PackagesConfigs == null || PackagesConfigs.Length == 0) { Log.LogError("PackagesConfigs property not specified."); return(false); } if (PackagesConfigs.Any(pc => string.IsNullOrWhiteSpace(pc.ItemSpec))) { Log.LogError("A PackagesConfigs element was not specified."); } ITaskItem packagesConfigNotFound = PackagesConfigs.FirstOrDefault(pc => !File.Exists(pc.ItemSpec)); if (packagesConfigNotFound != default(ITaskItem)) { Log.LogError("File '{0}' not found.", packagesConfigNotFound.ItemSpec); return(false); } var targetFrameworks = new List <FrameworkName>(); var targetFramework = new FrameworkName(TargetFramework); if (targetFramework.Identifier == ".NETPortable") { // Let's convert var folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), @"Reference Assemblies\Microsoft\Framework\.NETPortable", "v" + targetFramework.Version, "Profile", targetFramework.Profile, "SupportedFrameworks"); if (Directory.Exists(folder)) { foreach (var framework in Directory.EnumerateFiles(folder, "*.xml")) { var xml = XDocument.Load(framework).Root; targetFrameworks.Add(new FrameworkName(xml.Attribute("Identifier").Value, Version.Parse(xml.Attribute("MinimumVersion").Value))); } } else { // If the portable profile doesn't exist lets fallback to the default for Profile7. targetFrameworks.Add(new FrameworkName(".NETFramework", new Version(4, 5))); targetFrameworks.Add(new FrameworkName(".NETCore", new Version(4, 5))); } } else { targetFrameworks.Add(targetFramework); } var context = AssetResolutionContext.Empty .WithTargetFrameworks(new FrameworkNameSet(targetFrameworks)) .WithArchitecture(Platform ?? "") .WithAssemblyAssetTypes() .RegisterProperty("ProjectType", new LanguagePropertyDefinition()) .SetProperty("ProjectType", Language) .RegisterProperty("DesignTimeOnly", new AnythingGoesPropertyDefinition()) .SetProperty("DesignTimeOnly", "true") .RegisterAssetType("Analyzer"); var platformNames = new List <PlatformName>(); PlatformName singularPlatformName; if (PlatformName.TryParse(TargetPlatformMoniker, out singularPlatformName)) { platformNames.Add(singularPlatformName); } if (platformNames.Any()) { context = context.WithTargetPlatforms(new PlatformNameSet(platformNames)); } var resolver = new AssetResolver(context); var packagesConfigs = (from packageConfig in PackagesConfigs select new PackageReferenceFile(Path.GetFullPath(packageConfig.ItemSpec))).ToArray(); var succeeded = true; var repository = new SharedPackageRepository(PackageRoot); foreach (var packageReference in GetPackageReferences(packagesConfigs)) { IPackage package; if (!repository.TryFindPackage(packageReference.Id, packageReference.Version, out package)) { Log.LogError("Unable to find nupkg for {0}.", packageReference.Id); succeeded = false; continue; } var packageDescription = packageReference.Id + "." + packageReference.Version.ToString(); var manifest = ManifestDeclaration.Parse(Path.Combine(PackageRoot, packageDescription), package); // If there are no assets we cannot if (!manifest.Groups.Any()) { Log.LogMessage("no assets for " + packageDescription); continue; } try { Log.LogMessage("resolving assets for " + packageDescription); var assets = resolver.Resolve(manifest); foreach (var asset in assets) { switch (asset.Type) { case "Analyzer": analyzers.Add(new TaskItem(asset.Value)); Log.LogMessage("resolved analyzer: " + asset.Value); break; case WellKnownAssetType.ReferenceOnly: { var taskItem = new TaskItem(asset.Value); taskItem.SetMetadata("NuGetPackageId", packageReference.Id); taskItem.SetMetadata("NuGetPackageVersion", packageReference.Version.ToString()); taskItem.SetMetadata("ReferenceGrouping", packageReference.Id + ",Version=" + packageReference.Version.Version); taskItem.SetMetadata("ReferenceGroupingDisplayName", packageReference.Id); taskItem.SetMetadata("Private", "false"); references.Add(taskItem); Log.LogMessage("resolved reference: " + asset.Value); break; } case WellKnownAssetType.CopyLocal: { var taskItem = new TaskItem(asset.Value); taskItem.SetMetadata("CopyToOutputDirectory", "PreserveNewest"); copyLocals.Add(taskItem); Log.LogMessage("resolved copylocal: " + asset.Value); break; } } } } catch (AssetResolutionException ex) { Log.LogWarning("Unable to resolve the assets of {0}: {1}", packageReference.Id, ex.Message); } } ResolvedAnalyzers = analyzers.ToArray(); ResolvedReferences = references.ToArray(); ResolvedCopyLocal = copyLocals.ToArray(); return(succeeded); }