2013-10-28 66 views
0

我試圖解決的根本問題是爲什麼我嘗試使用的任何WSDL解析器(Perl,Python或Node.js)都不能生成此SOAP服務的存根正在嘗試與之交流。該服務(用.NET編寫)說使用svcutil.exe生成將成爲代理客戶端的C#代碼。只有一個問題。無法在Mono中編譯svcutil生成的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

你有沒有對System.ServiceModel程序集的引用? – Jeff

+0

另外,說一說C#不是一種「正常」語言,但我會打賭,.NET/WCF庫正確地遵循了SOAP規範。根據我的經驗,SOAPy和其他Python庫不能這麼說。我對Mono的說話不會那麼強烈,但我對它有很好的體驗。 – Jeff

回答

2

您使用了錯誤的命令行參數來編譯生成的文件,難怪它失敗了。

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

-r必須用於判斷哪些組件必須用作參考的編譯器。因爲你根本沒有C#編程的經驗,所以你可能會發現很難讓命令行正確。我建議你先在Windows和Visual Studio上了解它,然後轉到Mono和MonoDevelop。通過創建一個C#項目(.csproj),編譯一些東西比較容易,因爲MSBuild和xbuild將負責調用編譯器。

你不能跳得太遠。

+0

這正是我需要的指針。答案已被接受並被提升。 –