"Ссылка на объект не установлена ​​для объекта" при запуске с кассеты

Я пытаюсь начать с кассеты через NuGet. У меня проблемы с этим в моем приложении, поэтому я откатился и попробовал его в новом пустом веб-приложении ASP.NET MVC 3.

Однако проблема сохраняется. Следуя странице документации "Простота в использовании", я просто не могу заставить ее работать. Вот исключение и немного стека:

"Object reference not set to an instance of an object."

[NullReferenceException: Object reference not set to an instance of an object.]
   Cassette.CassetteApplicationContainer.get_Application() +6
   Cassette.Views.Bundles.Reference(String assetPathOrBundlePathOrUrl, String pageLocation) +14
   ASP._Page_Views_Shared__Layout_cshtml.Execute() in d:\Dave\Documents\Visual Studio 2010\Projects\CasetteTest\Views\Shared\_Layout.cshtml:2
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +207

Я просто следовал за двумя шагами в документации, и это - то, что я получаю. Что я делаю неправильно?

Это то, что мой _Layout.cshtml файл выглядит так:

@{
    Bundles.Reference("Scripts/jquery-1.5.1.min.js");
    Bundles.Reference("Scripts/modernizr-1.7.min.js");    
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
</head>

<body>
    @RenderBody()
    @Bundles.RenderScripts();
</body>
</html>

2 ответа

Решение

Я понял.

Я включил пакет Cassette.Views, который не создает по умолчанию CassetteConfiguration.cs файл, который связывает каждый скрипт и каждый файл CSS в свой собственный комплект. Вот что вызвало исключение NullReferenceException. Чтобы заставить его работать, вам нужно вместо этого добавить пакет Cassette.Web. В мою защиту, описания пакетов в галерее NuGet не ясны, и один из них полагает, что пакет Views необходим для MVC, а другой - для WebForms.

Следующая проблема заключалась в том, что я ссылался на минимизированные скрипты ".min.js", которые не подобраны компоновщиком (кажется).

Невозможно воспроизвести проблему.

4 простых шага позволили мне получить полностью работающий прототип менее чем за 30 секунд:

  1. Создайте новый проект ASP.NET MVC 3 в Visual Studio
  2. Install-Package Cassette.Web
  3. Index.cshtml:

    @using Cassette.Web
    @{
        Bundles.Reference("~/Scripts/jquery-1.5.1.js");
        Bundles.Reference("~/Scripts/jquery-ui-1.8.11.js");
        Bundles.Reference("~/Content/site.css");
        Layout = null;
    }
    <!DOCTYPE html>
    <html>
    <head>
        <title>Web App</title>
        @Bundles.RenderStylesheets()
    </head>
    <body>
        <div>Hello World</div>
        @Bundles.RenderScripts()
    </body>
    </html>
    
  4. Нажмите Ctrl+F5, чтобы запустить проект
Другие вопросы по тегам