private void GeneratePackagesConfig(Project.Configuration conf, DotNetFramework frameworks, List <string> generatedFiles, List <string> skipFiles) { var packagesConfigPath = PackagesConfigPath; // No NuGet references and no trace of a previous packages.config if (conf.ReferencesByNuGetPackage.Count == 0) { if (!File.Exists(packagesConfigPath)) { return; } } lock (s_packagesConfigLock) { if (conf.ReferencesByNuGetPackage.Count == 0) { var fi = new FileInfo(packagesConfigPath); if (!fi.IsReadOnly) // Do not delete packages.config submitted in P4 { Util.TryDeleteFile(packagesConfigPath); } return; } if (IsGenerateNeeded(packagesConfigPath)) { FileGenerator fileGenerator = new FileGenerator(); fileGenerator.Write(Template.Begin); // dependencies DotNetFramework dnfs = ((DotNetFramework[])Enum.GetValues(typeof(DotNetFramework))).First(f => frameworks.HasFlag(f)); for (int i = 0; i < conf.ReferencesByNuGetPackage.SortedValues.Count; ++i) { using (fileGenerator.Declare("dependency", conf.ReferencesByNuGetPackage.SortedValues[i])) using (fileGenerator.Declare("framework", dnfs.ToFolderName())) fileGenerator.Write(Template.DependenciesItem); } fileGenerator.Write(Template.End); bool written = _builder.Context.WriteGeneratedFile(GetType(), new FileInfo(packagesConfigPath), fileGenerator.ToMemoryStream()); if (written) { generatedFiles.Add(packagesConfigPath); } else { skipFiles.Add(packagesConfigPath); } } } IsGenerated = true; }
private void GenerateProjectJson(Project.Configuration conf, DotNetFramework frameworks, List <string> generatedFiles, List <string> skipFiles) { var projectJsonPath = ProjectJsonPath; var projectJsonLockPath = ProjectJsonLockPath; // No NuGet references and no trace of a previous project.json if (conf.ReferencesByNuGetPackage.Count == 0) { if (!File.Exists(projectJsonPath)) { return; } } lock (s_projectJsonLock) { if (conf.ReferencesByNuGetPackage.Count == 0) { var fi = new FileInfo(projectJsonPath); if (!fi.IsReadOnly) // Do not delete project.json submitted in P4 { Util.TryDeleteFile(projectJsonPath); Util.TryDeleteFile(projectJsonLockPath); } return; } if (IsGenerateNeeded(projectJsonPath)) { FileGenerator fileGenerator = new FileGenerator(); fileGenerator.Write(Template.Begin); // frameworks fileGenerator.Write(Template.FrameworksBegin); DotNetFramework[] dnfs = ((DotNetFramework[])Enum.GetValues(typeof(DotNetFramework))).Where(f => frameworks.HasFlag(f)).ToArray(); for (int i = 0; i < dnfs.Length; ++i) { if (i != 0) { fileGenerator.Write(","); } using (fileGenerator.Declare("framework", dnfs[i].ToFolderName())) fileGenerator.Write(Template.FrameworksItem); } fileGenerator.Write(Template.FrameworksEnd); fileGenerator.Write(","); // runtimes fileGenerator.Write(Template.RuntimesBegin); var runtimes = new[] { "win-x64", "win-x86", "win-anycpu", "win" }; for (int i = 0; i < runtimes.Length; ++i) { if (i != 0) { fileGenerator.Write(","); } using (fileGenerator.Declare("runtime", runtimes[i])) fileGenerator.Write(Template.RuntimesItem); } fileGenerator.Write(Template.RuntimesEnd); fileGenerator.Write(","); // dependencies fileGenerator.Write(Template.DependenciesBegin); for (int i = 0; i < conf.ReferencesByNuGetPackage.SortedValues.Count; ++i) { if (i != 0) { fileGenerator.Write(","); } var packageReference = conf.ReferencesByNuGetPackage.SortedValues[i]; bool hasOptions = false; // Check for private assets string privateAssets = null; if (packageReference.PrivateAssets != PackageReferences.DefaultPrivateAssets) { privateAssets = string.Join(",", PackageReferences.PackageReference.GetFormatedAssetsDependency(packageReference.PrivateAssets)); hasOptions = true; } // Check for a custom type string referenceType = null; if (!string.IsNullOrEmpty(packageReference.ReferenceType)) { referenceType = packageReference.ReferenceType; hasOptions = true; } if (!hasOptions) { using (fileGenerator.Declare("dependency", packageReference)) fileGenerator.Write(Template.DependenciesItem); } else { using (fileGenerator.Declare("dependency", packageReference)) { fileGenerator.Write($"{Template.BeginDependencyItem}"); if (!string.IsNullOrEmpty(privateAssets)) { using (fileGenerator.Declare("privateAssets", privateAssets)) fileGenerator.Write($"{Template.DependencyPrivateAssets}"); } if (!string.IsNullOrEmpty(referenceType)) { using (fileGenerator.Declare("referenceType", referenceType)) fileGenerator.Write($"{Template.DependencyReferenceType}"); } fileGenerator.Write($"{Template.EndDependencyItem}"); } } } fileGenerator.Write(Template.DependenciesEnd); fileGenerator.Write(Template.End); fileGenerator.RemoveTaggedLines(); bool written = _builder.Context.WriteGeneratedFile(GetType(), new FileInfo(projectJsonPath), fileGenerator.ToMemoryStream()); if (written) { generatedFiles.Add(projectJsonPath); } else { skipFiles.Add(projectJsonPath); } } } IsGenerated = true; }
private void GenerateProjectJson(Project.Configuration conf, DotNetFramework frameworks, List <string> generatedFiles, List <string> skipFiles) { var projectJsonPath = ProjectJsonPath; var projectJsonLockPath = ProjectJsonLockPath; // No NuGet references and no trace of a previous project.json if (conf.ReferencesByNuGetPackage.Count == 0) { if (!File.Exists(projectJsonPath)) { return; } } lock (s_projectJsonLock) { if (conf.ReferencesByNuGetPackage.Count == 0) { var fi = new FileInfo(projectJsonPath); if (!fi.IsReadOnly) // Do not delete project.json submitted in P4 { Util.TryDeleteFile(projectJsonPath); Util.TryDeleteFile(projectJsonLockPath); } return; } if (IsGenerateNeeded(projectJsonPath)) { FileGenerator fileGenerator = new FileGenerator(); fileGenerator.Write(Template.Begin); // frameworks fileGenerator.Write(Template.FrameworksBegin); DotNetFramework[] dnfs = ((DotNetFramework[])Enum.GetValues(typeof(DotNetFramework))).Where(f => frameworks.HasFlag(f)).ToArray(); for (int i = 0; i < dnfs.Length; ++i) { if (i != 0) { fileGenerator.Write(","); } using (fileGenerator.Declare("framework", dnfs[i].ToFolderName())) fileGenerator.Write(Template.FrameworksItem); } fileGenerator.Write(Template.FrameworksEnd); fileGenerator.Write(","); // runtimes fileGenerator.Write(Template.RuntimesBegin); var runtimes = new[] { "win-x64", "win-x86", "win-anycpu", "win" }; for (int i = 0; i < runtimes.Length; ++i) { if (i != 0) { fileGenerator.Write(","); } using (fileGenerator.Declare("runtime", runtimes[i])) fileGenerator.Write(Template.RuntimesItem); } fileGenerator.Write(Template.RuntimesEnd); fileGenerator.Write(","); // dependencies fileGenerator.Write(Template.DependenciesBegin); for (int i = 0; i < conf.ReferencesByNuGetPackage.SortedValues.Count; ++i) { if (i != 0) { fileGenerator.Write(","); } using (fileGenerator.Declare("dependency", conf.ReferencesByNuGetPackage.SortedValues[i])) fileGenerator.Write(Template.DependenciesItem); } fileGenerator.Write(Template.DependenciesEnd); fileGenerator.Write(Template.End); bool written = _builder.Context.WriteGeneratedFile(GetType(), new FileInfo(projectJsonPath), fileGenerator.ToMemoryStream()); if (written) { generatedFiles.Add(projectJsonPath); } else { skipFiles.Add(projectJsonPath); } } } IsGenerated = true; }