1

ソリューションを VS2010/MVC3/.Net 4 から VS2012/MVC4/.Net 4.5 にアップグレード中です。ソリューションは VS2012 のプロジェクト移行ツールを使用してアップグレードされており、このガイドに従って MVC3 を 4 にアップグレードしました。

現時点では、Razor が問題を引き起こしています。構文の強調表示は、レイアウト ページ以外には表示されず、ビュー内を移動しようとすると、次のダイアログが表示されます。

バックグラウンド操作が完了するのを待っています。このダイアログは、操作が完了すると閉じます。

または、Visual Studio アクティビティ ログ (C:\Users{User}\AppData\Roaming\Microsoft\VisualStudio\11.0\ActivityLog.xml) を確認するようにというエラーが表示され、次のエラーが発生しました。

System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。Microsoft.VisualStudio.Web.HTML.Implementation.Projection.GrowingSpanTracker.EnsureNoOverlap() で Microsoft.VisualStudio.Web.HTML.Implementation.Projection.GrowingSpanTracker.EnsureTrackingPoints() で Microsoft.VisualStudio.Web.HTML.Implementation.Projection.GrowingSpanTracker .OnTextBufferChanged(オブジェクト送信者、TextContentChangedEventArgs e) Microsoft.VisualStudio.Text.Utilities.GuardedOperations.RaiseEvent[TArgs](オブジェクト送信者、EventHandler`1 eventHandlers、TArgs args)

ログのソース列には、「エディターまたはエディター拡張機能」からのものであることが示されています。私はここでバニラ VS2012 を実行しています。ファースト パーティのもの (Microsoft Web 開発者ツール、NuGet パッケージ マネージャー、および Visual Studio Extensions for Windows Library for JavaScript) 以外の拡張機能はありません。

編集:いくつかの追加の詳細。新しいソリューションと MVC4 プロジェクトを作成する場合は、次の行を追加します。

@RenderSection("title", false)

レイアウトに追加し、ビューでセクションを定義しようとします:

@section title{Stuff}

中括弧内に「Stuff」と入力し始めた瞬間、同じエラー/動作が発生します。

4

1 に答える 1

2

Razor で何が変更されたかにより、ブレースがもう少し敏感になりました。レイアウトで次のように定義されたセクションがある場合:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>@RenderSection("title", false) - MyApp</title>
        <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <meta name="viewport" content="width=device-width" />
        @Styles.Render("~/Content/css")
        @Scripts.Render("~/bundles/modernizr")
        @RenderSection("css",false)
    </head>
    ...

次に、レイアウトを使用するビューで、そのセクションを次のように使用してみてください(必ず実際に入力してください。コピー/貼り付けしないでください)。

@model MyApp.Web.Models.HomeIndexModel
@section title {Lovely Title}

Razor はフィットをスローし、Visual Studio アクティビティ ログにエラーをスローします。強調表示とほとんどの Intellisense サポートも機能しません。いくつかの試行錯誤の後、基本的に中括弧を同じ行に残さない限り、うまく機能することがわかりました。したがって、次のように記述します。

@model MyApp.Web.Models.HomeIndexModel
@section title {
    Lovely Title
}

そして、それはうまくいきます。

于 2012-11-06T00:02:41.513 に答える