Ejemplo n.º 1
0
        /// <summary>
        /// 引用第三方包,配置文件中配置引用key=对应服务的应用名
        /// </summary>
        /// <param name="metadataReferences"></param>
        /// <param name="appName"></param>
        private static void ReferenceAssemblyByAppName(AdvancedCache <string, List <MetadataReference> > metadataReferences, string appName)
        {
            //这里配置的程序集引用要写文件全名,包括路径和后缀
            var assemblyInfos = AssemblyReferenceConfig.GetAssemblyInfoByAppName(appName);

            //为不为空都把默认执行路径加上扫描
            var dirs = SettingsConfigHelper.GetReferenceDirs();

            if (dirs == null || !dirs.Any())
            {
                dirs = new List <string>();
            }

            dirs.Insert(0, AppContext.BaseDirectory);

            if (assemblyInfos != null && assemblyInfos.Any())
            {
                foreach (var assemblyInfo in assemblyInfos)
                {
                    foreach (var dir in dirs)
                    {
                        var fileFullPath = Path.Combine(dir, assemblyInfo.Assembly);
                        if (!File.Exists(fileFullPath))
                        {
                            _logger.Debug($"reference file [{fileFullPath}] in config not found.");
                            continue;
                        }
                        //如果文件存在,则加载完成后跳过后续扫描
                        metadataReferences[AppSettingsConfigHelper.GetAppName()].Add(MetadataReference.CreateFromFile(fileFullPath));
                        break;
                    }
                }
            }
        }
        /// <summary>
        /// Create Assembly whick will run
        /// </summary>
        /// <param name="script"></param>
        /// <param name="errorMsg"></param>
        /// <returns></returns>
        private Assembly CreateAsmExecutor(string script, out string errorMsg)
        {
            errorMsg = null;
            var assemblyName = _scriptHash;

            var sourceTree = CSharpSyntaxTree.ParseText(script, path: assemblyName + ".cs", encoding: Encoding.UTF8);

            var references = _metadataReferences[AppSettingsConfigHelper.GetAppName()];

            var compilation = CSharpCompilation.Create(assemblyName,
                                                       new[] { sourceTree }, references,
                                                       new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary).WithOptimizationLevel(SettingsConfigHelper.IsDebug() ? OptimizationLevel.Debug : OptimizationLevel.Release));

            Assembly assembly;

            using (var assemblyStream = new MemoryStream())
            {
                using (var pdbStream = new MemoryStream())
                {
                    var emitResult = compilation.Emit(assemblyStream, pdbStream);

                    if (emitResult.Success)
                    {
                        var assemblyBytes = assemblyStream.GetBuffer();
                        var pdbBytes      = pdbStream.GetBuffer();
                        assembly = Assembly.Load(assemblyBytes, pdbBytes);
                        //output files
                        if (SettingsConfigHelper.IsOutPutFiles())
                        {
                            if (SettingsConfigHelper.IsOutPutAllFiles())
                            {
                                OutputDynamicScriptAllFile(script, assemblyName, assemblyBytes, pdbBytes);
                            }
                            else
                            {
                                OutputDynamicScriptDllFile(assemblyName, assemblyBytes);
                            }
                        }
                    }
                    else
                    {
                        var msgs = new StringBuilder();
                        foreach (var msg in emitResult.Diagnostics.Where(d => d.Severity == DiagnosticSeverity.Error).Select(d => string.Format("[{0}]:{1}({2})", d.Id, d.GetMessage(), d.Location.GetLineSpan().StartLinePosition)))
                        {
                            msgs.AppendLine(msg);
                            if (SettingsConfigHelper.IsOutPutFiles())
                            {
                                WriteDynamicScriptCs(Path.Combine(EnsureOutputPath(), assemblyName + ".cs"), script);
                            }
                            _logger.Error(String.Format("{0}:{1}:{2}:{3}:{4}", _tenantId, "CSharp", _projectName, msg, _scriptHash));
                        }
                        errorMsg = msgs.ToString();
                        return(null);
                    }
                }
            }
            _logger.Debug($"CreateAsmExecutor->_context:{_tenantId},{"CSharp"}, {_projectName},{_scriptHash}   _scriptTypeDict:{_scriptTypeDict?.Count}  _metadataReferences:{ _metadataReferences[_projectName]?.Count}");
            return(assembly);
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            var pass = ConfigHelper.Password;

            IConfiguration configuration = new ConfigurationBuilder()
                                           .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                                           .AddEnvironmentVariables()
                                           .Build();
            var cfg = configuration.Get <AppConfig>();

            var settingsConfigHelper = new SettingsConfigHelper(configuration, "ConnectionString");

            #region StartTesting
            //var baseUrl = "http://fsd.fast.com.vn/DeheusSP_API";
            var    baseUrl   = "http://fsd.fast.com.vn/DeheusSP_API";
            var    loginPage = "/apilogin.ashx";
            var    queryPage = "/apiquery.ashx";
            string dFrom     = new DateTime(2018, 1, 30).ToString("dd/MM/yyyy");
            string dTo       = new DateTime(2021, 1, 30).ToString("dd/MM/yyyy");
            string cacheID   = "";
            //dữ liệu khi có sự thay đổi danh mục khách hàng trên FAST
            List <Customer> listCustomer = null;
            //dữ liệu khi có sự thay đổi danh mục hàng hóa vật tư trên FAST
            List <Item> listItem = null;
            //dữ liệu khi có sự thay đổi danh mục kho trên FAST
            List <Site> listSite = null;
            //dữ liệu stock
            List <StockFast> listStock  = null;
            FastGet          fastHelper = new FastGet(baseUrl);
            var isLogin = fastHelper.LoginAsync(loginPage, null).Result;
            if (isLogin)
            {
                listCustomer = fastHelper.getCustomersAsync(queryPage, dFrom, dTo, cacheID).Result;
                listItem     = fastHelper.GetItemsAsync(queryPage, dFrom, dTo, cacheID).Result;
                listSite     = fastHelper.getSitesAsync(queryPage, dFrom, dTo, cacheID).Result;
                listStock    = fastHelper.getStocksAsync(queryPage, dFrom, dTo, cacheID).Result;
            }
            #endregion
            Console.ReadKey();
        }
