无法在 Mono 中编译 svcutil 生成的 C#

本文关键字:svcutil 编译 Mono | 更新日期: 2023-09-27 18:37:01

我试图解决的根本问题是为什么我尝试使用的WSDL解析器(Perl,Python或Node.js)都不能为我尝试与之通信的SOAP服务生成存根。该服务(用 .NET 编写)说使用 svcutil.exe 生成将成为代理客户端的 C# 代码。只有一个问题。

我根本不懂C#。甚至没有一点点。

所以,我用一个Windows VM(ievms来救援!),安装.NET4.0框架,并生成一个代理.cs(6000行!!)和一个proxy.config文件(XML来拯救??)。我将这些文件复制到我的 Ubuntu 主机,安装 mono-complete,然后尝试"gcms proxy.cs"。立即,我得到以下内容(大约 100 次,不同的行号):

proxy.cs(4602,9): error CS0234: The type or namespace name `ServiceModel' does not exist in the namespace `System'. Are you missing an assembly reference?

我完全不知道我在做什么。我想要做的只是准确跟踪在各种情况下发送和接收的 XML,以便我可以在普通语言中复制它。欢迎任何和所有建议。如果可能的话,我宁愿留在Linux上,这样我就不会与SOAP服务和我的操作系统作斗争。

无法在 Mono 中编译 svcutil 生成的 C#

您使用了错误的命令行参数来编译生成的文件,难怪它失败了。

http://linux.die.net/man/1/mcs

必须使用-r来告知编译器必须将哪些程序集用作引用。

由于您没有 C# 编程经验,因此您可能会发现很难正确使用命令行。我建议你先在Windows和Visual Studio上了解它,然后再转向Mono和MonoDevelop。通过创建C#项目(.csproj),编译某些东西更容易,因为MSBuild和xbuild将负责调用编译器。

你不能跳得太远。