繁体   English   中英

在 C# 项目中构建两个程序

[英]Building two programs in a C# project

精简版

在由dotnet new console创建的 C# 项目中,所有*.cs文件,甚至子目录中的文件,都被编译成一个程序。 如果有两个具有Main函数的类,则构建失败。 我如何告诉它构建两个程序?

更多细节

作为 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.csB.cs都声明Main ,则构建失败并显示error CS0017: Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point. 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.exeB.exe (或与目标平台最接近的等价物)。

我希望我将不得不进行一些重要的*.csproj编辑,但我所知道的关于该文件的所有信息是dotnet new创建的,并且dotnet add package放在 PackageReference 中。 实际的构建规则隐藏在Sdk ,我不知道如何控制它的作用。

相关问题

这个问题看起来和我的一样,但接受的答案只构建了其中一个程序。

您必须有两个单独的项目才能生成两个单独的 EXE 文件。 共享代码通常会出现在两者都依赖的第三个“库”项目中。 虽然您可以使一个应用程序项目依赖于另一个,但这会有点奇怪。

我想你想参考另一个项目。 您可以使用dotnet add reference命令或此命令dotnet add [<PROJECT>] reference [-f|--framework] <PROJECT_REFERENCES>

只需将 PROJECT 替换为您的项目名称,将 PROJECT_REFERENCES 替换为您要引用的项目,或者您可以直接键入项目引用。

    <ItemGroup>
      <ProjectReference Include="app.csproj" />
      <ProjectReference Include="..\lib2\lib2.csproj" />
      <ProjectReference Include="..\lib1\lib1.csproj" />
    </ItemGroup>

在项目文件中。

这也将使用引用的项目为您构建所有项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM