/// <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> /// 引用第三方包,配置文件中配置引用key=对应服务的应用名 /// </summary> private static void ReferenceAssembly() { //这里配置的程序集引用要写文件全名,包括路径和后缀 var assemblyInfos = AssemblyReferenceConfig.GetCurrentAppAssemblyReferenceInfos(); //为不为空都把默认执行路径加上扫描 var dirs = FaaSSettingsConfigHelper.GetReferenceDirs(); if (dirs == null) { dirs = new List <string>(); } dirs.Insert(0, AppContext.BaseDirectory); dirs.Add(Path.GetDirectoryName(typeof(object).Assembly.Location)); _logger.LogInformation($"scan config dirs: [{string.Join(",", dirs)}]."); if (assemblyInfos == null || !assemblyInfos.Any()) { return; } foreach (var assemblyInfo in assemblyInfos) { foreach (var dir in dirs) { var fileFullPath = Path.Combine(dir, assemblyInfo.Assembly); if (!File.Exists(fileFullPath)) { continue; } //如果文件存在,则加载完成后跳过后续扫描 _metadataReferences[_currentAppName].Add(MetadataReference.CreateFromFile(fileFullPath)); break; } } }