Dll 如何使用GWAN C#servlet引用Mono C#程序集

Dll 如何使用GWAN C#servlet引用Mono C#程序集,dll,mono,g-wan,Dll,Mono,G Wan,我试图在gwan csp文件夹中包含一个c#servlet CompanyListService.cs,但收到一个编译错误“未能找到类型或命名空间名称'PropertyManagement'。是否缺少using指令或程序集引用?“ PropertyManagement.sql.dll位于同一文件夹中。还试图在GAC中安装它,但没有成功 如果使用'mcs CompanyListService.cs-r:PropertyManagement.Sql.dll',它将解析程序集 现有Hello.cs和L

我试图在gwan csp文件夹中包含一个c#servlet CompanyListService.cs,但收到一个编译错误“未能找到类型或命名空间名称'PropertyManagement'。是否缺少using指令或程序集引用?“

PropertyManagement.sql.dll位于同一文件夹中。还试图在GAC中安装它,但没有成功

如果使用'mcs CompanyListService.cs-r:PropertyManagement.Sql.dll',它将解析程序集

现有Hello.cs和Loan.cs工作正常。如果有任何帮助,我们将不胜感激

谢谢 公羊

//G-WAN Web应用程序服务器的C servlet示例
// http://gwan.ch/
//hello.cs:G-WAN支持.NET C#servlet
使用制度;
使用System.Collections.Generic;
//使用PropertyManagement.Sql;
//使用System.Runtime.Serialization.Json;
使用系统文本;
公共类公司列表服务
{
公共静态int Main(字符串[]args)
{
PropertyManagement.Sql.CompanyRepository Repository=新建PropertyManagement.Sql.CompanyRepository();
List CompanyList=Repository.GetCompanyList();
//字符串json=JsonSerializer(CompanyList);
Gwan.xbufCat(Gwan.getReply(args[0]),“test”);
返回200;//HTTP状态(200:'OK')
}
}

官方文档没有提到这一点,但这不仅是可能的,而且比传统方法更具灵活性

毕竟,这就是共享库的用途。C#没有错过这一点,这是值得称赞的


此外,G-WAN在
/usr/lib/Mono
路径下查找Mono库,并在
/gwan/../libraries/cs
目录中查找用户定义的程序集(顺便提一下,如G-WAN API)。

根据另一个G-WAN+C用户(Igor)的请求,G-WAN v4.12.21中添加了以下功能:

  • $MONO_路径被创建为包含目录 /…/[gwan]/libraries/cs/dll

  • *.dll文件位于[gwan]/libraries/cs/dll下 添加了-pkg:lib1、lib2

  • 行指定的任何库:

    //pragma链接libname[,libname,…]

    …在*.cs源代码文件中添加了“-pkg:”开关


希望有帮助。

谢谢您的快速回复。我尝试将dll添加到GAC,还尝试将dll复制到/usr/lib/mono和子文件夹,但仍然无法解析引用。我不确定使用反射或动态加载加载程序集时的性能。任何让共享DLL与gwan一起工作的建议?加载动态库要么由您手动完成,要么由Mono运行时完成——无论哪种方式,都需要花费同样多的时间,并且您只能在第一次执行servlet时使用标志来完成。是否尝试将C#DLL复制到专用的/gwan/../libraries/cs目录?这就是定义G-WAN API的地方,它被正确解析。我把它放在GAC、/cs、/usr/lib/mono中-它没有解析,而gwan_API中的代码更改在启动时反映了其中一个G-WAN脚本,您可以在G-WAN内存空间中加载该库,然后在/gwan/../libraries/cs目录中导出的G-WAN API C#类中注册其函数。然后,您的servlet将能够使用您编写的任何扩展C代码,无论是G-WAN C API函数C#wrappers还是您自己的C函数?
// 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')
   }
}