代码之家  ›  专栏  ›  技术社区  ›  Wagner DosAnjos

Azure函数未能以错误“程序集Z中类型Y中的方法X没有实现”开头。

  •  1
  • Wagner DosAnjos  · 技术社区  · 6 年前

    我的Azure函数项目(.NET标准)有一个名为 Startup.cs 实现接口的 IFunctionStartup ,只要此类在项目中,就会引发下面的错误。如果我在类中显式地实现接口,我可以通过这个错误,但是函数中的其他类将导致相同的问题。

    Export: Unable to load one or more of the requested types.
    Method 'RegisterDependencies' in type '*****.Startup' 
    from assembly '*****.AzureFunction, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
    does not have an implementation.
    

    创业公司

    public class Startup : IFunctionStartup
    {
        public void RegisterDependencies(ContainerBuilder builder, IConfiguration configuration)
        {
            builder.RegisterModule(new ApplicationRegistrar(configuration));        
        }
    
        // This explicit interface implementation gets me pass the error,
        // but doesn't address the root cause, because other classes will
        // start failing with the same error.
    
        //void IFunctionStartup.RegisterDependencies(ContainerBuilder builder, IConfiguration configuration)
        //{
        //    throw new System.NotImplementedException();
        //}
    }
    

    功能启动.cs

    public interface IFunctionStartup
    {
        void RegisterDependencies(ContainerBuilder builder, IConfiguration configuration);
    }
    

    以下是完整的初始化日志:

    Azure Functions Core Tools (2.3.199 Commit hash: fdf734b09806be822e7d946fe17928b419d8a289)
    Function Runtime Version: 2.0.12246.0
    [1/11/2019 2:29:54 PM] Starting Rpc Initialization Service.
    [1/11/2019 2:29:54 PM] Initializaing RpcServer
    [1/11/2019 2:29:54 PM] Building host: startup suppressed:False, configuration suppressed: False
    [1/11/2019 2:29:54 PM] Reading host configuration file '*****\host.json'
    [1/11/2019 2:29:54 PM] Host configuration file read:
    [1/11/2019 2:29:54 PM] {
    [1/11/2019 2:29:54 PM]   "version": "2.0"
    [1/11/2019 2:29:54 PM] }
    [1/11/2019 2:29:55 PM] Initializing Host.
    [1/11/2019 2:29:55 PM] Host initialization: ConsecutiveErrors=0, StartupCount=1
    [1/11/2019 2:29:55 PM] Starting JobHost
    [1/11/2019 2:29:55 PM] Starting Host (HostId=*****-1139087863, InstanceId=2896b355-b2f7-4ae7-bfc4-403ec9c0d84d, Version=2.0.12246.0, ProcessId=247248, AppDomainId=1, InDebugMode=False, InDiagnosticMode=False, FunctionsExtensionVersion=)
    [1/11/2019 2:29:55 PM] Loading functions metadata
    [1/11/2019 2:29:55 PM] 1 functions loaded
    [1/11/2019 2:29:55 PM] WorkerRuntime: dotnet. Will shutdown other standby channels
    [1/11/2019 2:29:56 PM] Generating 0 job function(s)
    [1/11/2019 2:29:56 PM] Found the following functions:
    [1/11/2019 2:29:56 PM] *****.ExportComplianceDetailsFunction.Run
    [1/11/2019 2:29:56 PM]
    [1/11/2019 2:29:56 PM] Host initialized (754ms)
    [1/11/2019 2:29:56 PM] Host started (767ms)
    [1/11/2019 2:29:56 PM] Job host started
    [1/11/2019 2:29:56 PM] The following 1 functions are in error:
    [1/11/2019 2:29:56 PM] Export: Unable to load one or more of the requested types.
    [1/11/2019 2:29:56 PM] Method 'RegisterDependencies' in type '*****.Startup' from assembly '*****.AzureFunction, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
    [1/11/2019 2:29:56 PM]
    Hosting environment: Production
    Content root path: *****\netstandard2.0
    Now listening on: http://0.0.0.0:7071
    Application started. Press Ctrl+C to shut down.
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Wagner DosAnjos    6 年前

    我能解决这个问题。根本原因是 Microsoft.EntityFrameworkCore.SqlServer 2.2版,目前与Azure功能不兼容。

    不幸的是,错误消息与根本原因完全无关,我只能通过试验和错误找出不兼容的nuget。

    以下是一些关于如何排除故障的提示: