Создайте и выполните класс / метод LINQPad в отдельном домене приложений. - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь создать прототип кода в всеми любимой IDE для создания прототипов (LINQPad). Я хочу запустить класс, который я создал в сценарии, в отдельном домене приложения. Например:

void Main()
{
    AppDomain domain = AppDomain.CreateDomain("MyDomain");
    var qry = (AdHocQuery)domain.CreateInstanceAndUnwrap( typeof( AdHocQuery ).Assembly.Location, typeof( AdHocQuery ).FullName );
    qry.Run();

    AppDomain.Unload(domain);
}

class AdHocQuery
{
    public void Run()
    {
    }
}

Я получаю следующее исключение: FileLoadException: Could not load file or assembly 'C:\\Users\\terry.aney\\AppData\\Local\\Temp\\LINQPad5\\_jpomhdlf\\query_onuisp.dll' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)

Возможно ли это сделать в LINQPad?

1 Ответ

0 голосов
/ 26 июня 2020

Отвечая на свой вопрос, хотя он из твита Джо Альбахари:)

Учитывая, что вы указываете расположение сборки, а не имя, используйте CreateInstance From AndUnwrap. Кроме того, используйте Util.CreateAppDomain вместо AppDomain.CreateDomain, чтобы разрешить зависимости. Добавьте Util.NewProcess = true для запроса, если вы получаете ошибки совместимости типов.

...