[英]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.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.
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
,我不知道如何控制它的作用。
相关问题
这个问题看起来和我的一样,但接受的答案只构建了其中一个程序。
您必须有两个单独的项目才能生成两个单独的 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.