将dotnet核心升级到1.0.0-preview2-003121后,如何解决对象引用异常问题

时间:2016-07-14 08:38:05

标签: .net-core dotnet-cli

升级到netcoreapp1.0后,我无法运行我的项目。我已经解决了更新,恢复包的所有错误和修复,并且在任何地方都没有出错。

(我按照本指南升级https://docs.microsoft.com/en-us/dotnet/articles/core/migrating-from-dnx

我得到的只是经典的Object reference not set to an instance of an object.,这让我疯狂。

运行命令

$ dotnet run
Object reference not set to an instance of an object.

我的工具:

$ dotnet --info

.NET Command Line Tools (1.0.0-preview2-003121)

Product Information:
 Version:            1.0.0-preview2-003121
 Commit SHA-1 hash:  1e9d529bc5

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  10.10
 OS Platform: Darwin
 RID:         osx.10.10-x64

(也在我的Win 10盒子上运行,结果相同,无法从cmd或visual studio运行)

--log 4也没有输出任何内容。

关于如何确定它的任何想法?

更新:

project.json

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "System.Diagnostics.Process" : "4.1.0"
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  },

  "tooling": {
    "defaultNamespace": "Avantime.Sniff"
  }
}

1 个答案:

答案 0 :(得分:0)

不确定导致上述错误的是什么,但在阅读了有关github的各种发行说明和次要修复后,这是需要进行调整以使其正常工作。

还有很多工作要删除所有对旧库的引用,这取决于代码中的netcore50(主要是更新EF7到EntityFrameworkCore)的旧代码。

我的修正:

添加Program.cs作为应用程序的新入口点

public static class Program
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();

            host.Run();

        }
    }

根据此修复Startup签名:https://github.com/aspnet/Announcements/issues/171

        public Startup(IHostingEnvironment env)
        {
            // Setup configuration sources.
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("config.json");

            [...]

将package.json更改为

{
  "dependencies": {
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
    "Microsoft.AspNetCore.Authentication.JwtBearer": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Mvc.Core": "1.0.0",
    "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.Session": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.EntityFrameworkCore": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
    "Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2", <-- IMPORTANT
    "Microsoft.Extensions.PlatformAbstractions": "1.0.0" <-- IMPORTANT
  },

  "buildOptions": {
    "compile": {
      "include": [
        "../../shared/**/*.cs"
      ]
    },
    "copyToOutput": {
      "include": [
        "Areas",
        "Views",
        "wwwroot",
        "config.json",
        "web.config"
      ]
    },
    "define": [
      "DEMO",
      "TESTING"
    ],
    "emitEntryPoint": true, <- IMPORTANT
    "preserveCompilationContext": true,
    "warningsAsErrors": false
  },
  "publishOptions": {
    "include": [
      "Areas",
      "Views",
      "wwwroot",
      "config.json",
      "web.config"
    ]
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },
  "frameworks": {
    "netcoreapp1.0": {
      "Microsoft.NETCore.App": {
        "version": "1.0.0-*",
        "type": "platform"
      },
      "imports": [ "netcore50", "portable-net452+win81" ] <- IMPORTANT
    }

  },
  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-*"
  },
  "scripts": {
    "postpublish": "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"
  },
  "webroot": "wwwroot",
  "version": "1.0.0-*",
  "runtimes": {
    "win10-x64": {}
  }
}