コード例 #1
0
        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;
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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;
        }