<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
在 VS 2010 中打开并编译我的 MVC4 项目后出现以下错误。
CS1705: Assembly 'SDEM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly '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" />
有人知道我应该如何解决这个版本问题吗?
这表明您在项目中引用的程序集的版本 (4.0.0.1) 与您在 web.config(4.0.0.0) 中的不同。
请检查 System.Web.Mvc 引用的程序集是否与 web.config 中所写的相同。
如果没有,则添加对相应程序集的引用。
右键点击
参考 -> 添加参考 -> ...
为所有引用 System.Web.Mvc dll
的项目安装 Nuget 包 Microsoft.AspNet.Mvc
示例: 安装包 Microsoft.AspNet.Mvc
解法:
不要直接从 cshtml 代码引用 Nuget 包组件。相反,编写一个适配器从具有相同签名的自定义扩展方法调用静态 HtmlHelper 扩展方法。
这种方法有两个优点:
- 首先,它会自动抑制CS1702。
- 其次也是最重要的是,当您更改使用的 NuGet 包时,编译器会通知您必要的 link 修复(可能仅包括更改 cs 代码开头的 using 命令),同时如果直接从 cshtml 代码使用 NuGet 组件引用,将出现 run-time 问题。
我刚刚验证了从 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 class.
中进行更改
在 VS 2010 中打开并编译我的 MVC4 项目后出现以下错误。
CS1705: Assembly 'SDEM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly '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" />
有人知道我应该如何解决这个版本问题吗?
这表明您在项目中引用的程序集的版本 (4.0.0.1) 与您在 web.config(4.0.0.0) 中的不同。
请检查 System.Web.Mvc 引用的程序集是否与 web.config 中所写的相同。
如果没有,则添加对相应程序集的引用。 右键点击 参考 -> 添加参考 -> ...
为所有引用 System.Web.Mvc dll
的项目安装 Nuget 包 Microsoft.AspNet.Mvc示例: 安装包 Microsoft.AspNet.Mvc
解法:
不要直接从 cshtml 代码引用 Nuget 包组件。相反,编写一个适配器从具有相同签名的自定义扩展方法调用静态 HtmlHelper 扩展方法。
这种方法有两个优点:
- 首先,它会自动抑制CS1702。
- 其次也是最重要的是,当您更改使用的 NuGet 包时,编译器会通知您必要的 link 修复(可能仅包括更改 cs 代码开头的 using 命令),同时如果直接从 cshtml 代码使用 NuGet 组件引用,将出现 run-time 问题。
我刚刚验证了从 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 class.
中进行更改