Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以使用Microsoft Dotnet CLI构建ASP.NET核心web应用程序吗?_C#_Asp.net Core_.net Core_Asp.net Core 1.0_Dotnet Cli - Fatal编程技术网

C# 我可以使用Microsoft Dotnet CLI构建ASP.NET核心web应用程序吗?

C# 我可以使用Microsoft Dotnet CLI构建ASP.NET核心web应用程序吗?,c#,asp.net-core,.net-core,asp.net-core-1.0,dotnet-cli,C#,Asp.net Core,.net Core,Asp.net Core 1.0,Dotnet Cli,我浏览了一些网站,发现.NET Core正在使用.NET CLI(.NET命令行界面)。我已经使用.NET CLI创建了一个控制台应用程序,它运行良好 但是,当我使用Yeoman创建ASP.NET核心web应用程序并运行命令“dotnet restore”时,我遇到以下错误: Microsoft.CodeAnalysis.CSharp 1.1.0-rc1-20151109-01与DNXCore不兼容,版本=v5.0 我也试过了 dotnet还原-s 但是得到同样的错误 如果我运行“dnu res

我浏览了一些网站,发现.NET Core正在使用.NET CLI(.NET命令行界面)。我已经使用.NET CLI创建了一个控制台应用程序,它运行良好

但是,当我使用Yeoman创建ASP.NET核心web应用程序并运行命令“dotnet restore”时,我遇到以下错误:

Microsoft.CodeAnalysis.CSharp 1.1.0-rc1-20151109-01与DNXCore不兼容,版本=v5.0

我也试过了

dotnet还原-s

但是得到同样的错误

如果我运行“dnu restore”,那么它工作正常,所以我的问题是,我是否也可以将.NET CLI用于web应用程序,还是仅限于控制台应用程序?

我已经浏览了链接

&


但是没有找到任何关于它是否支持ASP.NET核心web应用程序的详细信息?

我花了一个小时来玩弄它,并用它运行了“欢迎页面”

正如我所怀疑的,您试图在dnx样式的项目中使用dotnet cli,但使用了错误的nuget提要(官方的,而不是每晚的myget提要)

对于这个演示项目,只需创建一个新文件夹并运行
dotnetnew
。这将创建三个文件:
NuGet.Config
project.json
Program.cs
。您可以删除后面的一个,只需从下面创建一个
Startup.cs

Startup.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;

namespace AspNetCoreCliDemo
{
    public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app)
        {
            app.UseIISPlatformHandler();
            app.UseWelcomePage();
        }

        // This doesn't work right now, as it can't resolve WebApplication type
        //public static void Main(string[] args) => WebApplication.Run<Startup>(args);

        // Entry point for the application.
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                        .UseDefaultConfiguration(args)
                        .UseServer("Microsoft.AspNetCore.Server.Kestrel")
                        .UseIISPlatformHandlerUrl()
                        .UseStartup<Startup>()
                        .Build();

            host.Run();
        }
    }
}
注意:目前只支持
dnxcore
名字对象

最后但并非最不重要的一点是,在我的案例中有效的
NuGet.Config


“导入并服务欢迎页面

您可能会收到关于有多个入口点的错误消息,这是因为您在
Program.cs
Startup.cs
中都有
Main
方法。只需删除
Program.cs

这应该作为一个切入点

dotnetcli
目前还不支持命令(以前在
project.json
文件中定义的命令)。

简短回答 对于ASP.NET核心rc1,我们使用
dnx
dnu

对于ASP.NET核心rc2,我们使用
dotnet.

更长的答案 我浏览了一些网站,发现.NET Core正在使用.NET CLI(.NET命令行界面)。我已经使用.NET CLI创建了一个控制台应用程序,它工作正常

ASP.NET Core rc2也是一个控制台应用程序。也就是说,它是一个启动ASP.NET托管层的控制台应用程序

但是,当我使用Yeoman创建ASP.NET核心web应用程序并运行命令“dotnet restore”时,我得到以下错误

我的感觉是,您正在运行以下命令:

yo aspnet
? What type of application do you want to create? Web Application
? What's the name of your ASP.NET application? MyApp
这将创建一个ASP.NET Core rc1项目。您可以通过查看结果project.json文件依赖项来看到这一点。它们都是
rc1 final
。结果:您不能使用
dotnet
命令行来构建它们。您仍然必须使用
dnu build
dnx
公式

