Yuebon.NetCore/Yuebon.Commons/Core/Module/MoudleService.cs
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using AutoMapper;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using Yuebon.Commons.Repositories;
using Yuebon.Commons.IoC;
using Yuebon.Commons.Linq;
using Yuebon.Commons.Log;
namespace Yuebon.Commons.Module
{
/// <summary>
/// 模块服务
/// </summary>
public class MoudleService
{
/// <summary>
/// 实现应用模块程序集的注册服务
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public static IServiceProvider LoaderMoudleService(IServiceCollection services)
{
// services.AddScoped(typeof(IUnitOfWork), typeof(UnitOfWork));
var apps = AppContext.BaseDirectory + "Apps";
if (!Directory.Exists(apps))
{
Directory.CreateDirectory(apps);
}
// 把 Apps 下的动态库拷贝一份来运行,
// 使 Apps 中的动态库不会在运行时被占用(以便重新编译)
var targetPath = PrepareShadowCopies();
// 从 Shadow Copy 目录加载 Assembly 并注册到 Mvc 中
//LoadFromShadowCopies(targetPath);
string PrepareShadowCopies()
{
// 准备 Shadow Copy 的目标目录
var target = Path.Combine(AppContext.BaseDirectory, "app_data", "apps-cache");
if (!Directory.Exists(target))
{
Directory.CreateDirectory(target);
}
// 找到插件目录下 bin 目录中的 .dll,拷贝
Directory.EnumerateDirectories(apps)
.Select(path => Path.Combine(path, "bin"))
.Where(Directory.Exists)
.SelectMany(bin => Directory.EnumerateFiles(bin, "*.dll"))
.ForEach(dll => File.Copy(dll, Path.Combine(target, Path.GetFileName(dll)), true));
return target;
}
DirectoryInfo folder = new DirectoryInfo(targetPath);
List<Assembly> myAssembly = new List<Assembly>();
myAssembly.Add(Assembly.Load("Yuebon.Security.Core"));
后面还有 28 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。