我正在尝试探索点网核心功能,以便更好地理解它,对于我执行的相同
dotnet new
dotnet build
dotnet run
命令在命令提示符窗口中,它为我创建了一个项目,并创建了名为Project.cs
的文件,最后它在窗口中显示Hello World!
。
现在我在同一文件夹结构中添加了另一个文件,名称不同SampleDotNetCoreApp.cs
,我想知道如何设置SampleDotNetCoreApp.cs
作为程序执行的默认起点,当我执行时{ {1}}命令。
换句话说,当我在同一个文件夹中有多个cs文件时,我想知道如何更改点网核心中的起始执行点。
答案 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 run
和dotnet build
会执行自动还原,因此不需要手动执行
-是的,我知道我参加晚会很晚,但是我刚遇到这个问题,发现很难解决。不妨分享我的新发现。
答案 3 :(得分:0)
添加
"entryPoint": "ADifferentMethod"
在project.json的顶级。
请参阅https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json#entrypoint了解详情。