0

我正在關注ASP.NET核心教程https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/adding-model。我是腳手架控制器部分,我試圖從我的模型/數據庫環境中創建一個控制器。然而,當我按照指示爲指導中所描述的,我收到此錯誤:是否可以使用.NET CLI搭建我的控制器?

enter image description here

我試圖恢復的NuGet包並創建一個新的項目,但我仍然得到同樣的錯誤。有沒有一種方法可以使用.NET CLI搭建控制器?我以前從未見過一個,所以我不知道如何自己寫一個。

謝謝!

編輯:我只是試了@ Prafull8495的回答,並按照他的指示修改了我的項目文件。上述錯誤不再彈出,但現在我打別的東西:

enter image description here

回答

2

對於基於ASP.NET核心項目的csproj,你需要確保下面引用存在(定位ASP.NET核心的1.0.x的版本)

<ItemGroup>  
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.0.0-msbuild3-final" /> 
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" /> 
</ItemGroup> 

(是面向ASP.NET核心的1.1.x版本的)

<ItemGroup>  
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0-msbuild3-final" /> 
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" /> 
</ItemGroup> 

注意的版本項目在這兩種情況下,包裝Microsoft.VisualStudio.Web.CodeGeneration.Tools保持不變。

還要確保下面的包是不是在項目中引用作爲PackageReference

  • Microsoft.VisualStudio.Web.CodeGenerators.Mvc
  • Microsoft.VisualStudio.Web.CodeGeneration.Tools
+0

謝謝你的建議。我修改了我的項目文件,就像你說的那樣,我不再遇到那個錯誤,但現在我得到了一個不同的堆棧跟蹤(請參閱更新後的描述)。 –

+0

@JamesKo你能否在你的項目中提供軟件包引用?我懷疑在項目中直接引用了一些可能會導致此問題的舊包。 – Prafull8495

0

如果您使用project.json然後按照這種方法。

使用代碼生成器包,首先你需要把它列入project.json像這個 -

"dependencies": { 
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
    "version": "1.0.0-preview2-final", 
    "type": "build" 
    }, 
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": { 
    "version": "1.0.0-preview2-final", 
    "type": "build" 
    } 
}, 
"tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
    "version": "1.0.0-preview2-final", 
    "imports": [ 
     "portable-net45+win8" 
    ] 
    } 
} 

現在你可以使用dotnet restore命令恢復軟件包。一旦完成,就可以腳手架控制器和視圖使用下面的命令(或從Visual Studio如圖正式指南) -

dotnet aspnet-codegenerator --project . controller -name HelloController -m Author -dc WebAPIDataContext 

上述命令將產生與在根目錄名HelloController中控制器並在Views文件夾下的Hello文件夾中查看CRUD選項。請注意,上面的示例命令將幫助您使用模型和EF創建具有讀寫操作的Controller。沒有模型或dbcontext,它將創建空控制器。您可以在控制器參數之後使用命令行開關--help以獲得有關控制器生成器的更多選項。

相關問題