dotnet/roslyn

Scripting using Basic.Reference.Assemblies does not work

開放

#55,689 建立於 2021年8月18日

 (1 則留言) (0 個反應) (0 位負責人)C# (4,257 個分叉)batch import
Area-InteractiveBughelp wanted

倉庫指標

星標
 (20,414 顆星)
PR 合併指標
 (平均合併 6天 17小時) (30 天內合併 256 個 PR)

描述

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.

貢獻者指南