public IEnumerable <CompilationDependency> GetDependencies(string targetDirectory, IEnumerable <string> scriptFiles, bool enableScriptNugetReferences, string defaultTargetFramework = "net46") { var projectFileInfo = _scriptProjectProvider.CreateProject(targetDirectory, scriptFiles, defaultTargetFramework, enableScriptNugetReferences); _restorer.Restore(projectFileInfo, packageSources: Array.Empty <string>()); var pathToAssetsFile = Path.Combine(Path.GetDirectoryName(projectFileInfo.Path), "obj", "project.assets.json"); var dependencyContext = _scriptDependencyContextReader.ReadDependencyContext(pathToAssetsFile); var result = new List <CompilationDependency>(); foreach (var scriptDependency in dependencyContext.Dependencies) { var compilationDependency = new CompilationDependency(scriptDependency.Name, scriptDependency.Version, scriptDependency.CompileTimeDependencyPaths, scriptDependency.ScriptPaths); result.Add(compilationDependency); } // On .Net Core, we need to fetch the compilation references for framework assemblies separately. if (defaultTargetFramework.StartsWith("netcoreapp3", StringComparison.InvariantCultureIgnoreCase) || defaultTargetFramework.StartsWith("net5", StringComparison.InvariantCultureIgnoreCase)) { var compilationreferences = _compilationReferenceReader.Read(projectFileInfo); result.Add(new CompilationDependency("Dotnet.Script.Default.Dependencies", "99.0", compilationreferences.Select(cr => cr.Path).ToArray(), Array.Empty <string>())); } return(result); }
public IEnumerable <CompilationDependency> GetDependencies(string targetDirectory, IEnumerable <string> scriptFiles, bool enableScriptNugetReferences, string defaultTargetFramework = "net46") { var pathToProjectFile = _scriptProjectProvider.CreateProject(targetDirectory, scriptFiles, defaultTargetFramework, enableScriptNugetReferences); _restorer.Restore(pathToProjectFile, packageSources: Array.Empty <string>()); var pathToAssetsFile = Path.Combine(Path.GetDirectoryName(pathToProjectFile), "obj", "project.assets.json"); var dependencyContext = _scriptDependencyContextReader.ReadDependencyContext(pathToAssetsFile); var result = new List <CompilationDependency>(); foreach (var scriptDependency in dependencyContext.Dependencies) { var compilationDependency = new CompilationDependency(scriptDependency.Name, scriptDependency.Version, scriptDependency.CompileTimeDependencyPaths, scriptDependency.ScriptPaths); result.Add(compilationDependency); } return(result); }
public IEnumerable <CompilationDependency> GetDependencies(string targetDirectory, bool enableScriptNugetReferences, string defaultTargetFramework = "net46") { var pathToProjectFile = _scriptProjectProvider.CreateProject(targetDirectory, defaultTargetFramework, enableScriptNugetReferences); if (pathToProjectFile == null) { return(Array.Empty <CompilationDependency>()); } var dependencyInfo = _scriptDependencyInfoProvider.GetDependencyInfo(pathToProjectFile, Array.Empty <string>()); var dependencyContext = dependencyInfo.DependencyContext; var compilationAssemblyResolvers = GetCompilationAssemblyResolvers(dependencyInfo.NugetPackageFolders); List <CompilationDependency> result = new List <CompilationDependency>(); var compileLibraries = dependencyContext.CompileLibraries; foreach (var compilationLibrary in compileLibraries) { var resolvedReferencePaths = new HashSet <string>(); _logger.Debug($"Resolving compilation reference paths for {compilationLibrary.Name}"); var referencePaths = ResolveReferencePaths(compilationLibrary, compilationAssemblyResolvers); var scripts = _scriptFilesDependencyResolver.GetScriptFileDependencies(compilationLibrary.Path, dependencyInfo.NugetPackageFolders); foreach (var referencePath in referencePaths) { resolvedReferencePaths.Add(referencePath); } var compilationDependency = new CompilationDependency( compilationLibrary.Name, compilationLibrary.Version, resolvedReferencePaths.ToList(), scripts); result.Add(compilationDependency); } return(result); }