2014-06-12 63 views
4

我正在爲Nop Commerce寫一個插件,而且我的HTML助手給了我intellisense錯誤。我得到紅色線條強調它們與錯誤:Razor HTML助手在Nop Commerce插件中給intellisense錯誤

功能「擴展方法」不能使用,因爲它是不ISO-2 C#語言規範

功能「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()) 
{ 
    <fieldset> 
     <legend><strong>Hello World Configuration</strong></legend> 
     <table class="adminContent"> 
      <tr> 
       <td class="adminTitle"> 
       @Html.OverrideStoreCheckboxFor(model => model.Greeting_OverrideForStore, model => model.Greeting, Model.ActiveStoreScopeConfiguration) 
        @Html.NopLabelFor(model => model.Greeting): 
       </td> 
       <td class="adminData"> 
        @Html.EditorFor(model => model.Greeting) 
        @Html.ValidationMessageFor(model => model.Greeting) 
       </td> 
      </tr> 
      <tr> 
       <td class="adminTitle"> 
        @Html.OverrideStoreCheckboxFor(model => model.Name_OverrideForStore, model => model.Name, Model.ActiveStoreScopeConfiguration) 
        @Html.NopLabelFor(model => model.Name): 
       </td> 
       <td class="adminData"> 
        @Html.EditorFor(model => model.Name) 
        @Html.ValidationMessageFor(model => model.Name) 
       </td> 
      </tr> 
     </table> 
    </fieldset> 
    <br /> 
    <table class="adminContent"> 
     <tr> 
      <td colspan="2"> 
       <input type="submit" name="save" class="k-button" value="@T("Admin.Common.Save")" /> 
      </td> 
     </tr> 
    </table> 
} 

我的屏幕看起來像:

enter image description here

我已經找了答案的小時,但還沒有找到一個實際工作。該項目是一個代碼庫,並且與解決方案的其餘部分一樣在ASP.NET 4.5.1上。我建立時沒有錯誤。我是否缺少參考或使用說明?我不確定發生了什麼事。

回答

3

我能得到這個工作(使用VS2013)的唯一方法是對類庫項目轉換爲MVC項目:

  1. <PropertyGroup>,添加< ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}< /ProjectTypeGuids>
  2. 在底部添加其他進口:< Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

    當然,刪除<標記>中的額外空間,它沒有發佈正確沒有它們。有這個發行與微軟在這裏當前的錯誤:https://connect.microsoft.com/VisualStudio/feedback/details/912301/intellisense-for-razor-in-class-libraries-not-working

+0

我會試試這個。謝謝! – David

+0

分步說明:http://alexwolfthoughts.com/fixing-broken-nopcommerce-razor-intellisense – panzerblitzer

+0

上帝保佑你!你節省了我的時間 – DeveloperX

2

有關修改從類庫項目的MVC項目,我作爲VS2013更新的4

沒有工作,以上回答下面做工作,但是:

  1. 對於所有的配置,設置構建,輸出,輸出路徑bin\..\..\Presentation\Nop.Web\Plugins\PLUGINNAMESPACE.PLUGINNAME\如nopCommerce文檔中所述。

    在.csproj的文件,它應該是這樣的:

    <OutputPath>bin\</OutputPath> 
    
  2. 生成事件,後期生成命令行:複製到目錄nopCommerce希望。

    (robocopy $(ProjectDir)$(OutDir) $(ProjectDir)..\..\Presentation\Nop.Web\Plugins\PLUGINNAMESPACE.PLUGINNAME\ /MIR) ^& IF %ERRORLEVEL% LEQ 1 exit 0 
    

    在.csproj的文件,它應該是這樣的:

    <PropertyGroup> 
        <PostBuildEvent>(robocopy $(ProjectDir)$(OutDir) $(ProjectDir)..\..\Presentation\Nop.Web\Plugins\PLUGINNAMESPACE.PLUGINNAME\ /MIR) ^&amp; IF %25ERRORLEVEL%25 LEQ 1 exit 0</PostBuildEvent> 
    </PropertyGroup> 
    
  3. 設置生成事件,運行生成後事件:爲 「Always」。

    在。文件的csproj它應該是這樣的:

    <PropertyGroup> 
        <RunPostBuildEvent>Always</RunPostBuildEvent> 
    </PropertyGroup> 
    
  4. 確保在您的插件項目的每一個DLL文件參考值設爲複製本地。對於像Nop.Core,Nop.Data等ProjectReference條目,這不是必需的。同樣,這是而不是他們告訴您在nopCommerce文檔中執行的操作,但它需要使Intellisense正常工作。

    在.csproj的文件,它應該看起來像:

    <Reference Include="System.Web"> 
        <Private>True</Private> 
    </Reference> 
    
    (repeat for all DLL file references)... 
    
  5. 關閉並重新打開解決方案,重建插件項目,現在打開任何剃刀.cshtml文件。 Intellisense將按預期工作,不需要任何未來黑客來維護它。

+0

工作正常,不僅爲nopcommerce。此解決方案也很有意義。最大的缺點是它在目標中創建的dll混亂。 – Leri

+0

非常感謝你的回答!這一直在困擾着我很長一段時間,你的解決方案取得了訣竅。我真的希望我能更多地回答這個問題。 –

0

該項目需要知道它的插件開發

1:關閉您的解決方案 2:使用任何編輯器打開你的* .csproj的文件 3:添加以下附近的項目收尾結束標籤

<Import Project="$(SolutionDir)\FixRazorIntellisense.targets" Condition="'$(Configuration)' == 'PluginDev'" /> 

4:重新加載溶液/項目