错误1150 genasm.exe(1):错误终结类型错误。方法" DoParse"

时间:2020-03-06 14:31:56  来源:igfitidea点击:

o一个非常令人兴奋的构建问题。紧凑的框架在构建时偶尔会变得有趣。通常在处理xmta文件时,但这是我第一次看到它在这种情况下出现问题。

我用抽象方法创建了一个抽象基类。将此放置在我的核心dll之一中。很好然后,我从"继承"的.dll中继承了该文件。现在我得到这个错误:

Error 1150    genasm.exe(1) : error There
  was an error finalizing type . Method
  'DoParse' in type
  'MyComanyName.PlatformName.ProductName.Configuration.ConfigurationParser'
  from assembly
  'UICore.WindowsCE.asmmeta,
  Version=1.0.3187.17348,
  Culture=neutral, PublicKeyToken=null'
  does not have an
  implementation.   UICore

是的,我已经在此类中实现了此方法。我还尝试了完全清理和重建以及关闭并重新启动VS。

出于兴趣,我还警告说"对象未设置为对象实例",这有点不寻常。

更新:如果我将方法设为虚拟方法而不是抽象方法,问题就会消失。

更新:

  • CF 2.0 SP1
  • Visual Studio 2005 SP1
  • 该方法不是通用的
  • 但是,我确实将具有通用方法的对象赋予该对象的构造函数。

解决方案

在Visual Studio 2005/2008中,genasm的问题在于,它必须实例化类型以生成asmmeta文件,因此,很遗憾,我们不能具有公共抽象类型。

检查具有类似问题(带有泛型)的该MSDN线程。也讨论了一些变通办法。

不知道这是否相关,但是如果包含DesignTimeAttributes.xmta文件,也会遇到类似的问题。

如果我们使用基本表单并为其继承,则将获得该DesignTimeAttributes。设计器中存在一个错误,这意味着我们根本看不到继承的表单,因此将其作为修复程序的一部分生成。

我们可以通过从项目中排除文件来解决这一问题。