Matlab не удалось загрузить сборку .NET - PullRequest
2 голосов
/ 27 июля 2011

Когда я пытаюсь загрузить в Matlab мою сборку .NET foo.dll, наберите:

asm = NET.addAssembly('fullpath\foo.dll');

Я получаю следующую ошибку: «Не удалось загрузить файл или сборку» file: /// fullPath \ foo.dll 'или одну из ее зависимостей. Эта сборка построена средой выполнения, более новой, чем текущая загруженная среда выполнения, и не может быть загружен. Источник: mscorlib HelpLink: "

У меня есть Matlab R2010a, и я попытался собрать сборку как для .NET Framework 4.0, так и .NET Framework 3.0, но безуспешно.

EDIT

Я провел несколько тестов, и теперь, возможно, я частично обнаружил проблему. В приведенном выше примере я пытался добавить приватную сборку, указав полный путь. Затем я вспомнил, что ранее также регистрировал ту же сборку (предназначенную для .NET 4.0) в GAC (с помощью команды gacutil /i foo.dll). Следовательно, я удалил сборку из GAC (gacutil /u foo), и теперь, по крайней мере, я могу добавить частную сборку, нацеленную на .NET 3.0, но все же нет, если хочу нацелиться на .NET 4.0.

Я предполагаю, что раньше, когда я пытался добавить частную сборку для .NET 3.0, Matlab все еще пытался добавить сборку для .NET 4.0, установленную в GAC, из-за некоторого конфликта. Тем не менее, я до сих пор не понимаю, почему я не могу использовать .NET 4.0.

1 Ответ

3 голосов
/ 27 июля 2011

Я не могу воспроизвести ошибку. Вот пример, который я использовал:

MyClass.cs

using System;
namespace ClassLibraryTest
{
    public class MyClass
    {
        public static double add(double x, double y)
        {
            return x + y;
        }
    }
}

MATLAB

>> NET.addAssembly('C:\path\to\ClassLibraryTest.dll');
>> ClassLibraryTest.MyClass.add(1,2)
ans =
     3

Я пробовал разные целевые платформы .NET 4.0 / 3.5 / 3.0, и все они работали нормально. Обратите внимание, что вы не можете выгрузить сборку после загрузки, и единственный способ освободить ресурсы .NET - перезапустить MATLAB ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...