引用丢失。确保项目引用的是“ Microsoft.NET.Sdk.web”,并且PreserveCompilationContext属性未设置为false

时间:2018-07-15 19:02:16

标签: c# asp.net-core asp.net-core-mvc entity-framework-core

尝试运行asp.net核心项目时遇到此错误。

缺少一个或多个编译参考。确保项目引用的是“ Microsoft.NET.Sdk.web”,并且PreserveCompilationContext属性未设置为false

enter image description here

EfDemo.csproj

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

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.1" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>

</Project>

HomeController.cs

namespace EfDemo.Controllers
{
    public class HomeController : Controller
    {
        async public Task<IActionResult> Index()
        {
            using (var context = new EFCoreWebDemoContext())
            {
                var model = await context.Authors.AsNoTracking().ToListAsync();
                return View(model);
            }
        }
    }
}

EFCoreWebDemoContext.cs

public class EFCoreWebDemoContext : DbContext
{
    public DbSet<Book> Books { get; set; }
    public DbSet<Author> Authors { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
       optionsBuilder.UseSqlServer(@"connection string");
    }
 }

Index.cshtml

@{
    ViewData["Title"] = "Home Page";
}

<div>
    <span>Home Page</span>
</div>

_Layout.cshtml

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - EfDemo</title>
</head>
<body>
    @RenderBody()

    @RenderSection("Scripts", required: false)
</body>
</html>

_ViewImports.cshtml

@using EfDemo
@using EfDemo.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Microsoft.NET.Sdk

添加了断点并在执行应用程序时进行了检查,它在返回View(model)时崩溃;在 HomeController.cs 文件

尝试修改下面显示的 HomeController.cs ,但仍然存在相同的问题。

public IActionResult Index()
{
    return View();
}

6 个答案:

答案 0 :(得分:3)

Reference Versions是冲突的。

我建议您尝试如下修改csproj

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.3" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.3" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.4" />
  </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>
</Project>

答案 1 :(得分:1)

使用以下软件包更新了 csproj 文件,并将Visual Studio更新到了15.7.5,可以正常工作

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

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.1" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" />
  </ItemGroup>

</Project>

答案 2 :(得分:0)

更新Visual Studio之后,我遇到了完全相同的错误。为了解决这个问题,我从以下页面安装了最新的SDK:https://dotnet.microsoft.com/download。然后将我的项目切换到最新的.net核心(在我的情况下是2.2)。在VS中,然后清理解决方案并重新生成它。然后使用“工具->> Nuget程序包管理器->>管理nuget程序包来更新我的参考。”

答案 3 :(得分:0)

我有同样的问题。在nuget中卸载软件包并重新安装后,我能够解决以下问题。之后,我编译了该项目,然后又重新工作了。

答案 4 :(得分:0)

我在服务器上发布的已部署代码中也遇到了同样的问题,即使本地开发计算机上也没有问题。

我通过用服务器上的更新文件替换旧的 MyWebProject.deps.json 文件来解决此问题,希望这对您有所帮助。

答案 5 :(得分:0)

就我而言,它是这个包,“Microsoft.VisualStudio.Web.CodeGeneration.Design” 这造成了问题。我删除后,它运行良好。