Как ссылаться на сборки Mono C # с сервлетами GWAN C #

Я пытаюсь включить сервлет C # CompanyListService.cs в папку gwan csp и получаю сообщение об ошибке компиляции «Не удалось найти тип или имя пространства имен« PropertyManagement ». Вам не хватает директивы using или ссылки на сборку? '

PropertyManagement.sql.dll находится в той же папке. Также пытался установить его в GAC и не повезло.

при использовании 'mcs CompanyListService.cs -r: PropertyManagement.Sql.dll' он разрешает сборку

Существующие Hello.cs и Loan.cs работают нормально. Любая помощь будет оценена?

Спасибо Рам

// C servlet example for the G-WAN Web Application Server 
// http://gwan.ch/
// hello.cs: G-WAN supports .NET C# servlets

using System;
using System.Collections.Generic;
//using PropertyManagement.Sql;
//using System.Runtime.Serialization.Json;
using System.Text;

public class CompanyListService
{
   public static int Main(string[] args)
   {
    PropertyManagement.Sql.CompanyRepository Repository = new PropertyManagement.Sql.CompanyRepository();
    List<PropertyManagement.Sql.Company> CompanyList = Repository.GetCompanyList();

    //string json = JsonSerializer<List<Company>>(CompanyList);

        Gwan.xbufCat(Gwan.getReply(args[0]), "test");
        return 200; // HTTP status (200:'OK')
   }
}

person user3265697    schedule 03.02.2014    source источник


Ответы (2)


Официальная документация не упоминает об этом, но динамическая загрузка ваших сборок не только возможна, но и предлагает большую гибкость, чем традиционные способы сделать это.

В конце концов, для этого и нужны разделяемые библиотеки. Престижность C # за то, что не упустил этот момент.

Кроме того, G-WAN ищет библиотеки Mono по пути /usr/lib/mono и пользовательские сборки (например, G-WAN API) в каталоге /gwan/.../libraries/cs.

person Gil    schedule 03.02.2014
comment
Спасибо за быстрый ответ. Я попытался добавить dll в GAC, а также попытался скопировать dll в / usr / lib / mono и подпапки, но все еще не смог разрешить ссылку. Я не уверен в производительности при загрузке сборок с использованием отражения или динамической загрузки. есть какие-нибудь предложения, как заставить общие библиотеки работать с gwan? - person user3265697; 04.02.2014
comment
Загрузка динамических библиотек выполняется либо вами вручную, либо средой выполнения Mono - в любом случае это займет столько же времени, и вы можете использовать флаг, чтобы сделать это только при первом запуске сервлета. Вы пытались скопировать свою C # DLL в специальный каталог /gwan/.../libraries/cs? Вот где определяется API G-WAN, и он правильно решен. - person Gil; 05.02.2014
comment
Я поместил его в GAC, / cs, / usr / lib / mono - он не разрешается, а изменения кода в gwan_api отражают - person appqui-platform; 14.10.2014
comment
Используя один из сценариев G-WAN при запуске, вы можете загрузить библиотеку в пространство памяти G-WAN, а затем зарегистрировать ее функции в классе G-WAN API C #, экспортированном в /gwan/.../libraries/ cs каталог. Тогда ваши сервлеты смогут использовать любой написанный вами расширенный код C, будь то обертки C # функций G-WAN C API или ваши собственные функции C. - person Gil; 18.10.2014
comment
когда вы компилируете сервлеты - какой pkg-config вы используете? - person appqui-platform; 20.10.2014
comment
Мы ничего не меняем ни в системе, ни в настройках моно времени выполнения. - person Gil; 20.10.2014
comment
Если вы добавите специальный pkg-config при компиляции, я мог бы добавить туда нужные мне библиотеки. $ mcs hello.cs -pkg: dotnet - person appqui-platform; 22.10.2014
comment
Также я обнаружил, что gwan компилирует только файл gwan_api.cs, а не любые другие имена в папке library / cs. - person appqui-platform; 22.10.2014
comment
Поскольку mono не поддерживает ключевое слово pragma (или его эквивалент), нам пришлось бы использовать комментарий в верхней части файла исходного кода, чтобы указать зависимости (например, Google Go, если я хорошо помню). Если вы заинтересованы в тестировании такой функции, свяжитесь с командой G-WAN, чтобы получить тестовую версию. - person Gil; 23.10.2014

По запросу другого пользователя G-WAN + C # (Игоря) в G-WAN v4.12.21 добавлены следующие функции:

  • $ MONO_PATH создается для включения каталога /.../[gwanght/libraries/cs/dll

  • Файлы * .dll, расположенные в папке [gwan] / libraries / cs / dll, добавляются с помощью -pkg: lib1, lib2 ...

  • любая библиотека, указанная строкой:

    // прагматическая ссылка libname [, libname, ...]

    ... в файл с исходным кодом * .cs добавляется с помощью переключателя "-pkg:".

Надеюсь, поможет.

person Gil    schedule 24.10.2014