Ich habe einen Selbst Hosting-Nancy-Instanz und der Inhalt in der Assembly eingebettet (einige sshtml Ansichten und ein paar CSS-Dateien)Embedded statische Inhalte in Selbst Hosting Nancy Instanz
Dies ist der Inhalt meiner DefaultNancyBootstrapper
public class CustomBootstrapper : DefaultNancyBootstrapper
{
private byte[] favicon;
protected override byte[] FavIcon
{
get { return this.favicon ?? (this.favicon = LoadFavIcon()); }
}
private byte[] LoadFavIcon()
{
using (var resourceStream = GetType().Assembly.GetManifestResourceStream("FrontEnd.Webinterface.Views.Content.Images.Icons.FavIcon.ico"))
{
var memoryStream = new MemoryStream();
resourceStream.CopyTo(memoryStream);
return memoryStream.GetBuffer();
}
}
protected override NancyInternalConfiguration InternalConfiguration
{
get
{
return NancyInternalConfiguration.WithOverrides(OnConfigurationBuilder);
}
}
void OnConfigurationBuilder(NancyInternalConfiguration x)
{
x.ViewLocationProvider = typeof(ResourceViewLocationProvider);
}
protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
Assembly assembly = Assembly.GetExecutingAssembly();
string[] assemblyNames = assembly.GetManifestResourceNames();
base.ConfigureApplicationContainer(container);
ResourceViewLocationProvider.RootNamespaces.Add(
Assembly.GetAssembly(typeof(MainModule)), "FrontEnd.Webinterface.Views");
}
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
{
base.ApplicationStartup(container, pipelines);
CookieBasedSessions.Enable(pipelines);
}
protected override IEnumerable<ModuleRegistration> Modules
{
get
{
return
AppDomainAssemblyTypeScanner
.TypesOf<INancyModule>(ScanMode.All)
.NotOfType<DiagnosticModule>()
.Select(t => new ModuleRegistration(t))
.ToArray();
}
}
}
Ich bin völlig stecken, wie meine statischen CSS-Dateien einbetten - Kann mir jemand helfen?
EDIT:
Lösung ist ganz einfach, wenn dies in Ihrer Nancy Assembly ist https://github.com/NancyFx/Nancy/blob/master/src/Nancy.Embedded/Conventions/EmbeddedStaticContentConventionBuilder.cs
protected override void ConfigureConventions(NancyConventions nancyConventions)
{
Assembly Assembly = System.Reflection.Assembly.GetExecutingAssembly();
nancyConventions.StaticContentsConventions.Add(EmbeddedStaticContentConventionBuilder.AddDirectory("Static", Assembly, @"Webinterface/Static"));
nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("Views", @"Webinterface/Views"));
}
* und eingebettet der Inhalt in der Montage * - bitte erklären? Diese statischen Dateien werden normalerweise nicht in Assemblys gebündelt. Können Sie Ihre Lösungsstruktur auch etwas näher erläutern? Danke –
Ich habe eine Lösung, die ein paar Windows-Formulare und das Nancy-Webinterface als Self-Hosting-Instanz enthält. Ich möchte eine Lösung haben, die völlig out-of-the-box funktioniert, die alle *, DLL, Nancy Ansichten, Bilder, CSS in dieser eine .exe-Datei enthält, die ich verteilen werde. Also ja, ich bette auch diese statischen Dateien wie CSS und Bilder ein. – Tom
Warum willst du das? Warum ist es wichtig, dass alles eine einzige EXE ist? –