最近把一些東西開始往Linux遷移了,因為老系統大部分都是.NET,所以直接使用Mono,代碼一般都使用MonoDevelop把代碼重新編譯,把一些WMI和windows DLL調用改Linux的os調用,這些都是好說,網上很多教程,但是最鬱悶的關於WebService問題,把自己的dll丟過去就報下面錯誤,單獨的ASMX檔案裡面寫代碼沒問題,好奇怪。
System.Web.Compilation.CompilationExceptionCS1703: An assembly with the same identity `mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' has already been imported. Consider removing one of the references
最後查到有個命名空間System.Globalization不能在csusing或者ASMX裡面<%@ Import Namespace="System.Globalization" %>,一旦有這種寫法都是上面錯誤斥候,你妹的,定位這問題把整個mono的檔案夾翻了一遍,搞了一整天,這誰寫的代碼,測試太不到位,網上好多對這問題的解決方案都是繞過去走WCF,IOS上面說可以在編譯設定裡面勾選"do not reference mscorlib.dll",總之我是編譯不通過的,因為System.Object就在這裡面,是.NET的核心之核心!
所以大家如果碰到這錯誤,可以找下所有的CS和ASMX檔案裡面有System.Globalization引用,僅僅是引用,代碼裡面如要使用用完整命名空間即可,如:
Response.Write("dddd" + System.Globalization.StringInfo.GetNextTextElement("ABCDEFG", 1));