/// <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); }
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(); }
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); }