【问题标题】:How to set the default file(starting point) in dot net core如何在 dot net core 中设置默认文件(起点)
【发布时间】:2016-10-12 09:57:02
【问题描述】:

我正在尝试探索点网核心功能以更好地理解它,因为我执行了同样的操作

dotnet new
dotnet build
dotnet run

命令提示符窗口中的命令,它为我创建了一个项目,名称为Project.cs的文件已创建,最后在窗口中显示Hello World!

现在我在同一个文件夹结构中添加了一个不同名称的文件SampleDotNetCoreApp.cs,我想知道当我将执行dotnet run 命令时如何将SampleDotNetCoreApp.cs 设置为程序执行的默认起点。

换句话说,当我在同一个文件夹中有多个 cs 文件时,我想知道如何更改 dot net core 中的起始执行点。

【问题讨论】:

    标签: c# .net .net-core


    【解决方案1】:

    您可以编辑“Project.csproj”文件以指定使用哪个Main方法

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp2.1</TargetFramework>
        <StartupObject>Project.SampleDotNetCoreApp</StartupObject>
    </PropertyGroup>
    

    注意StartupObject 标签,标识启动程序的类。这个类必须有一个static Main(string[] args) 方法。

    使用dotnet restore确保更改成功保存,然后构建/运行项目

    dotnet rundotnet build 会执行自动恢复,因此无需手动执行此操作

    - 是的,我知道我迟到了,但我刚遇到这个问题,发现很难解决。不妨分享一下我新发现的智慧。

    【讨论】:

      【解决方案2】:

      解决这个问题的正确方法 - 在不删除代码的情况下确保您只有一个主要方法,并且至少给出:

      .NET Command Line Tools (1.1.6)

      Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core

      是使用以下参数调用构建:

      dotnet build /property:StartupObject=namespace.ClassWithMain

      错误消息将您指向一个完全不受支持的 /main,这非常令人困惑 - 我最终找到了要使用的正确属性(注意,我曾使用 /property:main 或 /property:Main 来无济于事)从这里的答案:dotnet build specify main method

      希望对你有帮助

      【讨论】:

      【解决方案3】:

      程序的入口点由静态Main 方法定义。

      当执行dotnet new时,这会创建Program.cs,里面有这个方法:

      public static void Main(string[] args)
      {
          Console.WriteLine("Hello World!");
      }
      

      这成为程序的入口点(因为它是项目中唯一的 static Main 方法。

      要从命令行使用static Main 方法添加新的.cs 文件,您可以使用:

      echo using System;namespace ConsoleApplication{public class SampleDotNetCoreApp{public static void Main(string[] args){Console.WriteLine("Hello NEW World!");}}} > SampleDotNetCoreApp.cs
      

      但是,如果你现在运行dotnet build,你会得到这个错误:

      程序定义了多个入口点。使用 /main 编译以指定包含入口点的类型。

      因为有 2 个static Main 方法。我无法弄清楚Compile with /main 的含义,但要克服此错误,您可以运行与上述类似的echo 命令,但这次更改Program.cs

      echo using System;namespace ConsoleApplication{public class Program{public static void MainOLD(string[] args){Console.WriteLine("Hello World!");}}} > Program.cs
      

      现在你只有 1 个static Main,你可以运行

      dotnet build
      dotnet run
      

      并查看输出:

      Hello NEW World!
      

      这几乎肯定不是推荐的方法,但希望它能给你一些想法。

      【讨论】:

        【解决方案4】:

        添加

        "entryPoint": "ADifferentMethod"
        

        在 project.json 的顶层。

        详情请咨询https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json#entrypoint

        【讨论】:

        • 像 java 使用 javac -"filename",我们在 dot net core 中是否有与相同的东西相关的东西,以便我可以执行不同的文件
        猜你喜欢
        • 1970-01-01
        • 2017-11-27
        • 2021-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-14
        相关资源
        最近更新 更多