3
respostas

Command line arguments "args"

Olá!

Estou com uma aplicação Windows ".exe" e temos a necessidade de executar com linha de comando passando parâmetros para executar determinada ação.

Não sei se alguém já precisou pegar o parâmetro em outra classe a não ser a "Main".

 public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService<Worker>();
                });
    }

Logo após é direcionado para outra classe que executa de forma async e nessa hora não consigo pegar o args

Se puderem dar alguma dica, desde já obrigado.

3 respostas

Alberto,

Desculpe eu não saber a resposta, mas tentando entender e procurando na internet eu achei este código abaixo que talvez te ajude:

===================================

IHostBuilder does not contain a definition for ConfigureWebHostDefaults

using Microsoft.AspNetCore.Hosting; //<-- Here it is
using Microsoft.Extensions.Hosting;

namespace MyApp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateWebHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}

https://stackoverflow.com/questions/58097568/ihostbuilder-does-not-contain-a-definition-for-configurewebhostdefaults

===================================

VEJA TAMBÉM:

===================================

Main() and command-line arguments

Article

09/15/2021

9 minutes to read

https://docs.microsoft.com/en-US/dotnet/csharp/fundamentals/program-structure/main-command-line

===================================

IHostBuilder Interface

Uma abstração de inicialização do programa.

https://docs.microsoft.com/pt-br/dotnet/api/microsoft.extensions.hosting.ihostbuilder?view=dotnet-plat-ext-6.0

===================================

Comparing WebApplicationBuilder to the Generic Host

Exploring .NET 6 - Part 2

https://andrewlock.net/exploring-dotnet-6-part-2-comparing-webapplicationbuilder-to-the-generic-host/

===================================

[]'s,

Fabio I.

Obrigado Fabio pelo retorno.

Infelizmente não deu certo, meu problema é pegar o args em outra classe após passar pelo main e executar o app.

Aqui, uso o CreateHostBuilder e recebo o args, mas preciso repassar essa informação para a classe Worker e tratar direto lá.

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService<**Worker**>();
                });

Alberto,

Você também pode postar sua dúvida neste três fóruns. Eu recomendo:

======================================

MSDN

https://social.msdn.microsoft.com/Forums/pt-BR/home

======================================

StackOverflow (cuidado com a forma que escreve, tem várias "regras" para postar)

https://pt.stackoverflow.com/users/117866/fabioin

======================================

VBMania (a inscrição é de graça)

https://www.vbmania.com.br/index.php

======================================

[]'s,

Fabio I.