包恢复失败。回滚 .Net Core Web 中的包更改 API
Package restore failed. Rolling back package changes in .Net Core Web API
我正在处理 .Net Core 3.1 Web API 项目。我想添加一个 API Controller using Entity Framework
。但它不断产生错误。它说,“所选代码生成器出现错误 运行:包恢复失败。回滚包更改。”
我也安装了 3.1 版下的 NuGet 包。我尝试清除所有 NuGet 缓存,但没有用。
我怎样才能解决这个问题?请帮忙!
对比项目中的代码和配置,项目似乎没有错误,于是OP尝试新建一个.net 5项目,这次一切如常。也许它可以作为类似问题的提示,即更改项目框架的版本。
============================================= ======
Google 错误消息我真的发现高票答案要求清除 Nuget 缓存,但正如你所说,它不起作用。恐怕我需要你的帮助,你检查一下你和我的区别在哪里,因为它在我身边有效。顺便说一句,使用 v3.1.18 Microsoft.EntityFrameworkCore.SqlServer
也对我有用,所以我猜这可能是您的 visual studio 客户端造成的。您可以重新安装客户端。
我新创建了一个asp.net core 3.1 api项目,并安装了ef:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.9" />
</ItemGroup>
</Project>
并且在启动时,我修改了 ConfigureService 方法:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddDbContext<LocaldbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("Localtest")));
}
这是一个测试控制器:
using WebApplication1.Data;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;
using System.Threading.Tasks;
namespace WebApplication1.Controllers
{
public class LocaldbController : Controller
{
private readonly LocaldbContext _context;
public LocaldbController(LocaldbContext context)
{
_context = context;
}
[HttpGet("/getUser")]
public async Task<IActionResult> Index(string searchString)
{
var users = from m in _context.user
select m;
if (!String.IsNullOrEmpty(searchString))
{
users = users.Where(s => s.user_name.Contains(searchString));
}
return Ok(await users.ToListAsync());
}
}
}
和 Dbcontext 文件:
using WebApplication1.Models;
using Microsoft.EntityFrameworkCore;
namespace WebApplication1.Data
{
public class LocaldbContext: DbContext
{
public LocaldbContext(DbContextOptions<LocaldbContext> options) : base(options){}
public DbSet<LocalMallUser> user { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<LocalMallUser>().ToTable("MallUser");
}
}
}
我正在处理 .Net Core 3.1 Web API 项目。我想添加一个 API Controller using Entity Framework
。但它不断产生错误。它说,“所选代码生成器出现错误 运行:包恢复失败。回滚包更改。”
我也安装了 3.1 版下的 NuGet 包。我尝试清除所有 NuGet 缓存,但没有用。 我怎样才能解决这个问题?请帮忙!
对比项目中的代码和配置,项目似乎没有错误,于是OP尝试新建一个.net 5项目,这次一切如常。也许它可以作为类似问题的提示,即更改项目框架的版本。
============================================= ======
Google 错误消息我真的发现高票答案要求清除 Nuget 缓存,但正如你所说,它不起作用。恐怕我需要你的帮助,你检查一下你和我的区别在哪里,因为它在我身边有效。顺便说一句,使用 v3.1.18 Microsoft.EntityFrameworkCore.SqlServer
也对我有用,所以我猜这可能是您的 visual studio 客户端造成的。您可以重新安装客户端。
我新创建了一个asp.net core 3.1 api项目,并安装了ef:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.9" />
</ItemGroup>
</Project>
并且在启动时,我修改了 ConfigureService 方法:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddDbContext<LocaldbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("Localtest")));
}
这是一个测试控制器:
using WebApplication1.Data;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;
using System.Threading.Tasks;
namespace WebApplication1.Controllers
{
public class LocaldbController : Controller
{
private readonly LocaldbContext _context;
public LocaldbController(LocaldbContext context)
{
_context = context;
}
[HttpGet("/getUser")]
public async Task<IActionResult> Index(string searchString)
{
var users = from m in _context.user
select m;
if (!String.IsNullOrEmpty(searchString))
{
users = users.Where(s => s.user_name.Contains(searchString));
}
return Ok(await users.ToListAsync());
}
}
}
和 Dbcontext 文件:
using WebApplication1.Models;
using Microsoft.EntityFrameworkCore;
namespace WebApplication1.Data
{
public class LocaldbContext: DbContext
{
public LocaldbContext(DbContextOptions<LocaldbContext> options) : base(options){}
public DbSet<LocalMallUser> user { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<LocalMallUser>().ToTable("MallUser");
}
}
}