最近把一些東西開始往Linux遷移了,因為老系統大部分都是.NET,所以直接使用Mono,代碼一般都使用MonoDevelop把代碼重新編譯,把一些WMI和windows DLL調用改Linux的os調用,這些都是好說,網上很多教程,但是最郁悶的關於WebService問題,把自己的dll丟過去就報下面錯誤,單獨的ASMX文件里面寫代碼沒問題,好奇怪。
System.Web.Compilation.CompilationException
CS1703: 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));