在.Net xUnit项目中,当我运行测试时,由于我引用了其他项目,因此会收到“程序不包含静态'Main'”错误 错误消息我尝试过但没有奏效的东西

问题描述

我正在一个项目上,此时出现错误。如果在名为ECommercial.Core的xunit测试项目中添加对其他项目的引用,则会出现入口错误。没有循环引用或其他内容。在其他问题上,人们会错误地拥有一种以上的主要方法,但对我而言,错误在于存在任何一种主要方法。而且,如果我从测试项目中删除引用,则有任何问题。测试方法为空,没有任何东西会在方法内部引起错误。这是错误消息。

错误消息

-----在类“ ECommercial.DataAccess.Tests.UnitTest1”中运行测试----- 对于.NET Microsoft(R)Build Engine版本16.7.0 + 7fb82e5b2

CSC:错误CS5001:程序不包含适用于入口点的静态“ Main”方法>> [c:\ Users \ nihaSWin \ Desktop \ ECommercial \ ECommercial.Core \ ECommercial.Core.csproj]

构建失败

CSC:错误CS5001:程序不包含适用于入口点的静态“ Main”方法 [c:\ Users \ nihaSWin \ Desktop \ ECommercial \ ECommercial.Core \ ECommercial.Core.csproj] 0警告 1个错误

运行时间00:00:00.68

我该如何解决? 我必须添加其他项目来对其进行测试。

我尝试过但没有奏效的东西

  1. 我试图添加与Core项目相同的依赖项
  2. 将SDK版本升级到4.5.2
  3. false 属性添加到属性组
  4. 重新生成整个项目

test项目文件夹的名称为ECommercial.DataAccess.Tests,并且其中仅包含UnitTest1.cs项目。文件代码

using Xunit;
namespace ECommercial.DataAccess.Tests
{
public class UnitTest1
{

    [Fact]
    public void Get_Product_From_Table()
    {

    }
    [Fact]
    public void Get_Product_List_From_Table()
    {

    }
}
}

在引用的Ecommercial.Core文件夹中,只有IEntity空接口和NHibernate Entity Repository文件。这是文件代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using ECommercial.Core.DataAccess.NHibernate.Helpers;
using ECommercial.Core.Entities;

namespace ECommercial.Core.DataAccess.NHibernate
{
    public class NHibernateIEntityRepository<TEntity>:IEntityRepository<TEntity> 
        where TEntity:class,IEntity,new()
    {
        private NHibernateHelper _nHibernateHelper;

        public NHibernateIEntityRepository(NHibernateHelper nHibernateHelper)
        {
            _nHibernateHelper = nHibernateHelper;
        }

        public TEntity Add(TEntity entity)
        {
            using (var session=_nHibernateHelper.openSession()){
                session.Save(entity);
                return entity;
            }
        }

        public void Delete(TEntity entity)
        {
            using (var session=_nHibernateHelper.openSession()){
                session.Delete(entity);
            }
        }

        public TEntity Get(Expression<Func<TEntity,bool>> filter)
        {
            using (var session=_nHibernateHelper.openSession()){
                TEntity result = session.Query<TEntity>().SingleOrDefault(filter);
                return result;
            }
        }

        public List<TEntity> GetList(Expression<Func<TEntity,bool>> filter = null)
        {
            using (var session=_nHibernateHelper.openSession()){
                if(filter==null)
                    return session.Query<TEntity>().ToList();
                List<TEntity> result = session.Query<TEntity>().Where(filter).ToList();
                return result;
            }
        }

        public TEntity Update(TEntity entity)
        {
            using (var session=_nHibernateHelper.openSession()){
                session.Update(entity);
                return entity;
            }
        }
    }
}

核心项目csproj文件

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="NHibernate" Version="5.3.3"/> 
  </ItemGroup>
</Project>

测试项目csproj文件

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>

    <IsPackable>false</IsPackable>
    
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
    <PackageReference Include="xunit" Version="2.4.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
    <PackageReference Include="coverlet.collector" Version="1.2.0" />
  </ItemGroup>
  <ItemGroup>
  <ProjectReference Include="../ECommercial.Core/ECommercial.Core.csproj" />
  </ItemGroup>
</Project>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)