<add assembly =“System.Web.Mvc,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31BF3856AD364E35”> </add>

时间:2015-03-17 07:53:08

标签: asp.net-mvc asp.net-mvc-4

在VS 2010中打开并编译我的MVC4项目后,我收到以下错误。

  

CS1705:程序集'SDEM,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'使用'System.Web.Mvc,Version = 4.0.0.1,Culture = neutral,PublicKeyToken = 31bf3856ad364e35',其版本较高比引用的程序集'System.Web.Mvc,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'

在我的web.config中我有

    <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

任何人都知道我应该怎么做才能解决这个版本的问题?

3 个答案:

答案 0 :(得分:9)

它显示您在项目中引用的程序集具有与web.config(4.0.0.0)中不同的版本(4.0.0.1)。

请检查System.Web.Mvc的引用程序集是否与web.config中所写的相同。

如果没有,则添加对相应组件的引用。 右键点击 参考文献 - &gt;添加参考 - &gt; ...

答案 1 :(得分:8)

为引用System.Web.Mvc dll的所有项目安装Nuget包 Microsoft.AspNet.Mvc

示例:安装包Microsoft.AspNet.Mvc

答案 2 :(得分:0)

解决方案:

不要直接从cshtml代码中引用Nuget软件包组件。而是编写一个从您的具有相同签名的自定义扩展方法中调用静态HtmlHelper扩展方法的适配器。

此方法有两个优点:

  • 首先,它会自动抑制CS1702。
  • 其次,最重要的是,当您更改使用过的NuGet软件包时,编译器将通知您必要的链接修复(也许仅在更改cs代码开头时使用using命令),而如果使用NuGet组件引用直接从cshtml代码中,将出现运行时问题。

我刚刚验证了从PagedList / PagedList.MVC到X.PagedList / X.PagedList.MVC的迁移。

namespace MyMvcExtensions
{
    public static class MyHelperExtensions
    {
    ...
        public static HtmlString PagedListGoToPageForm(this HtmlHelper html, IPagedList list, string formAction)
        {
            return X.PagedList.Mvc.HtmlHelper.PagedListGoToPageForm(html, list, formAction);
        }
        public static HtmlString PagedListGoToPageForm(this HtmlHelper html, IPagedList list, string formAction, string inputFieldName)
        {
            return X.PagedList.Mvc.HtmlHelper.PagedListGoToPageForm(html, list, formAction, inputFieldName);
        }
        public static HtmlString PagedListGoToPageForm(this HtmlHelper html, IPagedList list, string formAction, X.PagedList.Mvc.Common.GoToFormRenderOptions options)
        {
            return X.PagedList.Mvc.HtmlHelper.PagedListGoToPageForm(html, list, formAction, options);
        }
        public static HtmlString PagedListPager(this System.Web.Mvc.HtmlHelper html, IPagedList list, Func<int, string> generatePageUrl)
        {
            return X.PagedList.Mvc.HtmlHelper.PagedListPager(html, list, generatePageUrl);
        }
        public static HtmlString PagedListPager(this HtmlHelper html, IPagedList list, Func<int, string> generatePageUrl, X.PagedList.Mvc.Common.PagedListRenderOptionsBase options)
        {
            return X.PagedList.Mvc.HtmlHelper.PagedListPager(html, list, generatePageUrl, options);
        }
    }
}

在您的cshtml代码中,使用@using MyMvcExtensions而不是@using X.PagedList.Mvc。

如果您要迁移到假设的Y.PagedList.MVC,则编译器将警告您必须在MyHelperExtensions类中进行更改。