dotnet/roslyn

Scripting using Basic.Reference.Assemblies does not work

Aperta

#55.689 aperta il 18 ago 2021

 (1 commento) (0 reazioni) (0 assegnatari)C# (4257 fork)batch import
Area-InteractiveBughelp wanted

Metriche repository

Star
 (20.414 stelle)
Metriche merge PR
 (Merge medio 6g 17h) (256 PR mergiate in 30 g)

Descrizione

With the following code

var sessionSetupTask = CSharpScript.Create(
    code: string.Empty,
    options: ScriptOptions.Default.WithImports("System").WithReferences(Net472.mscorlib),
    globalsType: null,
    assemblyLoader: new InteractiveAssemblyLoader())
.RunAsync(null);
            ScriptState<Attribute[]> test2 = sessionSetupTask.Result.ContinueWithAsync<Attribute[]>(@"
[Obsolete()]
class __scope__internal
{
}
System.Attribute.GetCustomAttributes(typeof(__scope__internal))").Result;

With Net472.mscorlib coming from Basic.Reference.Assemblies, we got the following exception wityh Roslyn 3.10 and 3.11: “System.ArgumentException: 'Absolute path expected. Parameter name: path'” at Microsoft.CodeAnalysis.Scripting.Hosting.InteractiveAssemblyLoader.RegisterDependency(AssemblyIdentity dependency, String path) at Microsoft.CodeAnalysis.Scripting.ScriptBuilder.Build[T](Compilation compilation, DiagnosticBag diagnostics, Boolean emitDebugInformation, CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Scripting.ScriptBuilder.CreateExecutor[T](ScriptCompiler compiler, Compilation compilation, Boolean emitDebugInformation, CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Scripting.Script1.GetExecutor(CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Scripting.Script1.RunFromAsync(ScriptState previousState, Func2 catchException, CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Scripting.ScriptState.ContinueWithAsync[TResult](String code, ScriptOptions options, Func2 catchException, CancellationToken cancellationToken)

With Roslyn 3.8 it was working fine.

Guida contributor