C# 无法部署sql clr存储过程(无法验证元数据)

C# 无法部署sql clr存储过程(无法验证元数据),c#,sql,sql-server,stored-procedures,sqlclr,C#,Sql,Sql Server,Stored Procedures,Sqlclr,我正在尝试在SQL Server 2008上为SQL CLR(.Net 3.5)程序集运行CREATE ASSEMBLY命令。它返回一条神秘的错误消息: An error occurred while gathering metadata from assembly 'My.Awesome.Assembly' with HRESULT 0x80004005. 它为什么要这样做,我如何在不将其部署为不安全的情况下修复它 我已采取的步骤: 遵守所有的规则 没有使用静态字段 已经创建了另外两个部署

我正在尝试在SQL Server 2008上为SQL CLR(.Net 3.5)程序集运行CREATE ASSEMBLY命令。它返回一条神秘的错误消息:

An error occurred while gathering metadata from assembly 'My.Awesome.Assembly' with HRESULT 0x80004005.
它为什么要这样做,我如何在不将其部署为不安全的情况下修复它


我已采取的步骤:

  • 遵守所有的规则
  • 没有使用静态字段
  • 已经创建了另外两个部署良好的SQL CLR程序集

  • 这就是为我解决问题的原因;对于任何人来说,SQL CLR都是非常非常挑剔的

    我有一个这样的构造函数:

    public MyObject(IEnumerable<T>  items)
    {
        _innerItems = items.ToDictionary(i => i.Key);
    }
    
    公共MyObject(IEnumerable项)
    {
    _innerItems=items.ToDictionary(i=>i.Key);
    }
    
    我把它改成这样:

    public MyObject(IEnumerable<T>  items)
    {
        _innerItems = new Dictionary<int, T>();
        foreach (var item in items)
        {
            _innerItems.Add(item.Key, item);
        }
    }
    
    公共MyObject(IEnumerable项)
    {
    _innerItems=新字典();
    foreach(项目中的var项目)
    {
    _innerItems.Add(item.Key,item);
    }
    }
    

    然后它就可以部署了。然后我继续把头撞在桌子上。两种方法,功能等效;一个可以工作,另一个有一条隐藏的部署错误消息。

    您是否在ILDASM或Refelctor中看到程序集的内容!可能会有帮助。你能提供更多关于程序集中代码的信息吗?另外,请参阅本文-