public static void Main(string[] args) { var webHost = BuildWebHost(args); using (var scope = webHost.Services.CreateScope()) { var services = scope.ServiceProvider; try { var db = services.GetRequiredService <TMDbContext>(); var idsDb = services.GetRequiredService <PersistedGrantDbContext>(); db.Database.Migrate(); idsDb.Database.Migrate(); AppConfigurator.InitRolesAndUsers(services); } catch (Exception ex) { var logger = services.GetRequiredService <ILogger <Program> >(); logger.LogError(ex, "An error occurred while migrating and initialization of the database."); } } webHost.Run(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); // In production, the Angular files will be served from this directory services.AddSpaStaticFiles(configuration => { configuration.RootPath = "ClientApp/dist"; }); var configurator = new AppConfigurator(services); configurator.ConfigureDependencyInjection(); configurator.EstablishDatabaseConnection(Configuration.GetConnectionString("DefaultConnection")); configurator.AddAutoMapper(); var appSettingsSection = Configuration.GetSection("AppSettings"); var configurationEmailObj = Configuration.GetSection("EmailConfiguration").Get <EmailConfiguration>(); configurator.AddEmailDependencyInjection(configurationEmailObj); services.Configure <AppSettings>(appSettingsSection); var appSettings = appSettingsSection.Get <AppSettings>(); configurator.ConfigureJwtAuthentication(appSettings.Secret); }
/// <summary> /// 创建构建过程使用的工具 /// </summary> /// <param name="appConfigurator"></param> /// <param name="logger"></param> protected DotNetBuildTool(IAppConfigurator appConfigurator, ILogger logger = null) { AppConfigurator = appConfigurator ?? dotnetCampus.DotNETBuild.Context.AppConfigurator.GetAppConfigurator(); Logger = logger ?? AppConfigurator.Of <LogConfiguration>().GetLogger(); }
static void Main(string[] args) { var appConfigurator = AppConfigurator.GetAppConfigurator(); var appConfiguratorDefault = appConfigurator.Default; var(ownerCommand, runningCommand) = SubCommandParser.ParseCommandlineValue(args); if (runningCommand.Count == 0) { return; } // 其中的 OwnerCommand 先忽略 // 判断 runningCommand 是否存在需要转换的参数 var actualCommandline = CommandlineEngine.FillCommandline(runningCommand.ToArray(), appConfiguratorDefault); var commandlineArgString = new StringBuilder(); for (var i = 1; i < actualCommandline.Length; i++) { var arg = actualCommandline[i]; Console.WriteLine($"[{i}] = {arg}"); commandlineArgString.Append(ProcessCommand.ToArgumentPath(arg)); commandlineArgString.Append(' '); } var arguments = commandlineArgString.ToString(); Console.WriteLine($"Command = {actualCommandline[0]} {arguments}"); var(success, output) = ProcessCommand.ExecuteCommand(actualCommandline[0], arguments); Console.WriteLine(output); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { AppConfigurator.Configure(services, Configuration); services.AddSingleton <IClientRegistry, DefaultClientRegistry>(); services.Configure <ClientListOptions>(Configuration.GetSection("Clients")); }
public IServiceProvider GetServiceProvider() { var services = new ServiceCollection(); services.AddEntityFrameworkInMemoryDatabase() .AddDbContext <ApplicationDbContext>(opt => opt.UseInMemoryDatabase("TestDB")); services.AddIdentity <AppIdentityUser, IdentityRole>() .AddEntityFrameworkStores <ApplicationDbContext>(); var httpContext = new DefaultHttpContext(); httpContext.Features.Set <IHttpAuthenticationFeature>(new HttpAuthenticationFeature()); services.AddTransient <IHttpContextAccessor>(h => new HttpContextAccessor { HttpContext = httpContext }); var appConfigurator = new AppConfigurator(); appConfigurator.ConfigureServices(services); services.AddSingleton <IConfiguration>(c => new Mock <IConfiguration>().Object); var serviceProvider = services.BuildServiceProvider(); return(serviceProvider); }
public bool SaveData() { try { if (!hasConfigFile) { return(false); } string configPath = Path.Combine(Path.GetDirectoryName(path), "DataTranNewGUI.exe"); AppConfigurator.UpdateAppSettingsConfig("SliceCount", txtSliceCount.Text, configPath); AppConfigurator.UpdateAppSettingsConfig("SliceTime", txtSliceTime.Text, configPath); AppConfigurator.UpdateAppSettingsConfig("ServerIP", textServerIp.Text, configPath); AppConfigurator.UpdateAppSettingsConfig("ServerPort", txtServerPort.Text, configPath); AppConfigurator.UpdateAppSettingsConfig("BasePath", txtBasePath.Text, configPath); AppConfigurator.UpdateAppSettingsConfig("MonBasePath", txtMonBasePath.Text, configPath); AppConfigurator.UpdateAppSettingsConfig("FTPHost", txtFTPHost.Text, configPath); AppConfigurator.UpdateAppSettingsConfig("FTPPort", txtFTPPort.Text, configPath); AppConfigurator.UpdateAppSettingsConfig("FTPUserName", txtFTPUserName.Text, configPath); AppConfigurator.UpdateAppSettingsConfig("FTPPwd", txtFTPPwd.Text, configPath); return(true); } catch { return(false); } }
public CommonLogger() { var appConfigurator = AppConfigurator.GetAppConfigurator(); var logConfiguration = appConfigurator.Of <LogConfiguration>(); FileLog = FileLogProvider.GetFileLog(logConfiguration); }
private void InitData() { try { string configPath = Path.Combine(Path.GetDirectoryName(path), "DataTranNewGUI.exe"); hasConfigFile = File.Exists(configPath); if (!File.Exists(configPath)) { MessageBox.Show(this, "配置文件不存在"); return; } txtSliceCount.Text = AppConfigurator.GetAppConfig("SliceCount", configPath); txtSliceTime.Text = AppConfigurator.GetAppConfig("SliceTime", configPath); textServerIp.Text = AppConfigurator.GetAppConfig("ServerIP", configPath); txtServerPort.Text = AppConfigurator.GetAppConfig("ServerPort", configPath); txtBasePath.Text = AppConfigurator.GetAppConfig("BasePath", configPath); txtMonBasePath.Text = AppConfigurator.GetAppConfig("MonBasePath", configPath); txtFTPHost.Text = AppConfigurator.GetAppConfig("FTPHost", configPath); txtFTPPort.Text = AppConfigurator.GetAppConfig("FTPPort", configPath); txtFTPUserName.Text = AppConfigurator.GetAppConfig("FTPUserName", configPath); txtFTPPwd.Text = AppConfigurator.GetAppConfig("FTPPwd", configPath); } catch (Exception e) { MixLogHelper.Error(GetType().Name, "初始化Record配置文件异常", e.StackTrace); } }
static void Main(string[] args) { try { var config = "build.fkv"; Console.WriteLine($"命令行 " + Environment.CommandLine); config = Path.GetFullPath(config); Console.WriteLine($"配置文件 {config}"); AppConfigurator.SetConfigurationFile(new FileInfo(config)); var fileConfigurationRepo = ConfigurationFactory.FromFile(config); IAppConfigurator appConfigurator = fileConfigurationRepo.CreateAppConfigurator(); var compiler = new Compiler(appConfigurator); compiler.Compile(); if (args.Any(temp => temp == "publish")) { compiler.Nuget.PublishNupkg(); } } catch (Exception e) { // 可能日志出现异常,因此就不通过日志库输出 Console.WriteLine(e); Log.Error(e.ToString()); Environment.Exit(-1); } }
public static void Main(string[] args) { var host = BuildWebHost(args); var appConfigurator = new AppConfigurator(); using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; try { var db = services.GetRequiredService <ApplicationDbContext>(); db.Database.Migrate(); appConfigurator.Initialize(services); } catch (Exception ex) { var logger = services.GetRequiredService <ILogger <Program> >(); logger.LogError(ex, "An error occurred while migration and initializing the DB."); } } host.Run(); }
public void Should_init_testusers_and_roles() { var appConfigurator = new AppConfigurator(); var services = new DataBaseDiBootstrapperInMemory().GetServiceProvider(); appConfigurator.Initialize(services); var userManager = services.GetRequiredService <UserManager <AppIdentityUser> >(); var roleManager = services.GetRequiredService <RoleManager <IdentityRole> >(); var ctx = services.GetService <ApplicationDbContext>(); var UserRoles = ctx.Roles; var Users = ctx.Users; foreach (var identityUser in Users.ToList()) { Assert.IsTrue(userManager.Users.Any(u => u.Email.Equals(identityUser.Email))); Assert.IsTrue(userManager.Users.Any(u => u.UserName.Equals(identityUser.UserName))); Assert.IsTrue(ctx.GPUsers.Any(u => u.IdentityId == identityUser.Id)); } var admin = userManager.Users.FirstOrDefault(u => u.UserName.Equals("testadmin")); var user = userManager.Users.FirstOrDefault(u => u.UserName.Equals("testuser")); foreach (var role in UserRoles.ToList()) { Assert.IsTrue(userManager.IsInRoleAsync(admin, role.Name).Result); } Assert.IsTrue(userManager.IsInRoleAsync(user, "user").Result); Assert.IsFalse(userManager.IsInRoleAsync(user, "admin").Result); }
public static void UseNHibernate(this AppConfigurator configurator, ISessionFactory sessionFactory) { var runtime = configurator.AppRuntime; runtime.Container.Register <IDomainDbSession>(_ => new NhDomainDbSession(sessionFactory.OpenSession())); runtime.Container.Register <IDomainRepository>(_ => new NhDomainRepository(_.Resolve <IDomainDbSession>(), _.Resolve <IRelayWorker>())); }
static void Main(string[] args) { var nuGet = new NuGet(AppConfigurator.GetAppConfigurator()); nuGet.Restore(); // todo 支持更多命令 }
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); AppConfigurator.Run(); //var presenter = new BaseFloodComputePresenter(new Form1(), new ComputerModel()); //Presenter.Run(); //Application.Run(new Form1()); }
public static void RunRelayWorkerInCurrentProcess(this AppConfigurator configurator) { RunRelayWorkerInCurrentProcess(configurator, cfg => { cfg.UseInProcessEventTransport(x => { x.RegisterHandlers(AppDomain.CurrentDomain.GetAssemblies()); }); }); }
public static void UseRavenDB(this AppConfigurator configurator, IDocumentStore documentStore) { documentStore.ExecuteIndex(new StoredEventIndex()); documentStore.Conventions.JsonContractResolver = new Taro.RavenDB.Serialization.AggregateRootContractResolver(); var runtime = configurator.AppRuntime; runtime.Container.Register <IDomainDbSession>(_ => new RavenDomainDbSession(documentStore.OpenSession())); runtime.Container.Register <IDomainRepository>(_ => new RavenDomainRepository(_.Resolve <IDomainDbSession>(), _.Resolve <IRelayWorker>())); }
public static void RunRelayWorkerInCurrentProcess(this AppConfigurator configurator, Action <InProcessRelayWorkerConfigurator> configure) { var config = new InProcessRelayWorkerConfigurator(configurator.AppRuntime); configure(config); var container = configurator.AppRuntime.Container; container.Register <IRelayWorker>(new RelayWorker(() => container.Resolve <IDomainDbSession>(), container.Resolve <IEventTransport>())); }
static void Main(string[] args) { var appConfigurator = AppConfigurator.GetAppConfigurator(); var nuGet = new NuGet(appConfigurator); Log.Info($"当前命令行 {Environment.CommandLine}"); if (args.Length == 1) { // 可以传入命令行或文件 if (Directory.Exists(args[0])) { Log.Info($"传入 NuGet 文件所在文件夹 {args[0]}"); appConfigurator.Of <CompileConfiguration>().NupkgDirectory = args[0]; nuGet.PublishNupkg(); } else if (File.Exists(args[0])) { Log.Info($"传入 NuGet 文件 {args[0]}"); nuGet.PublishNupkg(new FileInfo(args[0])); } else if (args[0] == "-h" || args[0] == "--help") { Console.WriteLine(@"此命令用于将 NuGet 包发布到配置的默认源,默认将会取 Compile.NupkgDirectory 文件夹内的 nupkg 文件上传到 Nuget.Source 服务器 命令可不填写参数,不填写时将会使用配置的 Compile.NupkgDirectory 文件夹内的所有 nupkg 文件上传 命令可选参数是 nupkg 文件路径或文件所在文件夹 NuGetPublishTask [nupkg file path | nupkg folder] NuGetPublishTask [nupkg 文件路径 | nupkg 文件所在文件夹] 如需指定非配置里面的 NuGet 服务器等,请直接使用 nuget 命令"); return; } else { Log.Error($"未能解析传入内容为 NuGet 文件或所在文件夹"); Environment.Exit(-1); return; } } else if (args.Length == 0) { nuGet.PublishNupkg(); } else { Log.Error("此命令仅接受传入当前 NuGet 包文件路径或所在文件夹,此命令用于将 NuGet 包发布到配置的默认源"); Environment.Exit(-1); return; } }
/// <summary> /// 发布指定的文件 /// </summary> public void PublishNupkg(FileInfo nupkgFile, bool skipDuplicate = true) { if (!File.Exists(nupkgFile.FullName)) { throw new FileNotFoundException($"找不到 {nupkgFile} 文件"); } var toolConfiguration = AppConfigurator.Of <ToolConfiguration>(); var nugetConfiguration = AppConfigurator.Of <NugetConfiguration>(); var nugetPath = toolConfiguration.NugetPath; Logger.LogInformation($"开始发布主要的源 {nugetConfiguration.NuGetSource}"); RunPublishNupkg(nugetPath, nupkgFile.FullName, nugetConfiguration.NuGetSource, nugetConfiguration.NuGetApiKey, skipDuplicate); // 推送额外的源,推送失败自动忽略 var attachedSource = nugetConfiguration.AttachedNuGetSource; if (attachedSource.Length > 0) { Logger.LogInformation($"额外推送的源 NugetConfiguration.AttachedSource 有 {attachedSource.Length} 个"); for (var i = 0; i < attachedSource.Length; i++) { try { // 依据 Url 里面不包含空格,可以使用空格分开 APIKey 和源 var splitSource = attachedSource[i].Split(" "); if (splitSource.Length > 0) { string source = splitSource[0]; string apiKey = null; if (splitSource.Length > 1) { apiKey = splitSource[1]; } if (!string.IsNullOrEmpty(source)) { Logger.LogInformation($"正在推送第 {i}/{attachedSource.Length} 个额外 NuGet 源 {source}"); RunPublishNupkg(nugetPath, nupkgFile.FullName, source, apiKey, skipDuplicate); } } } catch (Exception e) { Logger.LogWarning(e, "推送额外 NuGet 源"); } } } }
public static AppConfigurator TestableAppConfigurator() { var webApplication = new WebApplication(Substitute.For <IProjectLocation>(), 45123); var configurator = new AppConfigurator(); configurator.WithJavaScriptExecutor(() => Substitute.For <IJavaScriptExecutor>()); configurator.WithWebDriver(() => Substitute.For <IWebDriver>()); configurator .ProjectToTest(webApplication) .WithWebServer(Substitute.For <IWebServer>()) .UsingCamera(new NullCamera()); return(configurator); }
public void SeedData(IServiceProvider services) { var httpContextAccessor = services.GetService <IHttpContextAccessor>(); var principal = new ClaimsPrincipal(httpContextAccessor.HttpContext.User); var userRoles = new UserRoles(); httpContextAccessor.HttpContext.User = new GenericPrincipal( new GenericIdentity("GP system initialization"), new[] { userRoles.Admin }); var appConfigurator = new AppConfigurator(); appConfigurator.Initialize(services); //return default principal back; httpContextAccessor.HttpContext.User = principal; }
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseAuthentication(); app.UseMvc(routes => { routes.MapRoute( "default", "{controller}/{action}", new { Controller = "Home", Action = nameof(HomeController.Index) }); }); app.MapWhen( context => { return(!context.Request.Path.Value.ToLower().StartsWith("/api")); }, builder => { builder.UseMvc(routes => { routes.MapSpaFallbackRoute( "spa", new { Controller = "Home", Action = nameof(HomeController.Index) }); }); }); AppConfigurator.InitDbContext(Configuration); }
public static void FillGitInfo(IAppConfigurator appConfigurator = null) { appConfigurator ??= AppConfigurator.GetAppConfigurator(); var git = GitHelper.GetGitRepo(appConfigurator); var gitCommitRevisionCount = git.GetGitCommitRevisionCount(); var gitConfiguration = appConfigurator.Of <GitConfiguration>(); gitConfiguration.GitCount = gitCommitRevisionCount; gitConfiguration.CurrentCommit = git.GetCurrentCommit(); var compileConfiguration = appConfigurator.Of <CompileConfiguration>(); if (string.IsNullOrEmpty(compileConfiguration.CurrentCommit)) { compileConfiguration.CurrentCommit = gitConfiguration.CurrentCommit; } }
static void Main(string[] args) { SDK.Run(() => { // 这个命令可以提供给其他命令作为控制台输出使用,此时需要减少输出内容 Log.LogLevel = LogLevel.Error; var git = GitHelper.GetGitRepo(); var gitCommitRevisionCount = git.GetGitCommitRevisionCount(); Console.WriteLine(gitCommitRevisionCount); var appConfigurator = AppConfigurator.GetAppConfigurator(); var gitConfiguration = appConfigurator.Of <GitConfiguration>(); gitConfiguration.GitCount = gitCommitRevisionCount; gitConfiguration.CurrentCommit = git.GetCurrentCommit(); }).Wait(); }
static void Main(string[] args) { var appConfigurator = AppConfigurator.GetAppConfigurator(); var compileConfiguration = appConfigurator.Of <CompileConfiguration>(); // 用于替换的列表 var replaceDictionary = new Dictionary <string, string>() { { "$(AppVersion)", compileConfiguration.AppVersion } }; // 替换一些变量,然后原原本本传入到 dotnet 命令里面 var argsString = new StringBuilder(); foreach (var arg in args) { var temp = arg; if (replaceDictionary.TryGetValue(temp, out var replaceValue)) { temp = replaceValue; } temp = ProcessCommand.ToArgumentPath(temp); argsString.Append(temp); argsString.Append(' '); } Log.Info($"dotnet {argsString}"); var(success, output) = ProcessCommand.ExecuteCommand("dotnet", argsString.ToString()); if (success) { Log.Info(output); } else { Log.Error(output); } }
/// <summary> /// 在框架内执行实际的逻辑,框架将自动初始化日志和配置等功能 /// </summary> /// <param name="action"></param> /// <param name="entryAssembly"></param> /// <returns></returns> public static async Task <int> Run(Func <Task <int> > action, Assembly entryAssembly = null) { entryAssembly ??= Assembly.GetEntryAssembly(); // 预先设置框架内的日志输出,后续再次设置为项目配置的输出。开始是放在 Lazy 里面,因此基本不伤。框架内的调试输出是给 SDK 框架开发者了解的,上层业务开发者可以无须了解,因此框架的调试输出内容,不会输出给到上层业务开发者 Log.LogLevel = LogLevel.Information; var logger = Log.InitLazyLogger(); // 全局可以配置日志输出 var currentConfiguration = ConfigurationHelper.GetCurrentConfiguration(); var appConfigurator = currentConfiguration.CreateAppConfigurator(); Log.LogLevel = appConfigurator.Of <LogConfiguration>().LogLevel; AppConfigurator.SetAppConfigurator(appConfigurator); LogApplicationInfo(entryAssembly); SetCommonConfiguration(appConfigurator); // 完成框架,重新设置一下日志 logger.SwitchActualLogger(); try { return(await action()); } finally { // 清空日志缓存 logger.LogCacheMessage(); if (currentConfiguration is FileConfigurationRepo fileConfiguration) { await fileConfiguration.SaveAsync(); } } }
// // // // // private void Form1_Load(object sender, EventArgs e) { authorRepository = AppConfigurator.getFactory().createAuthorRepository(); bookRepository = AppConfigurator.getFactory().createBookRepository(authorRepository); RefreshAuthorGrid(); Authors_dataGrid.Columns[0].HeaderText = "Year Of Birth"; Authors_dataGrid.Columns[1].HeaderText = "Year Of Death"; Authors_dataGrid.Columns[2].HeaderText = "First Name"; Authors_dataGrid.Columns[3].HeaderText = "Middle Name"; Authors_dataGrid.Columns[4].HeaderText = "Last Name"; Authors_dataGrid.Columns[0].DisplayIndex = 4; Authors_dataGrid.Columns[1].DisplayIndex = 4; RefreshBookGrid(); Books_dataGrid.Columns[0].HeaderText = "Author"; Books_dataGrid.Columns[1].HeaderText = "Title"; Books_dataGrid.Columns[2].HeaderText = "Publication Year"; Books_dataGrid.Columns[3].HeaderText = "Pages"; Units_Tab_SelectedIndexChanged(Units_Tab, null); }
public IServiceProvider GetServiceProvider() { var services = new ServiceCollection(); services.AddDbContext <ApplicationDbContext>(options => options.UseSqlServer(TestConfig.ConnectionString)); services.AddIdentity <AppIdentityUser, IdentityRole>() .AddEntityFrameworkStores <ApplicationDbContext>(); var httpContext = new DefaultHttpContext(); httpContext.Features.Set <IHttpAuthenticationFeature>(new HttpAuthenticationFeature()); services.AddSingleton <IHttpContextAccessor>(h => new HttpContextAccessor { HttpContext = httpContext }); var appConfigurator = new AppConfigurator(); appConfigurator.ConfigureServices(services); var serviceProvider = services.BuildServiceProvider(); return(serviceProvider); }
static void Main(string[] args) { Parser.Default.ParseArguments <AssemblyOption>(args).WithParsed(option => { var appConfigurator = AppConfigurator.GetAppConfigurator(); var compileConfiguration = appConfigurator.Of <CompileConfiguration>(); #if DEBUG var fileSniff = new FileSniff(appConfigurator); fileSniff.Sniff(); #endif var file = option.AssemblyInfoFile; if (string.IsNullOrEmpty(file)) { file = appConfigurator.Default["AssemblyInfoFile"]; } if (string.IsNullOrEmpty(file)) { throw new ArgumentException($"Can not find AssemblyInfoFile, try to input --AssemblyInfoFile value"); } if (!Path.IsPathRooted(file)) { var codeDirectory = compileConfiguration.CodeDirectory; file = Path.Combine(codeDirectory, file); file = Path.GetFullPath(file); } appConfigurator.Default["AssemblyInfoFile"] = file; Log.Info($"Start read assmebly info file {file}"); if (!File.Exists(file)) { throw new ArgumentException($"The assmebly info file {file} can not be found."); } var formatRegex = option.VersionFormatRegex; if (string.IsNullOrEmpty(formatRegex)) { formatRegex = "Version = \\\"(\\d+.\\d+.\\d+)\\\";"; } Log.Info($"VersionFormatRegex: {formatRegex}"); var content = File.ReadAllText(file); var match = Regex.Match(content, formatRegex); if (match.Success) { var assemblyVersion = match.Groups[1].Value; var fieldCount = GetVersionFieldCount(assemblyVersion); Log.Info($"assembly version: {assemblyVersion}"); appConfigurator.Default["AssemblyVersion"] = assemblyVersion; var lastVersion = 0; var gitConfiguration = appConfigurator.Of <GitConfiguration>(); if (fieldCount == 3 && gitConfiguration.GitCount != null) { Log.Info($"GitCount: {gitConfiguration.GitCount}"); lastVersion = gitConfiguration.GitCount.Value; } var appVersion = fieldCount == 3 ? $"{assemblyVersion}.{lastVersion}" : assemblyVersion; Log.Info($"app version: {appVersion}"); compileConfiguration.AppVersion = appVersion; } else { throw new ArgumentException($"Can not math VersionFormatRegex={formatRegex} in assmebly info file {file} \r\n The file content:\r\n{content}"); } }); }