1
내 프로젝트에서 Roslyn 스크립트 API를 사용하려고합니다. 나는 시험 콘솔 응용 프로그램을 생성하고 코드가 InteractiveAssemblyLoader
InteractiveAssemblyLoader가 콘솔 앱에서 작동하지 않습니다.
사용 referencies를 해결하기 위해 노력했습니다
var scriptText = @"
using System;
using Test.Namespace.From.Referenced.Dll;
var y = new TestType();
var x = y.GetStringDescription();
return x;
";
using (var interactiveLoader = new InteractiveAssemblyLoader())
{
interactiveLoader.RegisterDependency(typeof(TestType).Assembly);
var script = CSharpScript.Create<string>(
scriptText,
globalsType: typeof(Globals),
options: ScriptOptions.Default,
assemblyLoader: interactiveLoader
);
script.Compile();
// exception raised here
var result = await script.RunAsync(globals);
}
이 코드는 예외로 실패가
'형식 또는 네임 스페이스 이름'TEST ' 찾을 수 없습니다 ( a 지시문 또는 어셈블리 참조가 없습니다)? System.Exception {Microsoft.CodeAnalysis.Scripting.CompilationErrorException} '
Windows 콘솔 앱, .NET 4.7.1.
내가 뭘 잘못하고있어?
쉽지 않습니다. 메모리 내 라이브러리를 해결하려고합니다. 그것이 내 앱에서 플러그인 시스템이 작동하는 방식입니다. 플러그인이있는 라이브러리는 서버에서 다운로드하고 메모리에로드합니다. 그리고이 라이브러리에 대한 참조를 스크립트에 추가하려고합니다. 이 기사에 따르면 https://www.strathweb.com/2016/03/roslyn-scripting-on-coreclr-net-cli-and-dnx-and-in-memory-assemblies/에 따르면 작동하지만 그렇지 않습니다. . 어쩌면 내가 뭔가를 오해 한 것일 수 있습니다. –
그래서 메모리 내 라이브러리가 있습니다. 왜 그것을 AddReferences를 통해 참조에 추가 할 수 없습니까? 링크가 나를 위해 작동하지 않습니다. – Evk
Roslyn은로드 할 디스크에서 라이브러리를 읽어야합니다. 위치없이 dll을 참조 할 수 없습니다. AddReferences가 예외를 발생시킵니다. –