Создайте .NET ядро приложения, которое Запуски на Linux и macOS

Поддерживаемая платформа: Windows® (Автор), Linux® (Выполнение) и macOS (Выполнение).

В этом примере показано, как интегрировать и запустить сборку .NET, созданную с помощью Library Compiler с приложением .NET Core.

Цель: Верните магический квадрат n на n

Необходимые условия

  1. Создайте новую рабочую папку, которая отображается в MATLAB® путь поиска файлов. Этот пример использует C:\Work как новая рабочая папка.

  2. Установите MATLAB Runtime в Windows и на дополнительные платформы, где вы планируете запускать свое приложение .NET Core. Для платформ Linux и macOS после установки среды выполнения необходимо задать LD_LIBRARY_PATH и DYLD_LIBRARY_PATH переменные окружения соответственно. Для получения дополнительной информации смотрите Set MATLAB Путь for Run-Time Deployment.

  3. Убедитесь, что у вас есть Visual Studio® и .NET Core 2.0 или выше. Если у вас установлена версия 15.8.2 Visual Studio 2017, то устанавливать .NET Core 2.0 или выше отдельно не нужно.

Создание сборки .NET

  1. Создайте новый файл MATLAB с именем mymagic.m со следующим кодом в рабочей папке:

    function out = mymagic(in)
    out = magic(in);
  2. Напечатать libraryCompiler в командной строке MATLAB, чтобы запустить приложение Library Compiler.

  3. В TYPE разделе панели инструментов выберите .NET Assemblyи в EXPORTED FUNCTIONS разделе нажмите кнопку Add, чтобы добавить файл mymagic.m к проекту.

  4. В Library information разделе назовите библиотеку MyMatrixFunctions. Измените имя класса по умолчанию на Class1 на MyMagic.

  5. Сохраните проект развертывания с именем проекта по умолчанию MyMatrixFunctions.

  6. Выберите Package для создания сборки .NET. Для получения информации о созданных файлах смотрите Файлы, сгенерированные После Упаковки Функций MATLAB.

Создайте ядро .NET

  1. Откройте Команду интерпретатора в Windows и перейдите в папку C:\Work.

  2. В командной строке введите:

    dotnet new console --name MyDotNetCoreApp

    Это создает папку с именем MyDotNetCoreApp который имеет следующее содержимое:

    • obj папка

    • MyDotNetCoreApp.csproj файл проекта

    • Program.cs Исходный файл C #

  3. Откройте файл проекта в текстовом редакторе.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp2.0</TargetFramework>
      </PropertyGroup>
    
    </Project>

    Добавьте следующие ссылки к проекту с помощью <ItemGroup> тег:

    • Файл сборки .NET MyMatrixFunctions.dll созданный приложением Library Compiler

    • MWArray.dll из MATLAB Runtime

    После добавления ссылок файл проекта выглядит следующим образом:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp2.2</TargetFramework>
      </PropertyGroup>
    
        <ItemGroup>
        <Reference Include="MyMatrixFunctions">
          <HintPath>C:\work\MyMatrixFunctions\for_redistribution_files_only\MyMatrixFunctions.dll</HintPath>
    	  <!--Path to .NET Assembly created by Library Compiler app-->
        </Reference>
        <Reference Include="MWArray">
          <HintPath>C:\Program Files\MATLAB\MATLAB Runtime\v97\toolbox\dotnetbuilder\bin\win64\v4.0\MWArray.dll</HintPath>
    	  <!--Path to MWArray.dll in the MATLAB Runtime-->
        </Reference>
      </ItemGroup>
    </Project>
  4. Откройте исходный файл C # Program.cs и замените существующий код следующим кодом:

     Program.cs

  5. На Команду интерпретатора создайте свой проект .NET Core, набрав:

    dotnet build MyDotNetCoreApp.csproj
  6. На Команду интерпретатора запустите приложение, набрав следующее:

    dotnet run -- 3

    Отображается магический квадрат 3x3.

  7. Опубликовать проект как автономное развертывание для выполнения приложения на Linux или macOS. Этот пример публикуется в Linux. В Команду интерпретатора введите:

    dotnet publish --configuration Release --framework netcoreapp2.2 --runtime linux-x64 --self-contained true MyDotNetCoreApp.csproj

    Для публикации в macOS введите:

    dotnet publish --configuration Release --framework netcoreapp2.2 --runtime osx.10.11-x64 --self-contained true MyDotNetCoreApp.csproj

Запуск .NET Core Application на Linux

  1. Скопируйте Release папка из C:\Work\MyDotNetCoreApp\bin в Windows, чтобы ~/Work на машине Linux.

  2. На компьютере с Linux проверьте, что вы установили MATLAB Runtime и настройте свои LD_LIBRARY_PATH переменная окружения. Для получения дополнительной информации см. раздел « Необходимые условия».

  3. Откройте интерпретатор Bash и перейдите к:

    ~/Work/Release/netcoreapp2.2/linux-x64/publish
  4. Запустите приложение .NET Core путем ввода:

    ./MyDotNetCoreApp 3

    Выход

    Magic square of order 3
    
         8     1     6
         3     5     7
         4     9     2
    
    Magic square as native array:
    
    Element(0,0)= 8
    Element(0,1)= 1
    Element(0,2)= 6
    Element(1,0)= 3
    Element(1,1)= 5
    Element(1,2)= 7
    Element(2,0)= 4
    Element(2,1)= 9
    Element(2,2)= 2