2017-04-06 66 views
7

我正在遷移使用.NET Core SDK 1.0.0-preview2-1-003177構建的解決方案,因爲我想在Visual Studio 2017中使用它。我使用dotnet migrate命令來自.NET Core SDK 1.0.1,它很好,它編譯。當我在生成()與此異常運行與IIS Express中的Web部件的經典的Program.csWebHostBuilder.Build().NET中的MissingMethodException核心遷移解決方案

var host = new WebHostBuilder() 
    .UseKestrel() 
    .UseContentRoot(Directory.GetCurrentDirectory()) 
    .UseIISIntegration() 
    .UseStartup<Startup>() 
    .Build(); 

host.Run(); 

崩潰

system.missingMethodException而:「找不到方法: 'System.IServiceProvider Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions.BuildServiceProvider(Microsoft.Extensions.DependencyInjection.IServiceCollection)'。'

我根本找不到原因。

回答

5

它看起來像你的一些依賴關係,沒有更新到正確的版本。它可以是舊版本或新版本。您可以創建一個新項目(dotnet new)並在您的csproj文件上驗證軟件包版本。版本不匹配導致99%的錯誤。

+0

我認爲這可能是原因,謝謝你的確認。複製並使用我的同事PC上的'.nuget/packages'文件夾解決方案,現在的任務是查找當我在空閒環境中啓動時依賴關係是錯誤的。 你能解釋一下如何去做你的建議(我是VS,.NET&co的新手)?非常感謝你。 – oskarnrk

+0

當然:)如果使用已安裝的.NET CLI工具最新版本,您可以使用簡單類型的dotnet new NAME創建新項目,並使用乾淨的csproj創建一個新項目。如果你在Windows上,你可以很容易地使用vs新項目嚮導來創建新項目。只需將該csproj中的依賴項部分複製到當前的那個。 – Chrissx

+0

我已經跳入同樣的問題,並且已經建議用新項目對我的.csproj文件進行交叉檢查,沒有發現任何不匹配。我也嘗試運行新的(空)項目,並沒有拋出異常。 是否有其他的事情可能會導致此錯誤出現? –

1

這件事發生在我身上,因爲我非常渴望並且安裝了太多的EntityFrameworkCore軟件包。

Microsoft.EntityFrameworkCore 2.0.0-preview1-final 
Microsoft.EntityFrameworkCore.SqlServer 1.1.2 

我刪除了第一個,所以我留下了

Microsoft.EntityFrameworkCore.SqlServer 1.1.2 

然後錯誤消失。