コード例 #1
0
        public ProjectContextBuilder Clone()
        {
            var builder = new ProjectContextBuilder()
                .WithLockFile(LockFile)
                .WithProject(Project)
                .WithProjectDirectory(ProjectDirectory)
                .WithTargetFramework(TargetFramework)
                .WithRuntimeIdentifiers(RuntimeIdentifiers)
                .WithReferenceAssembliesPath(ReferenceAssembliesPath)
                .WithPackagesDirectory(PackagesDirectory)
                .WithRootDirectory(RootDirectory)
                .WithProjectResolver(ProjectResolver)
                .WithLockFileResolver(LockFileResolver)
                .WithProjectReaderSettings(ProjectReaderSettings);
            if (IsDesignTime)
            {
                builder.AsDesignTime();
            }

            return builder;
        }
コード例 #2
0
        public ProjectContextBuilder Clone()
        {
            var builder = new ProjectContextBuilder()
                          .WithLockFile(LockFile)
                          .WithProject(Project)
                          .WithProjectDirectory(ProjectDirectory)
                          .WithTargetFramework(TargetFramework)
                          .WithRuntimeIdentifiers(RuntimeIdentifiers)
                          .WithReferenceAssembliesPath(ReferenceAssembliesPath)
                          .WithPackagesDirectory(PackagesDirectory)
                          .WithRootDirectory(RootDirectory)
                          .WithProjectResolver(ProjectResolver)
                          .WithLockFileResolver(LockFileResolver)
                          .WithProjectReaderSettings(ProjectReaderSettings);

            if (IsDesignTime)
            {
                builder.AsDesignTime();
            }

            return(builder);
        }
コード例 #3
0
        /// <summary>
        /// Produce all targets found in the lock file associated with this builder.
        /// Returns an empty enumerable if there is no lock file
        /// (making this unsuitable for scenarios where the lock file may not be present,
        /// such as at design-time)
        /// </summary>
        /// <returns></returns>
        public IEnumerable <ProjectContext> BuildAllTargets()
        {
            ProjectDirectory = Project?.ProjectDirectory ?? ProjectDirectory;
            EnsureProjectLoaded();
            LockFile = LockFile ?? LockFileResolver(ProjectDirectory);

            if (LockFile != null)
            {
                var deduper = new HashSet <string>();
                foreach (var target in LockFile.Targets)
                {
                    var context = Clone()
                                  .WithTargetFramework(target.TargetFramework)
                                  .WithRuntimeIdentifiers(new[] { target.RuntimeIdentifier }).Build();

                    var id = $"{context.TargetFramework}/{context.RuntimeIdentifier}";
                    if (deduper.Add(id))
                    {
                        yield return(context);
                    }
                }
            }
            else
            {
                // Build a context for each framework. It won't be fully valid, since it won't have resolved data or runtime data, but the diagnostics will show that.
                foreach (var framework in Project.GetTargetFrameworks())
                {
                    var builder = new ProjectContextBuilder()
                                  .WithProject(Project)
                                  .WithTargetFramework(framework.FrameworkName);
                    if (IsDesignTime)
                    {
                        builder.AsDesignTime();
                    }
                    yield return(builder.Build());
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// Produce all targets found in the lock file associated with this builder.
        /// Returns an empty enumerable if there is no lock file
        /// (making this unsuitable for scenarios where the lock file may not be present,
        /// such as at design-time)
        /// </summary>
        /// <returns></returns>
        public IEnumerable<ProjectContext> BuildAllTargets()
        {
            ProjectDirectory = Project?.ProjectDirectory ?? ProjectDirectory;
            EnsureProjectLoaded();
            LockFile = LockFile ?? LockFileResolver(ProjectDirectory);

            if (LockFile != null)
            {
                var deduper = new HashSet<string>();
                foreach (var target in LockFile.Targets)
                {
                    var context = Clone()
                        .WithTargetFramework(target.TargetFramework)
                        .WithRuntimeIdentifiers(new[] { target.RuntimeIdentifier }).Build();

                    var id = $"{context.TargetFramework}/{context.RuntimeIdentifier}";
                    if (deduper.Add(id))
                    {
                        yield return context;
                    }
                }
            }
            else
            {
                // Build a context for each framework. It won't be fully valid, since it won't have resolved data or runtime data, but the diagnostics will show that.
                foreach (var framework in Project.GetTargetFrameworks())
                {
                    var builder = new ProjectContextBuilder()
                        .WithProject(Project)
                        .WithTargetFramework(framework.FrameworkName);
                    if (IsDesignTime)
                    {
                        builder.AsDesignTime();
                    }
                    yield return builder.Build();
                }
            }
        }