Ejemplo n.º 1
0
        private static void WriteDepsFileAndCopyProjectDependencies(
            LibraryExporter exporter,
            string projectFileName,
            string outputPath)
        {
            exporter
            .GetDependencies(LibraryType.Package)
            .WriteDepsTo(Path.Combine(outputPath, projectFileName + FileNameSuffixes.Deps));

            var projectExports = exporter.GetDependencies(LibraryType.Project);

            CopyAllDependencies(outputPath, projectExports);
        }
Ejemplo n.º 2
0
        private void WriteDepsFileAndCopyProjectDependencies(LibraryExporter exporter)
        {
            WriteDeps(exporter);

            var projectExports = exporter.GetDependencies(LibraryType.Project);

            CopyAssemblies(projectExports);
            CopyAssets(projectExports);

            var packageExports = exporter.GetDependencies(LibraryType.Package);

            CopyAssets(packageExports);
        }
Ejemplo n.º 3
0
        private static void WriteDepsFileAndCopyProjectDependencies(
            LibraryExporter exporter,
            string projectFileName,
            string outputPath)
        {
            exporter
            .GetDependencies(LibraryType.Package)
            .WriteDepsTo(Path.Combine(outputPath, projectFileName + FileNameSuffixes.Deps));

            exporter
            .GetDependencies(LibraryType.Project)
            .SelectMany(e => e.RuntimeAssets())
            .CopyTo(outputPath);
        }
Ejemplo n.º 4
0
        private void WriteDepsFileAndCopyProjectDependencies(LibraryExporter exporter)
        {
            exporter
            .GetDependencies(LibraryType.Package)
            .WriteDepsTo(Path.Combine(_runtimeOutputPath, _context.ProjectFile.Name + FileNameSuffixes.Deps));

            var projectExports = exporter.GetDependencies(LibraryType.Project);

            CopyAssemblies(projectExports);
            CopyAssets(projectExports);

            var packageExports = exporter.GetDependencies(LibraryType.Package);

            CopyAssets(packageExports);
        }
Ejemplo n.º 5
0
 private static void CopyAllDependencies(string outputPath, LibraryExporter exporter)
 {
     exporter
     .GetDependencies()
     .SelectMany(e => e.RuntimeAssets())
     .CopyTo(outputPath);
 }
Ejemplo n.º 6
0
        public void WriteDeps(LibraryExporter exporter)
        {
            var path = Path.Combine(_runtimeOutputPath, _context.ProjectFile.Name + FileNameSuffixes.Deps);

            CreateDirectoryIfNotExists(path);
            File.WriteAllLines(path, exporter
                               .GetDependencies(LibraryType.Package)
                               .SelectMany(GenerateLines));

            var compilerOptions = _context.ResolveCompilationOptions(_configuration);
            var includeCompile  = compilerOptions.PreserveCompilationContext == true;

            var exports           = exporter.GetAllExports().ToArray();
            var dependencyContext = new DependencyContextBuilder().Build(
                compilerOptions: includeCompile? compilerOptions: null,
                compilationExports: includeCompile ? exports : null,
                runtimeExports: exports,
                portable: string.IsNullOrEmpty(_context.RuntimeIdentifier),
                target: _context.TargetFramework,
                runtime: _context.RuntimeIdentifier ?? string.Empty);

            var writer       = new DependencyContextWriter();
            var depsJsonFile = Path.Combine(_runtimeOutputPath, _context.ProjectFile.Name + FileNameSuffixes.DepsJson);

            using (var fileStream = File.Create(depsJsonFile))
            {
                writer.Write(dependencyContext, fileStream);
            }
        }
Ejemplo n.º 7
0
        private void GenerateBindingRedirects(LibraryExporter exporter)
        {
            var outputName = _outputPaths.RuntimeFiles.Assembly;
            var configFile = outputName + Constants.ConfigSuffix;

            var existingConfig = new DirectoryInfo(_context.ProjectDirectory)
                                 .EnumerateFiles()
                                 .FirstOrDefault(f => f.Name.Equals("app.config", StringComparison.OrdinalIgnoreCase));

            if (existingConfig != null)
            {
                File.Copy(existingConfig.FullName, configFile, true);
            }

            List <string> configFiles = new List <string>();

            configFiles.Add(configFile);

            foreach (var export in exporter.GetDependencies())
            {
                var dependencyExecutables = export.RuntimeAssemblyGroups.GetDefaultAssets()
                                            .Where(asset => asset.FileName.ToLower().EndsWith(FileNameSuffixes.DotNet.Exe))
                                            .Select(asset => Path.Combine(_runtimeOutputPath, asset.FileName));

                foreach (var executable in dependencyExecutables)
                {
                    configFile = executable + Constants.ConfigSuffix;
                    configFiles.Add(configFile);
                }
            }

            exporter.GetAllExports().GenerateBindingRedirects(configFiles);
        }
Ejemplo n.º 8
0
        private void MakeCompilationOutputRunnableForFullFramework()
        {
            var dependencies = _exporter.GetDependencies();

            CopyAssemblies(dependencies);
            CopyAssets(dependencies);
            GenerateBindingRedirects(_exporter);
        }
Ejemplo n.º 9
0
        private void WriteDepsFileAndCopyProjectDependencies(LibraryExporter exporter)
        {
            // When called this way we don't need to filter exports, so we pass the same list to both.
            var exports = exporter.GetAllExports().ToList();

            WriteConfigurationFiles(exports, exports, includeDevConfig: true);

            var projectExports = exporter.GetAllProjectTypeDependencies();

            CopyAssemblies(projectExports);
            CopyAssets(projectExports);

            var packageExports = exporter.GetDependencies(LibraryType.Package);

            CopyAssets(packageExports);
        }
Ejemplo n.º 10
0
        private static void MakeRunnable(ProjectContext runtimeContext, string outputPath, LibraryExporter exporter)
        {
            CopyContents(runtimeContext, outputPath);

            if (runtimeContext.TargetFramework.IsDesktop())
            {
                // On desktop we need to copy dependencies since we don't own the host
                foreach (var export in exporter.GetDependencies())
                {
                    CopyExport(outputPath, export);
                }
            }
            else
            {
                EmitHost(runtimeContext, outputPath, exporter);
            }
        }
Ejemplo n.º 11
0
        private void WriteDepsFileAndCopyProjectDependencies(LibraryExporter exporter)
        {
            var exports               = exporter.GetAllExports().ToList();
            var exportsLookup         = exports.ToDictionary(e => e.Library.Identity.Name, StringComparer.OrdinalIgnoreCase);
            var platformExclusionList = _context.GetPlatformExclusionList(exportsLookup);
            var filteredExports       = exports.FilterExports(platformExclusionList);

            WriteConfigurationFiles(exports, filteredExports, exports, includeDevConfig: true);

            var projectExports = exporter.GetAllProjectTypeDependencies();

            CopyAssemblies(projectExports);
            CopyAssets(projectExports);

            var packageExports = exporter.GetDependencies(LibraryType.Package);

            CopyAssets(packageExports);
        }
Ejemplo n.º 12
0
 public static IEnumerable <LibraryExport> GetAllProjectTypeDependencies(this LibraryExporter exporter)
 {
     return
         (exporter.GetDependencies(LibraryType.Project)
          .Concat(exporter.GetDependencies(LibraryType.MSBuildProject)));
 }
Ejemplo n.º 13
0
 private void MakeCompilationOutputRunnableForFullFramework(
     string outputPath)
 {
     CopyAllDependencies(outputPath, _exporter.GetDependencies());
     GenerateBindingRedirects(_exporter);
 }