…我可以将.NET CLI也用于web应用程序,还是仅限于控制台应用程序

在ASP.NET Core rc1中,
dnx.exe
调用了
new WebHostBuilder()
,因此我们需要使用
dnx
来启动我们的web应用程序。在ASP.NET Core rc2中,包含我们的web应用程序的控制台应用程序自己调用了
new WebHostBuilder()
,因此我们可以使用
dotnet
命令行界面启动应用程序。因此

  • 否您不能对ASP.NET核心rc1 Web应用程序使用
    dotnet
    CLI,因为
    dnx.exe
    加载ASP.NET宿主层
  • 是的,您可以将其用于ASP.NET核心rc2 Web应用程序,因为您的控制台应用程序本身加载ASP.NET托管层

    • 现在我不知道您的确切错误是什么,但这可能会有所帮助:

      基本上,您需要向project.json添加适当的导入:

      {
        "version": "1.0.0-*",
        "compilationOptions": {
          "emitEntryPoint": true
        },
      
        "dependencies": {
          "NETStandard.Library": "1.0.0-rc2-*",
          "Microsoft.AspNetCore.Diagnostics": "1.0.0-rc2-*",
          "Microsoft.AspNetCore.IISPlatformHandler": "1.0.0-rc2-*",
          "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-*"
        },
      
        "frameworks": {
          "dnxcore50": { }
        },
      
        "exclude": [
          "wwwroot",
          "node_modules"
        ],
        "publishExclude": [
          "**.user",
          "**.vspscc"
        ]
      }
      
          "frameworks": {
              "dnxcore50": { 
                  "imports": "portable-net451+win8"
              }
          }
      
      (张贴于此:)

      这些是我的错误:

      Errors in /webserver/project.json
          Package Microsoft.CodeAnalysis.CSharp 1.1.0-rc1-20151109-01 is not compatible with dnxcore50 (DNXCore,Version=v5.0). Package Microsoft.CodeAnalysis.CSharp 1.1.0-rc1-20151109-01 supports:
            - net45 (.NETFramework,Version=v4.5)
            - portable-net45+win8 (.NETPortable,Version=v0.0,Profile=Profile7)
          Package Microsoft.CodeAnalysis.Common 1.1.0-rc1-20151109-01 is not compatible with dnxcore50 (DNXCore,Version=v5.0). Package Microsoft.CodeAnalysis.Common 1.1.0-rc1-20151109-01 supports:
            - net45 (.NETFramework,Version=v4.5)
            - portable-net45+win8 (.NETPortable,Version=v0.0,Profile=Profile7)
          One or more packages are incompatible with DNXCore,Version=v5.0.
      
      我使用来自的Swagger代码生成器生成了.Net Web应用程序


      添加导入后,
      dotnet restore
      工作正常。

      您是否也通过dotnet cli(通过
      dotnet new
      命令)创建了项目?在
      project.json
      中,您的依赖项似乎仍然引用rc1。当我使用“dotnet new”时,dotnet cli仅适用于rc2夜间构建(尚未正式的rc2构建)"然后它正在创建一个C#console应用程序。我没有找到任何使用CLI创建ASP.NET Core web应用程序的命令,因此对于scaffolding,我使用yeoman,然后使用CLI进行恢复和构建。但是您可以比较
      project.json
      文件,并比较不同的依赖项。dotnet CLI仍处于早期阶段,而ASP.NET Core 1.0在完全迁移到它的过程中(因此ASP.NET Core 1.0 RC2版本的延迟,预计将在1月份发布)。在官方的nuget 3提要上只有官方版本(RC1)。这可能是因为您需要更新版本的依赖项。上有一个myget提要,其中包含更新版本的Microsoft.CodeAnalysis.CSharp和新的Microsoft.AspNetCore.Mvc.*Packages感谢您的回答。但是它包含很多复杂性和解决方法。如果它有这么多复杂性,为什么我要选择CLI.I a使用yeoman进行脚手架搭建以及dnu和dnx命令。那么,使用CLI创建ASP.NET核心Web应用程序的脚手架工具或命令是什么。@Banketeshvar Narayan使用CLI在ASP.NET上有点像是在跳炮。这是一个非常大的方向变化,仍在大规模开发中,没有路线图。脚手架工具还没有exist for ASP.NET Core使用CLI…RC2仅通过夜间版本提供,尚未准备好供beta/公共使用。感谢@Phasiq提供您的inf