Я создал 2 проекта:
Библиотека классов с файлом Views\other.html, установленным в качестве встроенного ресурса.
Консольное приложение с настроенным самостоятельным размещением 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.
Что мне здесь не хватает?