我浏览了一些网站,发现.NET Core正在使用 .NET CLI (.NET命令行界面) . 我使用.NET CLI创建了一个控制台应用程序,它运行正常
但是当我使用Yeoman创建一个ASP.NET Core Web应用程序并运行命令“dotnet restore”时,我收到以下错误:
Microsoft.CodeAnalysis.CSharp 1.1.0-rc1-20151109-01与DNXCore不兼容,版本= v5.0 .
我也试过了
dotnet restore -s https://api.nuget.org/v3/index.json
但得到同样的错误 .
If I run “dnu restore” then it is working fine so my question is can I use .NET CLI for web application too or it is only limited to console application?
我已经通过了链接
https://github.com/dotnet/cli&http://dotnet.github.io/getting-started/
但是没有找到它支持ASP.NET Core web app的任何细节?
3 回答
我花了一个小时的时间来玩它,我得到了“欢迎页面” .
正如我所怀疑的那样,你试图将dotnet-cli与你的dnx风格的项目一起使用,你使用了错误的nuget feed(官方的,而不是每晚的myget feed) .
对于此演示项目,只需创建一个新文件夹并运行
dotnet new
. 这将创建三个文件:NuGet.Config
,project.json
和Program.cs
. 您可以删除后一个,只需从下面创建一个Startup.cs
.Startup.cs:
project.json:
Note: 截至目前仅支持
dnxcore
名字对象 .最后但并非最不重要的是,
NuGet.Config
在我的案例中起作用:我没有't had the success with the two default feeds (api.nuget.org and dotnet-core) as it couldn'解决一些依赖 . 添加"cli-deps" Feed后,所有包都已解析并且
dotnet run
正常工作 . 它将侦听“http://localhost:5000”端口并提供欢迎页面 .您可能会收到有关多个入口点的错误消息,这是因为您在
Program.cs
和Startup.cs
中都有Main
方法 . 只需删除Program.cs
即可 .这应该作为切入点 .
dotnet-cli
截至目前还不支持命令(之前在project.json
文件中定义的命令) .简答
对于ASP.NET Core rc1,我们使用
dnx
和dnu
.对于ASP.NET Core rc2,我们使用
dotnet.
更长的答案
ASP.NET Core rc2也是一个控制台应用程序 . 也就是说,它是一个启动ASP.NET托管层的控制台应用程序 .
我的感觉是你正在运行这些命令:
这将创建一个ASP.NET Core rc1项目 . 您可以通过查看生成的project.json文件依赖项来查看此信息 . 他们都说
rc1-final
. 结果:您无法使用dotnet
命令行构建它们 . 您仍然必须使用dnu build
和dnx <command>
公式 .在ASP.NET Core rc1中,
dnx.exe
调用new WebHostBuilder()
,因此我们需要使用dnx
来启动我们的Web应用程序 . 在ASP.NET Core rc2中,包含我们的Web应用程序的控制台应用程序自己调用new WebHostBuilder()
,因此我们可以使用dotnet
命令行界面来启动应用程序 . 所以...不,您不能将
dotnet
CLI用于ASP.NET Core rc1 Web应用程序,因为dnx.exe
加载了ASP.NET主机层 .是的,您可以将它用于ASP.NET Core rc2 Web应用程序,因为您的控制台应用程序会加载ASP.NET主机层本身 .
现在我不知道你的确切错误是什么,但这可能会有所帮助:
基本上,您需要将适当的导入添加到project.json:
(如此发布:https://github.com/aspnet/Home/issues/1265)
这些是我的错误:
我使用来自http://editor.swagger.io/#/的Swagger Code生成器生成.Net Web App
添加导入后,
dotnet restore
工作没有问题 .