Asp.Net Core: программа не содержит статического метода "Main", подходящего для точки входа
Я пытаюсь портировать мой Asp.Net проект WebApi, основанный на подходе к проектированию архитектуры Onion, Asp.Net ядро. Однако, когда я создаю свои библиотеки классов, компилятор ищет статический основной метод в программе.cs и я получаю:
C:ProjectsSomesrcSome.Coreerror CS5001: программа не содержит статический метод "Main", подходящий для точки входа
Я предполагаю, что должна быть только одна программа.cs / entry точка для общего решения, и это находится внутри моего проекта WebApi. Я не прав? В противном случае, как устранить эту ошибку? Я ошибочно предположил, что "emitEntryPoint": true
служили этой цели.
вот пример проекта моей библиотеки классов.в 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": {}
}
}
предложения приветствуются.
2 ответов
чтобы избежать ошибки "программа не содержит статического метода "Main", подходящего для точки входа " в библиотеке классов, удалите emitEntryPoint из buildOptions -
"buildOptions": {
"emitEntryPoint": true
},
emitEntryPoint сообщает компилятору, Создавать ли консольное приложение или библиотеку. Для получения дополнительной информации см. Это в должности
Я имел дело с этой ошибкой на macOS с .NET Core 2.0, и это, похоже, связано с моим хранением моего решения в папке Google Drive. Это, конечно, не потому, что мне не хватает основных методов в моих проектах, хотя периодически я вижу, как файлы/папки исчезают из Rider и их повторное добавление (добавление существующего элемента) решает проблему. Я получаю ту же ошибку в VS для Mac и VS Code, но они, похоже, не обновляют содержимое папки, чтобы отразить отсутствующие файлы, поэтому это было труднее определить проблему.
tl;dr попробуйте переместить решение / проект из синхронизированного сетевого диска!