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.

贡献者指南