Короткая версия
В проекте C #, созданном с помощью dotnet new console
, все *.cs
файлы, даже файлы в подкаталогах, скомпилированы в одну программу. Если есть 2 класса с Main
функциями, он не может быть собран. Как мне сказать, чтобы построить 2 программы?
Подробнее
Будучи новичком в C # и всех связанных с ним инструментах, я следовал инструкциям и узнал, как создать минимальный проект, запустив dotnet new console
, добавив несколько файлов *.cs
и запустив получившуюся программу с dotnet run
. Я даже сделал полезный «релиз» с dotnet publish
. Все это координируется этим *.csproj
файлом:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="12.0.2"/>
</ItemGroup>
</Project>
Если A.cs
и B.cs
оба объявляют Main
, сборка завершается неудачно с error CS0017: Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point.
. Итак, у меня есть подсказка, что есть опция /main
, но я не знаю, где ее поставить. dotnet run /main A.cs
не правда ли.
Цель состоит в том, чтобы иметь что-то, что выглядит как dotnet run /main A.cs
, но на самом деле работает; dotnet publish
создаст A.exe
и B.exe
(или ближайший эквивалент для целевой платформы).
Я ожидаю, что мне придется выполнить нетривиальное *.csproj
редактирование, но все, что я знаю об этом файле, это то, что dotnet new
создал его и dotnet add package
поместил в PackageReference. Фактические правила сборки скрыты в Sdk
, и я не знаю, как управлять тем, что он делает.
Смежный вопрос
Этот вопрос выглядит так же, как мой, но принятый ответ строит только одну из программ.