public string CreateProjectForRepl(string code, string targetDirectory, string defaultTargetFramework = "net46")
        {
            var parseresult = _scriptParser.ParseFromCode(code);

            targetDirectory = Path.Combine(targetDirectory, "REPL");
            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);
            _logger.Debug($"Project file saved to {pathToProjectFile}");
            CopyNuGetConfigFile(targetDirectory, Path.GetDirectoryName(pathToProjectFile));
            return(pathToProjectFile);
        }
Beispiel #2
0
        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);
        }