如何在点网核中设置默认文件(起始点)

时间:2016-10-12 09:57:02

标签: c# .net .net-core

我正在尝试探索点网核心功能,以便更好地理解它,对于我执行的相同

dotnet new
dotnet build
dotnet run

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

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

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

4 个答案:

答案 0 :(得分:1)

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

执行dotnet new时,会使用此方法创建Program.cs

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

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

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

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

但是,如果您现在运行dotnet build,则会收到此错误:

  

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

因为有两种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!

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

答案 1 :(得分:1)

解决此问题的正确方法 - 不删除代码,确保您只有一个主要方法,至少给出:

getPointsAsync(callback: (points: Partial<Point>[]) => {}) { this.http.get<Point[]>(`${environment.apiUrl}/api/points`) .subscribe( (result: Partial<Point>[]) => { let points = result.map(p=> Object.assign(new Point(), p)); callback(points); }, error => { //some error handling } ); }

.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非常令人困惑 - 我最终找到了正确使用的属性(注意,我使用过/ property:main或/ property:这里的答案主要是无效的:dotnet build specify main method

希望有所帮助

答案 2 :(得分: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会执行自动还原,因此不需要手动执行

-是的,我知道我参加晚会很晚,但是我刚遇到这个问题,发现很难解决。不妨分享我的新发现。

答案 3 :(得分:0)

添加

"entryPoint": "ADifferentMethod"

在project.json的顶级。

请参阅https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json#entrypoint了解详情。