Нэнси — встроенные виды из другой сборки

Я создал 2 проекта:

  1. Библиотека классов с файлом Views\other.html, установленным в качестве встроенного ресурса.

  2. Консольное приложение с настроенным самостоятельным размещением Nancy, загрузчиком и модулем nancy, которое просто отвечает на запрос GET, возвращая представление с именем «other.html» — то, которое определено в другой сборке.

Конфигурация загрузчика:

protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{  
    base.ConfigureApplicationContainer(container);
    ResourceViewLocationProvider.RootNamespaces.Add(GetType().Assembly, "ConsoleApplication1.Views"); // (1)
    ResourceViewLocationProvider.RootNamespaces.Add(typeof(Class1).Assembly, "ClassLibrary1.Views");
}

protected override NancyInternalConfiguration InternalConfiguration
{
    get { return NancyInternalConfiguration.WithOverrides(OnConfigurationBuilder); }
}

private void OnConfigurationBuilder(NancyInternalConfiguration x)
{
    x.ViewLocationProvider = typeof(ResourceViewLocationProvider);
}

Приложение запускается правильно с этой конфигурацией, но не может вернуть «other.html», который определен как встроенный ресурс другой библиотеки.

Он работает нормально, когда я возвращаю представление, встроенное в основное консольное приложение.

Когда я удаляю строку, отмеченную как (1), приложение не запускается со следующей ошибкой:

Unable to resolve type: Nancy.ViewEngines.ViewEngineApplicationStartup
Only one view was found in assembly ConsoleApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, but no rootnamespace had been registered.

Что мне здесь не хватает?


person bodziec    schedule 14.04.2014    source источник


Ответы (1)


Проблема решена по адресу: https://groups.google.com/forum/#!topic/nancy-web-framework/9N4f6-Y4dNA

Похоже, что доступный в настоящее время пакет Nuget не содержит этого исправления !!!

Я декомпилировал пакет 0.22 nuget, и для меня этого изменения нет. Он есть на гитхабе.

person bodziec    schedule 14.04.2014