Linux+Mono+WebService:CS1703: An assembly with the same identity--mscorlib

时间:2021-09-13 08:46:43

最近把一些东西开始往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));