Beispiel #1
0
        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();
        }
Beispiel #2
0
        // 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();
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #8
0
        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);
            }
        }
Beispiel #11
0
        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();
        }
Beispiel #12
0
        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 支持更多命令
        }
Beispiel #15
0
 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());
         });
     });
 }
Beispiel #17
0
        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;
            }
        }
Beispiel #20
0
        /// <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 源");
                    }
                }
            }
        }
Beispiel #21
0
        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);
        }
Beispiel #22
0
        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;
        }
Beispiel #23
0
        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);
        }
Beispiel #24
0
        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();
        }
Beispiel #26
0
        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();
                }
            }
        }
Beispiel #28
0
        //
        //
        //
        //
        //

        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);
        }
Beispiel #29
0
        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);
        }
Beispiel #30
0
        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}");
                }
            });
        }