OwinHost.exe não funciona para projeto de biblioteca de classes
Pergunta
Criei um novo projeto de biblioteca de classes com a seguinte classe de inicialização:
public class Startup
{
public void Configure(IAppBuilder app)
{
app.Run(ctx =>
{
ctx.Response.StatusCode = 200;
ctx.Response.ContentType = "text/plain";
return ctx.Response.WriteAsync("Hello from Owin");
});
}
}
Tenho os seguintes pacotes instalados:
<packages>
<package id="Microsoft.Owin" version="2.1.0" targetFramework="net45" />
<package id="Microsoft.Owin.Host.HttpListener" version="2.1.0" targetFramework="net45" />
<package id="Owin" version="1.0" targetFramework="net45" />
<package id="OwinHost" version="2.1.0" targetFramework="net45" />
</packages>
Quando tento correr owinhost.exe
de /bin/debug
Estou tendo o erro a seguir:
Error: System.EntryPointNotFoundException
The following errors occurred while attempting to load the app.
- No assembly found containing an OwinStartupAttribute.
- No assembly found containing a Startup or [AssemblyName].Startup class.
Preciso fazer mais alguma coisa para que o OwinHost.exe funcione com um projeto de biblioteca de classes (tive o mesmo problema com um aplicativo de console).
Solução
Se você executar o OwinHost.exe sem parâmetros, o nome do método precisará ser Configuration
, não Configure
.
Além disso, execute owinhost.exe
sob o caminho raiz (também conhecido como {projectDir}) e envie as compilações para /bin, não /bin/debug.Claro, estes são configuráveis através de switches para OwinHost.exe
mas é disso que ele precisa se você quiser executá-lo sem quaisquer opções.
Uma explicação mais detalhada está disponível aqui: Detecção de classe de inicialização OWIN e aqui: A boa e velha experiência F5 com OwinHost.exe no Visual Studio 2013