web-dev-qa-db-ja.com

タイプ 'IEnumerable <>'は、参照されていないアセンブリで定義されています

MVC 5アプリケーションX.PagedList.Mvcに次のnugetパッケージを追加しました

結果をコントローラー/ビューに次のように返します。

// Repo
public IPagedList<Post> GetPagedPosts(int pageNumber, int pageSize)
{
   var posts = _context.Post
      .Include(x => x.Category)
      .Include(x => x.Type);

   // Return a paged list
   return posts.ToPagedList(pageNumber, pageSize);

}

// View model
public class PostViewModel
{
   public IPagedList<Post> Posts { get; set; }
   ...
}

// Controller method
public ActionResult Index(int? page)
{

    int pageNumber = page ?? 1;
    int pagesize = 5;

    var posts = _PostRepository.GetPagedPosts(pageNumber, pagesize);

    var viewModel = new PostViewModel
    {
        Posts = posts,
        ...
    };

    return View(viewModel);
}

// View
@model MyApp.ViewModels.PostViewModel
@using X.PagedList.Mvc;
@using X.PagedList;

<p>Page @(Model.Posts.PageCount < Model.Posts.PageNumber ? 0 : Model.Posts.PageNumber) of @Model.Posts.PageCount </p>

しかし、私の見解では、次のエラーThe type 'IEnumerable<>' is defined in an Assembly that is not referenced. System.Runtime...

アプリケーションにproject.jsonファイルがないので、このエラーは何ですか?

21
adam78

Web.configファイルに次の行があることを確認してください。

<compilation debug="true" targetFramework="4.6.1"> //don't need to change THIS line, just the content of this section
  <assemblies>
    <add Assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <add Assembly="System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </assemblies>
</compilation>
22
lucacelenza

私は回答するのが遅すぎるのを知っていますが、このエラーが発生したばかりの人のために、エラーの後半がWeb構成ファイルのアセンブリセクションにネット標準のアセンブリ参照を追加しているのと同じように解決しましたそして次のように:

<configuration>
  ...
  <system.web>
    <compilation debug="true" targetFramework="4.6.1">
      <assemblies>
        <add Assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"/>
      </assemblies>
    </compilation>
  </system.web>
      ...
</configuration>
5
mohaa8844