首页 > 解决方案 > 类库,.NET 3.1 核心:错误 CS5001 程序不包含静态 Main 方法

问题描述

我意识到类似的问题有不同的答案,但是在我的情况下,我有一个 .net Core 3.1 项目,我的项目是一个类库,那么为什么编译器要求我有一个 Main 入口点?其他问题的答案基本上建议使用类库,但这似乎不适用于.net Core 3.1

在此处输入图像描述

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>Tutorials_UnitTest</RootNamespace>
<IsPackable>false</IsPackable>
<OutputType>Library</OutputType>
<GenerateProgramFile>false</GenerateProgramFile>
</PropertyGroup>

 <ItemGroup>
 <PackageReference Include="coverlet.collector" Version="3.1.0">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers ;buildtransitive</IncludeAssets>
 </PackageReference>
 <PackageReference Include="coverlet.msbuild" Version="3.1.0">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="NUnit" Version="3.12.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.16.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Tutorials\Tutorials.csproj" />
</ItemGroup>

</Project>

注意:我尝试过干净重建、重新启动 Visual Studio、删除所有 /bin、/obj 目录,但仍然失败。

标签: c#.net-core

解决方案


这是由单元测试框架包引起的:

<ItemGroup>
  <PackageReference Include="coverlet.collector" Version="1.3.0">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers ;buildtransitive</IncludeAssets>
  </PackageReference>
  <PackageReference Include="coverlet.msbuild" Version="2.9.0">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  </PackageReference>
  <PackageReference Include="NUnit" Version="3.12.0" />
  <PackageReference Include="NUnit3TestAdapter" Version="3.16.1" />
  <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
</ItemGroup>

具体来说,它"coverlet.collector"是导致问题的原因。

如果您的库不是单元测试库(看起来它不是),那么只需删除整个<ItemGroup>.

否则,您可以通过将以下内容添加到<PropertyGroup>项目文件的一部分来修复它:

<GenerateProgramFile>false</GenerateProgramFile>

推荐阅读