C# CodeDom System.TypeLoadException XamMac2 Xamarin macOS

C# CodeDom System.TypeLoadException XamMac2 Xamarin macOS

我正在编写一个复杂的应用程序,它使用 CodeDom 通过反射来实例化对象。但是,它混合在 netstandard2.0(也支持 net461 的包装器)和 net461 项目之间。

据我所知,很有可能参考了以前版本的框架,本例如下:

{System.TypeLoadException: Could not resolve type with token 01000067 from typeref (expected class 'System.CodeDom.Compiler.CompilerParameters' in assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')  

忽略为 Xamarin Mac 可执行文件加载到内存中的系统引用。

不合适的是寻找可能被 Xamarin 系统程序集覆盖的系统程序集的代码。

你知道解决这个问题的方法吗?除了将剩余的一组项目完全迁移到 netstandard2.0 和 net461 之间的混合。

谢谢。

确实如此。

打包在 System.dll 中的 System.CodeDom 程序集与要构建的项目必须引用的程序集不匹配。

通过将 netstandard2.0 与 net461 设置为目标解决了这个问题。

  <PropertyGroup>
    <TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
  </PropertyGroup>

像这样。