代码之家  ›  专栏  ›  技术社区  ›  Claudio

DLL上的Monotouch-Missing方法

  •  1
  • Claudio  · 技术社区  · 16 年前

    我有一个由Visual Studio 2010生成的DLL。这个DLL只有一个接口和另外两个类。我可以在Visual Studio的项目中使用,但当我尝试在Monotouch中使用同一个项目时,出现以下错误:

    建筑:HelloWorld(调试iPhoneSimulator)

    建筑:HelloWorld(调试iPhoneSimulator)
    正在执行主编译。。。

    已更新MainWindow.xib.designer.cs

    “/Users/claudio/Documents/Development/DotNet/HelloWorld/HelloWorld/Main.cs”“/Users/claudio/Documents/Development/DotNet/HelloWorld/HelloWorld/Class1.cs”
    assembly/Users/claudio/Documents/Development/DotNet/HelloWorld/HelloWorld/bin/Abcom.EmailService.ContractsCS.dll中缺少method.ctor,键入System.Runtime.Versioning.targetframeworkattributes无法加载类System.Runtime.Versioning.TargetFrameworkAttribute,用于Abcom.EmailService.contractscan找不到自定义attr构造函数图像:/Users/claudio/Documents/Development/DotNet/HelloWorld/HelloWorld/bin/Abcom.EmailService.ContractsCS.dll mtoken:0x0a00001 未处理的异常:System.type load Exception:无法从程序集Abcom.EmailService.ContractsCS加载类型“System.Runtime.Versioning.TargetFrameworkAttribute”。 位于:0中的System.Reflection.Assembly.GetType(System.String name,Boolean throwOnError,Boolean ignoreCase)[0x00000] 位于0中的System.Reflection.Assembly.GetType(System.String name)[0x00000] 位于0中的Mono.CSharp.RootNamespace.GetTypeInAssembly(System.Reflection.Assembly Assembly,System.String name)[0x00000] 在Mono.CSharp.RootNamespace.LookupTypeReflection(Mono.CSharp.CompilerContext ctx,System.String name,Location loc,Boolean必须是唯一的)[0x00000]位置:0 在Mono.CSharp.GlobalRootNamespace.LookupTypeReflection(Mono.CSharp.CompilerContext ctx,System.String name,Location loc,Boolean必须是唯一的)[0x00000]位置:0 位于Mono.CSharp.Namespace.LookupType(Mono.CSharp.CompilerContext ctx,System.String name,Location loc)[0x00000],位置:0 在Mono.CSharp.Namespace.Lookup(Mono.CSharp.CompilerContext ctx,System.String name,Location loc)[0x00000]中:0 在Mono.CSharp.TypeManager.CoreLookupType(Mono.CSharp.CompilerContext ctx,System.String ns_name,System.String name,Kind type_Kind,Boolean required)[0x00000]中:0 位于Mono.CSharp.TypeManager.InitCoreTypes(Mono.CSharp.CompilerContext ctx)[0x00000]in:0 位于:0中的Mono.CSharp.Driver.Compile()[0x00000] 在0中的Mono.CSharp.Driver.Main(System.String[]args)[0x00000]处 ----------------------完成---------------------- 生成:1个错误,0个警告

    当做, 克劳迪奥

    2 回复  |  直到 16 年前
        1
  •  3
  •   Kevin McMahon    16 年前

    不能链接到用Visual Studio编译的dll。必须使用Monotouch重新编译DLL才能使用它。

        2
  •  5
  •   miguel.de.icaza    16 年前

    凯文是对的。

    .NET有几个“配置文件”,这些配置文件由它们的锚定“mscorlib.dll”控制。从锚定mscorlib.dll中,所有其余的程序集都会流动。您将注意到,您不应该在4.0系统上真正混合使用2.0 mscorlib编译的程序集,或者相反的方式(它们 可以

    因此,一般来说,您需要使用相同的程序集系列编译代码。使用4.0 mscorlib时,使用4.0系列程序集;使用2.0、3.5和3.5sp1时,使用2.0 mscorlib;使用Silverlight时,使用Silverlight 2.1 mscorlib API集。

    MonoTouch引入了它自己的锚定mscorlib,版本为2.1.0.0(与Silverlight相同),并且从这个程序集中,我们的API流动。

    这就是为什么您需要使用Mono的2.1.0.0概要文件程序集重建库。