Chaque fois que je dois créer une application du type console, c'est le même problème.
Alors, je publie la version que je vais utiliser sur toutes mes applications.
Effet, j'ai analysé plusieurs solutions, et détails techniques de chaque solution et j'ai fini pour choisir une solution publiée sur CodeProject.
Ma version de la solution est normalisée selon le standard du Reshaper, et il y a un *petit* changement de l'expression régulier.
using System;
namespace MyConsoleApplication
{
class Program
{
#region Private Static Methods
private static void HowToUse()
{
Console.WriteLine("--------------------");
Console.WriteLine("Syntax : ");
Console.WriteLine("");
Console.WriteLine("MyConsoleApplication /myparam1=value1 /myparamBool /mypar2 /myvalueX=C:\\temp\\");
Console.WriteLine("");
Console.WriteLine("--------------------");
}
static void Main(string[] args)
{
Arguments commandLine;
commandLine = new Arguments(args);
//commandLine line : /myparam1=TestValue1 /myparamBool
if (commandLine["myparam1"].HasValue)
{
Console.WriteLine(commandLine["myparam1"].Value);
}
Console.WriteLine(commandLine["myparamBool"].ValueBool ? "has parameter" : "no parameter");
ShowArguments(commandLine);
WaitConfirmation();
}
private static void ShowArguments(Arguments commandLine)
{
const string message = @"::
:: Parameters :
::";
Console.WriteLine(message);
if (commandLine.Parameters.Count == 0)
{
Console.WriteLine("** No parameters **");
HowToUse();
}
foreach (var c in commandLine.Parameters)
{
Console.WriteLine(" " + (c.HasValue ? string.Format("/{0}={1}", c.Name, c.Value) : string.Format("/{0}", c.Name)));
}
Console.WriteLine("");
}
private static void WaitConfirmation()
{
Console.WriteLine("\r\nPress a key to continue: ");
ConsoleKeyInfo cki = Console.ReadKey(true);
}
#endregion Private Static Methods
}
}
Link de la solution:
http://www.codeproject.com/Articles/3111/C-NET-Command-Line-Arguments-Parser
USE msdb;
GO
EXEC sp_configure 'Database Mail XPs'
GO
RECONFIGURE
GO
EXEC sp_configure 'Database Mail XPs', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'Database Mail XPs'
GO
To configure database mail
USE msdb
GO
DECLARE @ProfileName VARCHAR(255)
DECLARE @AccountName VARCHAR(255)
DECLARE @SMTPAddress VARCHAR(255)
DECLARE @EmailAddress VARCHAR(128)
DECLARE @DisplayUser VARCHAR(128)
SET @ProfileName = 'DBMailProfile';
SET @AccountName = 'DBMailAccount';
SET @SMTPAddress = 'smtp.server.com';
SET @EmailAddress = 'myemail@email.com';
SET @DisplayUser = 'Myname Noname';
EXECUTE msdb.dbo.sysmail_add_account_sp @account_name = @AccountName, @email_address = @EmailAddress, @display_name = @DisplayUser, @mailserver_name = @SMTPAddress
EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = @ProfileName
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = @ProfileName, @account_name = @AccountName, @sequence_number = 1;
--Now that everything is setup, I will send a test e-mail.
EXEC msdb.dbo.sp_send_dbmail @recipients = N'myemail@email.com', @body = 'Test Email Body', @subject = 'Test Email Subject from SQL', @profile_name = 'DBMailProfile'
Vérifier s’il est la première fois que l’on appelle une page : IsPostBack
Créer ou recréer de contrôles dynamiques;
Configurer la page « Master »;
Configurer le thème dynamiquement;
Lire et écrire des values de propriétés;
S’il est un « PostBack »
Vérifier les valeurs des contrôles avant le « restore » du « ViewState »;
Récrire des valeurs de propriétés;
Init
L’événement qui est déclenché en premier;
Événement est utilisé pour initialiser les propriétés du contrôle;
IniComplete
Les changements faits sur le « ViewState » sont persistés après le prochain « PostBack »;
PreLoad
L’événement qui fait le traitement du « PostBack » et aussi du « Request ».
Load
Cet événement appelle la méthode « OnLoad »;
L’événement « Load » de la page est déclenché avant des contrôles individuels;
ControlEvents
Cet événement est utilisé avec des spécifiques évents de contrôles comme « Button » avec l’événement « Click », ou le contrôle « TextBox »avec l’événement « TextChanged »;
Dans le cas d’un « PostBack », et si la page contient validation de contrôles, le « Page.IsValid » et les validations de chaque contrôle sont déclenchés;
LoadComplete
Cet événement est déclenché après tout « PostBack »and « View-State » sont chargés, et après la méthode « OnLoad » des tous les contrôles ont été déclenchés;
PreRender
Cet événement est pour effectuer des changements sur un contrôle avant qu’il soit sur la page, mais ces modifications ne sont pas sauvegardées. On peut l’utiliser pour associer un « DataSourceId » à un « DataBind »;
PreRenderComplete
Cet événement est déclenché après l’événement « PreRender » est fini;
SaveStateComplete
Cet événement est déclenché après le « View-State » a été sauvegardé de tous les contrôles et la page;
Tout le changement ne sont plus sauvegardé;
RenderComplete
C’est le dernier événement déclenché avant d’affichage de la page;
Unload
Cet événement est déclenché quand le contrôle est déchargé de la mémoire;
Il est utilisé pour finaliser des connexions, fermer des fichiers, effacer de données temporaires.
- If you have nothing to hide, you have nothing to fear.
- It's not that I have something to hide, I have nothing I want you to see.
Puis-je vous demander le mot de passe de votre ordinateur, de votre boîte mail et de votre compte Facebook ? Promis, je ne ferai rien de mal, seulement lire.
Comment oseriez-vous répondre non ? Lorsque vous n'avez rien à cacher, vous ne pouvez pas faire de distinction entre ce que vous admettez rendre public et ce qui vous dérange un peu plus. Dès lors que vous imposez une barrière, vous avez quelque chose à cacher (et c'est bien normal !).
Nous autres, êtres humains, nous distinguons les uns des autres parce que nous avons tous une vie privée, une intimité que nous ne dévoilons pas à tout bout de champ.
Installé devant un rideau d'écrans, un cybersoldat en treillis scrute attentivement les informations qui défilent. Soudain une mention «SUSPICIOUS» (suspect) se détache en rouge sur l'un des ordinateurs.
«J'ai relevé une alerte sur un site, un utilisateur qui essaie d'aller sur un serveur cloud», lâche le sous-officier qui, avec une trentaine d'autres militaires, surveille 24 heures sur 24 les réseaux du ministère de la Défense, à l'affût du moindre intrus mal ou très mal intentionné.