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

时间:2013-10-28 01:06:13

标签: c# mono wsdl svcutil.exe

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

我完全不知道C#。甚至没有一点点。

所以,我瘫痪了一个Windows VM(ievms救援!),安装.NET4.0框架,并生成一个proxy.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服务对抗我的操作系统。

1 个答案:

答案 0 :(得分:2)

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

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

必须使用

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

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

你不能跳得太远。