C# Net核心:程序不包含静态';主要';适用于入口点的方法
我正在尝试将基于洋葱架构设计方法的Asp.NETWebAPI项目移植到Asp.NETCore。但是,当我构建类库时,编译器正在Program.cs中查找静态Main方法,我得到: C:\Projects\Some\src\Some.Core\error CS5001:程序不包含 适用于入口点的静态“主”方法 我假设整个解决方案只有一个Program.cs/入口点,它位于我的WebApi项目中。我错了吗?否则,如何解决此错误?我错误地认为C# Net核心:程序不包含静态';主要';适用于入口点的方法,c#,asp.net-core,C#,Asp.net Core,我正在尝试将基于洋葱架构设计方法的Asp.NETWebAPI项目移植到Asp.NETCore。但是,当我构建类库时,编译器正在Program.cs中查找静态Main方法,我得到: C:\Projects\Some\src\Some.Core\error CS5001:程序不包含 适用于入口点的静态“主”方法 我假设整个解决方案只有一个Program.cs/入口点,它位于我的WebApi项目中。我错了吗?否则,如何解决此错误?我错误地认为“emittentrypoint”:true达到了这个目的
“emittentrypoint”:true
达到了这个目的
下面是我的类库的project.json示例:
{
"version": "1.0.0-*",
"description": "Some.Core Class Library",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Authentication.JwtBearer": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Routing": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.AspNetCore.Identity": "1.0.0",
"Microsoft.Extensions.Configuration": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0"
},
"frameworks": {
"netstandard1.6": {
"dependencies": {
"NETStandard.Library": "1.6.0"
}
}
},
"runtimes": {
"win7-x64": {}
}
}
感谢您的建议。为了避免类库中出现“程序不包含适合入口点的静态“Main”方法”的错误,请从buildOptions中删除emittentrypoint-
"buildOptions": {
"emitEntryPoint": true
},
emitEntryPoint告诉编译器是创建控制台应用程序还是库。有关更多信息,请参阅此我一直在使用.NET Core 2.0的macOS上处理此错误,它似乎与我将解决方案存储在Google Drive文件夹中有关。这当然不是因为我缺少项目中的主要方法,尽管我偶尔会看到文件/文件夹从Rider中消失,重新添加它们(添加现有项)可以解决问题。我在VS for Mac和VS代码中遇到了相同的错误,但它们似乎没有更新文件夹内容以反映丢失的文件,因此很难查明问题所在
tl;dr尝试将您的解决方案/项目移出同步网络驱动器 一个显而易见的解决方案是检查官方MSDN错误代码说明
我使用了async修饰符,必须移动到C语言版本7.1+如果主方法具有async修饰符,请确保所选的C语言版本为7.1或更高版本。您可以通过手动将以下元素添加到.csproj文件中来解决此问题
最新的
通过在我的classlib.csproj文件中显式设置OutputType
标记,解决了类似的问题:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<OutputType>Library</OutputType>
</PropertyGroup>
netcoreapp2.2
图书馆
最新的
图书馆
我将解决方案中非启动项目的输出类型更新为类库,问题得到了解决
这应该在哪里找到?代码式答案虽然可以解决手头的问题,但不太好,因为它们通常不会说明为什么这是一个好的解决方案。你可以通过阅读这篇关于好答案的介绍来改进你的答案:谢谢你的评论,这正是我遇到的问题。我有一个额外的控制台应用程序,它不是启动项目,在将其输出更改为类库之后,它就开始工作了 <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <OutputType>Library</OutputType> </PropertyGroup>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<OutputType>Library</OutputType>
</PropertyGroup>