public string CreateProject(string targetDirectory, string defaultTargetFramework = "net46", bool enableNuGetScriptReferences = false) { var pathToProjectFile = Directory.GetFiles(targetDirectory, "*.csproj").FirstOrDefault(); if (pathToProjectFile == null && !enableNuGetScriptReferences) { return(null); } _logger.Debug($"Creating project file for *.csx files found in {targetDirectory} using {defaultTargetFramework} as the default framework."); var csxFiles = Directory.GetFiles(targetDirectory, "*.csx", SearchOption.AllDirectories); var parseresult = _scriptParser.ParseFromFiles(csxFiles); pathToProjectFile = GetPathToProjectFile(targetDirectory); var projectFile = new ProjectFile(); foreach (var packageReference in parseresult.PackageReferences) { projectFile.AddPackageReference(packageReference); } projectFile.SetTargetFramework(parseresult.TargetFramework ?? defaultTargetFramework); projectFile.Save(pathToProjectFile); LogProjectFileInfo(pathToProjectFile); CopyNuGetConfigFile(targetDirectory, Path.GetDirectoryName(pathToProjectFile)); return(pathToProjectFile); }
public string CreateProjectForRepl(string code, string targetDirectory, string defaultTargetFramework = "net46") { var scriptFiles = _scriptFilesResolver.GetScriptFilesFromCode(code); targetDirectory = Path.Combine(targetDirectory, "interactive"); var parseResultFromCode = _scriptParser.ParseFromCode(code); var parseResultFromLoadedFiles = _scriptParser.ParseFromFiles(scriptFiles); var allPackageReferences = new HashSet <PackageReference>(); foreach (var packageReference in parseResultFromCode.PackageReferences) { allPackageReferences.Add(packageReference); } foreach (var packageReference in parseResultFromLoadedFiles.PackageReferences) { allPackageReferences.Add(packageReference); } targetDirectory = Path.Combine(targetDirectory, "interactive"); var pathToProjectFile = GetPathToProjectFile(targetDirectory); var projectFile = new ProjectFile(); foreach (var packageReference in allPackageReferences) { projectFile.PackageReferences.Add(packageReference); } projectFile.TargetFramework = parseResultFromCode.TargetFramework ?? defaultTargetFramework; projectFile.Save(pathToProjectFile); LogProjectFileInfo(pathToProjectFile); EvaluateAndGenerateNuGetConfigFile(targetDirectory, Path.GetDirectoryName(pathToProjectFile)); return(pathToProjectFile); }
private string CreateProjectFileFromScriptFiles(string targetDirectory, string defaultTargetFramework, string[] csxFiles) { var parseresult = _scriptParser.ParseFromFiles(csxFiles); var pathToProjectFile = GetPathToProjectFile(targetDirectory); var projectFile = new ProjectFile(); foreach (var packageReference in parseresult.PackageReferences) { projectFile.AddPackageReference(packageReference); } projectFile.SetTargetFramework(parseresult.TargetFramework ?? defaultTargetFramework); projectFile.Save(pathToProjectFile); LogProjectFileInfo(pathToProjectFile); CopyNuGetConfigFile(targetDirectory, Path.GetDirectoryName(pathToProjectFile)); return(pathToProjectFile); }