Ejemplo n.º 4
0
        public static List <Race> GetRaces(ApplicationDbContext _context, List <JSONCandidate> candidateData)
        {
            int dummyElectionId;

            int NumOfMayorsNeeded            = Convert.ToInt32(SettingsConfigHelper.AppSetting("CurrentRace:NumOfMayorsNeeded"));
            int NumOfCouncillorsNeeded       = Convert.ToInt32(SettingsConfigHelper.AppSetting("CurrentRace:NumOfCouncillorsNeeded"));
            int NumOfParkCommissionersNeeded = Convert.ToInt32(SettingsConfigHelper.AppSetting("CurrentRace:NumOfParkCommissionersNeeded"));
            int NumOfSchoolTrusteesNeeded    = Convert.ToInt32(SettingsConfigHelper.AppSetting("CurrentRace:NumOfSchoolTrusteesNeeded"));
            int OrderMayor      = Convert.ToInt32(SettingsConfigHelper.AppSetting("CurrentRace:OrderMayor"));
            int OrderCouncillor = Convert.ToInt32(SettingsConfigHelper.AppSetting("CurrentRace:OrderCouncillor"));
            int OrderPark       = OrderCouncillor = Convert.ToInt32(SettingsConfigHelper.AppSetting("CurrentRace:OrderPark"));
            int OrderSchool     = Convert.ToInt32(SettingsConfigHelper.AppSetting("CurrentRace:OrderSchool"));

            if (_configuration["StartupData:DummyElectionId"] != null)
            {
                dummyElectionId = Convert.ToInt32(_configuration["StartupData:DummyElectionId"]);
            }
            else
            {
                dummyElectionId = 1;
            }

            List <Race> races = new List <Race>();

            foreach (var candidate in candidateData)
            {
                if (races.FindIndex(existingRace => candidate.Position == existingRace.PositionName) == -1)
                {
                    Race race = new Race()
                    {
                        ElectionId   = dummyElectionId,
                        PositionName = candidate.Position,
                    };

                    switch (candidate.Position)
                    {
                    case "Councillor":
                        race.NumberNeeded = NumOfCouncillorsNeeded;
                        race.BallotOrder  = OrderCouncillor;
                        break;

                    case "Mayor":
                        race.NumberNeeded = NumOfMayorsNeeded;
                        race.BallotOrder  = OrderMayor;
                        break;

                    case "Park Board commissioner":
                        race.NumberNeeded = NumOfParkCommissionersNeeded;
                        race.BallotOrder  = OrderPark;
                        break;

                    case "School trustee":
                        race.NumberNeeded = NumOfSchoolTrusteesNeeded;
                        race.BallotOrder  = OrderSchool;
                        break;
                    }

                    races.Add(race);
                }
            }

            return(races);
        }