Razor HTML Helpers在Nop Commerce插件中提供智能感知错误
我正在为Nop Commerce编写一个插件,我的HTML助手正在给我智能感知错误。 我得到红线强调它们和错误:
不能使用function’扩展方法’,因为它不是ISO-2 C#语言规范的一部分
无法使用function’lambda表达式’,因为它不是ISO-2 C#语言规范的一部分
这是我的代码:
@{ Layout = ""; } @model Nop.Plugin.Widgets.HelloWorld.Models.ConfigurationModel @using Nop.Web.Framework; @Html.Action("StoreScopeConfiguration", "Setting", new { area = "Admin" }) @using (Html.BeginForm()) {
}
我的屏幕看起来像:
我已经找了几个小时的答案,但没有找到一个真正有用的。 该项目是一个代码库,与其他解决方案一样,在ASP.NET 4.5.1上。 我建立时没有错误。 我错过了引用或使用声明吗? 我不确定发生了什么。
我能够使用VS2013的唯一方法是将类库项目转换为MVC项目:
- 在
,添加< ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}< /ProjectTypeGuids>
-
在底部添加另一个导入:
< Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
当然删除了
中的额外空间,没有它们就没有正确发布。 这里有与Microsoft发布的当前错误: https : //connect.microsoft.com/VisualStudio/feedback/details/912301/intellisense-for-razor-in-class-libraries-not-working
从VS2013 Update 4开始,上面关于将项目从类库修改为MVC项目的答案对我不起作用。
但是,以下方法有效:
-
对于所有配置,将构建,输出,输出路径设置为
bin\
而不是..\..\Presentation\Nop.Web\Plugins\PLUGINNAMESPACE.PLUGINNAME\
如nopCommerce文档中所述。在.csproj文件中,它应该如下所示:
bin\ -
设置构建事件,构建后命令行:复制到nopCommerce想要的目录。
(robocopy $(ProjectDir)$(OutDir) $(ProjectDir)..\..\Presentation\Nop.Web\Plugins\PLUGINNAMESPACE.PLUGINNAME\ /MIR) ^& IF %ERRORLEVEL% LEQ 1 exit 0
在.csproj文件中,它应该如下所示:
(robocopy $(ProjectDir)$(OutDir) $(ProjectDir)..\..\Presentation\Nop.Web\Plugins\PLUGINNAMESPACE.PLUGINNAME\ /MIR) ^& IF %25ERRORLEVEL%25 LEQ 1 exit 0 -
设置构建事件,运行构建后事件:到“始终”。
在.csproj文件中,它应该如下所示:
Always -
确保插件项目中的每个DLL文件引用都设置为“ 复制本地” 。 对于像Nop.Core,Nop.Data等项目参考条目来说,这不是必需的。再次,这不是他们告诉你在nopCommerce文档中做的,但它需要使Intellisense工作。
在.csproj文件中,它应该如下所示:
True -
关闭并重新打开解决方案,重建插件项目,然后打开任何剃刀.cshtml文件。 Intellisense将按预期工作,并且不需要任何未来的黑客来维护它。
该项目需要了解它在插件开发中的作用
1:关闭解决方案2:使用任何编辑器打开* .csproj文件3:在项目结束标记的末尾附近添加以下内容
4:重新加载解决方案/项目