public async Task <LineEvaluationResult> HandleAsync(Guid lineId, string text, IReplLogger logger) { string package = text.Substring(CommandPrefix.Length).Trim('"'); var assemblies = (await nugetInstaller.Install(package, logger)).ToArray(); if (assemblies.Any()) { await scriptEvaluator.AddReferences(assemblies); workspaceManager.CreateOrUpdateSubmission(lineId, assemblyReferences: assemblies); } return(LineEvaluationResult.NoOutput); }
public async Task <LineEvaluationResult> HandleAsync(Guid lineId, string input, IReplLogger logger) { string assemblyFile = input.Substring(CommandPrefix.Length).Trim('"'); var assemblies = DotNetAssemblyLocator .GroupDirectoryContentsIntoAssemblies(ReadAssembly(assemblyFile)) .Select(assembly => io.CreateMetadataReferenceWithDocumentation(assembly)); foreach (var assembly in assemblies) { logger.LogOutput("Referencing " + assembly.Display); await scriptEvaluator.AddReferences(assembly); workspaceManager.CreateOrUpdateSubmission(lineId, assemblyReferences: assembly); logger.LogOutput("Assembly successfully referenced"); } return(LineEvaluationResult.NoOutput); }
public async Task AddReferences_WithAssembly_CanAddReference() { const string instantiationRequiringReference = @"using NodaTime;"; // ensure the reference is not loaded var failure = await scriptEvaluator.EvaluateAsync(instantiationRequiringReference); Assert.Equal( "(1,7): error CS0246: The type or namespace name 'NodaTime' could not be found (are you missing a using directive or an assembly reference?)", failure.Exception?.Message ); // system under test await scriptEvaluator.AddReferences( MetadataReference.CreateFromFile("./TestHelpers/NodaTime.dll") ); var success = await scriptEvaluator.EvaluateAsync(instantiationRequiringReference); Assert.Null(success.Exception); }