【发布时间】:2016-12-30 14:35:06
【问题描述】:
我有一个little library,它在很大程度上依赖于 Emitting 类和方法。
我想将它迁移到 .Net Standard,因为它不使用任何非托管的东西,因此可以在任何操作系统上轻松运行。但是当我在我的解决方案上运行可移植性检查器时,它表明我的Expression 生成器部分一切正常,但它对Emit 的使用感到不满。
这里是对net452、netstandard1.6 和netstandard2.0 的分析。
我的问题是,是否有一些现代且推荐的方法来在运行时生成受 .Net Standard 支持的类,或者我可以忘记将我的库移植到它?
【问题讨论】:
-
这将是 Roslyn,在 C# 6 及更高版本中生成类的推荐方法。 C# 脚本使用它来做到这一点,从脚本文本生成和运行类
-
这可以被认为是duplicate of this
-
@PanagiotisKanavos 看来这个功能is under construction 所以Rosylin 无法在构建时atm 生成代码。
-
请注意,虽然可以在运行时生成类,但加载这些动态生成的类与某些支持.网络标准。实际上,如果您对 .NET Standard 很认真,我看不到任何选择,只能从根本上重新考虑您的整个项目,抱歉。不过,如果这对您来说足够好的话,也许只有 .NET Core 是可能的。
-
Emit在 Xamarin.iOS 上不受支持,这可能是它未在 .NET Standard 中列出的原因。您将不得不检查还有什么可以使用,因为 iOS 上至少有一个 C# IDE 显示了可行性。
标签: c# .net .net-core .net-standard