C# 将具有多个启动项目的解决方案从.NET Framework 4.7.1移植到.NET Core 2.1

C# 将具有多个启动项目的解决方案从.NET Framework 4.7.1移植到.NET Core 2.1,c#,.net-core,visual-studio-2017,asp.net-core-webapi,porting,C#,.net Core,Visual Studio 2017,Asp.net Core Webapi,Porting,我正在将我的解决方案从.NET标准(针对.NET Framework 4.7.1)迁移到.NET核心(针对netcoreapp2.1)。我的解决方案由12个项目组成,其中两个是需要同时运行的WebAPI项目 我将所有解决方案的.csproj中的目标从“net471”更改为“netcoreapp2.1”。在一些情况下,我还必须在代码中更新API。关于潜在的软件包不兼容,我仍在处理一些警告 但是,我的主要问题是以下错误: 错误CS0017程序定义了多个入口点。使用/main编译以指定包含入口点的类型

我正在将我的解决方案从.NET标准(针对.NET Framework 4.7.1)迁移到.NET核心(针对netcoreapp2.1)。我的解决方案由12个项目组成,其中两个是需要同时运行的WebAPI项目

我将所有解决方案的.csproj中的目标从“net471”更改为“netcoreapp2.1”。在一些情况下,我还必须在代码中更新API。关于潜在的软件包不兼容,我仍在处理一些警告

但是,我的主要问题是以下错误:

错误CS0017程序定义了多个入口点。使用/main编译以指定包含入口点的类型。Foo.Api D:\Code\Product\Foo\src\Foo.Api\Program.cs 9处于活动状态

我的解决方案有两个启动项目,因为它由两个相关但独立的API组成。我不想指定一个作为主,因为我需要在启动解决方案时同时启动它们,而在.NET Framework下这是没有问题的

有可能让这些项目一起启动吗

请注意,如果我将
Foo.Api.Program
添加到我的一个Api项目中,我可以成功地启动该项目。我认为这相当于使用/main编译。然而,我不能让另一个API项目以同样的方式启动。相反,我可以
dotnet运行该项目,并让它们都运行。但是,编译时错误需要解决,才能通过我们的发布管道

我的解决方案中肯定只有这两种主要方法。以下是在
void Main
上查找的结果:


我的问题解决了,但我仍然不确定是什么原因造成的

我引用了几个软件包,它们给出了以下警告:

警告NU1701程序包“CacheManager.SystemRuntimeCaching 1.1.2”已使用“.NETFramework,版本=v4.6.1”而不是项目目标框架“.NETCoreApp,版本=v2.1”还原。此软件包可能与您的项目不完全兼容


除了上面的例外,我升级了其中的大多数,并且我能够同时运行和调试两个启动项目,而不会出错。我猜其中一个软件包可能有冲突

这可能会有帮助:谢谢@JohnB,但我相信link会处理单元测试项目主方法与生产项目主方法冲突时生成的错误。在这种情况下,可以禁止生成测试项目主方法。在我的例子中,我希望并且需要两个项目都有一个启动的主方法。我的解决方案不能包含抑制我的一个项目。一个C#程序(不是解决方案)只能有一个程序。Main()。Main是程序启动时运行的第一个方法,因此编译器需要知道哪一个是真正的方法,如果有两个,则无法知道。感谢@DalmTo的注释,但我的两个启动项目(不是解决方案)都只有一个
program.Main()
所以它们都应该能够运行。@Ivan您收到的错误消息与此相矛盾。我建议你再检查一下。