添加 common 组件

old
xiaoguo 3 years ago
parent 4690ce9ea5
commit a60f884d18

@ -0,0 +1,83 @@
using Autofac;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Common
{
public static class DIManager
{
private static IContainer container = null;
/// <summary>
/// 自动注册包含 IDependency 接口的实例
/// </summary>
private static void AutofacRegister()
{
var builder = new ContainerBuilder();
/* 1
* RegisterGeneric:RegisterGeneric(typeof()).As(typeof())
* RegisterType:RegisterType<>.As<>()
*/
//builder.RegisterGeneric(typeof(Repository<,>)).As(typeof(IRepository<,>));
/* 2
* IDependency
* IDependency
*/
Type baseType = typeof(IDependency);
/* 3
* CLR COMAppDomain AppDomain
*/
//var assemblies = AppDomain.CurrentDomain.GetAssemblies();//这种写法AppDomain重新启动后会丢失程序集
var assemblies = Assembly.GetAssembly(baseType);
/* 4
*
* IsAssignableFromtrueIDependency
* IsAbstract
* AsImplementedInterfaces
* InstancePerLifetimeScopeLifetime
*/
builder.RegisterAssemblyTypes(assemblies).Where(type => baseType.IsAssignableFrom(type) && !type.IsAbstract).AsImplementedInterfaces().SingleInstance();
/*5MVCapi
*/
//builder.RegisterControllers(Assembly.GetExecutingAssembly());
//builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
container = builder.Build();
/*6ApiController WebApi
*/
//var webapiresolver = new AutofacWebApiDependencyResolver(container);
//GlobalConfiguration.Configuration.DependencyResolver = webapiresolver;
/*7mvc
*/
//DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
/// <summary>
/// 获取容器中注册的对象实例
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static T GetContainerObject<T>()
{
if (container == null)
{
AutofacRegister();
}
return container.Resolve<T>();
}
}
}

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Common
{
/// <summary>
/// 依赖注入接口表示该接口的实现类将自动注册到IoC容器中
/// </summary>
public interface IDependency
{
}
}

@ -0,0 +1,106 @@
using GuideScreen.Common.Common;
using GuideScreen.Common.Services;
using GuideScreen.Common.Services.Models;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.Entity.Infrastructure.Design;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common
{
/// <summary>
/// 日志扩展
/// </summary>
public static class LogExtensions
{
private static ILogService logService;
static LogExtensions()
{
}
/// <summary>
/// 日志服务
/// </summary>
public static ILogService LogService
{
get
{
if (logService == null)
{
logService = DIManager.GetContainerObject<ILogService>();
logService.LogMessage += (model) =>
{
Trace.WriteLine($"{model.Time} {model.LogLevel} {model.Source} {model.Message}");
};
}
return logService;
}
}
/// <summary>
/// 写入Error级别日志
/// </summary>
/// <param name="ex">异常对象</param>
public static void WriteErrorLog(this Exception ex)
{
var error = new StringBuilder(ex.Message);
error.AppendLine();
error.AppendLine(ex.StackTrace);
LogService.Error(error.ToString());
}
/// <summary>
/// 写入Fatal级别日志
/// </summary>
/// <param name="ex">异常对象</param>
public static void WriteFatalLog(this Exception ex)
{
var error = new StringBuilder(ex.Message);
error.AppendLine();
error.AppendLine(ex.StackTrace);
LogService.Fatal(error.ToString());
}
/// <summary>
/// 写入info级别日志
/// </summary>
/// <param name="str"></param>
public static void WriteInfoLog(this string str)
{
LogService.Info(str);
}
/// <summary>
/// 写入debug级别日志
/// </summary>
/// <param name="str"></param>
public static void WriteDebugLog(this string str)
{
LogService.Debug(str);
}
/// <summary>
/// 写入Error级别日志
/// </summary>
/// <param name="str"></param>
public static void WriteErrorLog(this string str)
{
LogService.Error(str);
}
/// <summary>
/// 写入Error级别日志
/// </summary>
/// <param name="str"></param>
public static void WriteFatalLog(this string str)
{
LogService.Fatal(str);
}
}
}

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Common
{
/// <summary>
/// 日志级别
/// </summary>
public enum LogInfoLevel
{
/*信息级别*/
Info,
/*debug级别*/
Debug,
/*错误级别*/
Error,
/*致命级别*/
Fatal
}
}

@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Common
{
public class ModelTools
{
public static class PubClone<TEntity, TResult>
{
private static readonly Func<TEntity, TResult> cache = GetFunc();
private static Func<TEntity, TResult> GetFunc()
{
ParameterExpression parameterExpression = Expression.Parameter(typeof(TEntity), "p");
List<MemberBinding> memberBindingList = new List<MemberBinding>();
foreach (var item in typeof(TResult).GetProperties())
{
if (!item.CanWrite)
{
continue;
}
var _Property = typeof(TEntity).GetProperty(item.Name);
if (_Property == null)
{
continue;
}
if (item.PropertyType.FullName != _Property.PropertyType.FullName)
{
continue;
}
MemberExpression property = Expression.Property(parameterExpression, typeof(TEntity).GetProperty(item.Name));
MemberBinding memberBinding = Expression.Bind(item, property);
memberBindingList.Add(memberBinding);
}
MemberInitExpression memberInitExpression = Expression.MemberInit(Expression.New(typeof(TResult)), memberBindingList.ToArray());
Expression<Func<TEntity, TResult>> lambda = Expression.Lambda<Func<TEntity, TResult>>(memberInitExpression, new ParameterExpression[] { parameterExpression });
return lambda.Compile();
}
public static TResult Trans(TEntity tIn)
{
if (tIn == null)
{
return default(TResult);
}
return cache(tIn);
}
public static List<TResult> TransList(List<TEntity> list)
{
List<TResult> result = new List<TResult>();
foreach (var item in list)
{
result.Add(Trans(item));
}
return result;
}
}
}
}

@ -0,0 +1,111 @@
using HslCommunication.Secs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace GuideScreen.Common.Common
{
/// <summary>
/// plc 点位 信息(这里用中文表示)
/// </summary>
public sealed class PLCPointConstants
{
/// <summary>
/// 气缸上到位状态
/// </summary>
public const string InPositionOnTheCylinder = "V700.0";
/// <summary>
/// 气缸下到位状态
/// </summary>
public const string UnderCylinderPosition= "V700.1";
/// <summary>
/// 转盘到位
/// </summary>
public const string TurntableInPlace = "V700.2";
/// <summary>
/// 系统启动状态
/// </summary>
public const string SystemStartupStatus = "V700.3";
/// <summary>
/// 急停状态
/// </summary>
public const string EmergencyStop = "V700.4";
/// <summary>
/// 转盘旋转状态
/// </summary>
public const string TheSpinningStateOfTheTurntable = "V700.5";
/// <summary>
/// 气缸上升过程中
/// </summary>
public const string TheCylinderIsRising= "V700.6";
/// <summary>
/// 气缸下降过程中
/// </summary>
public const string TheCylinderIsGoingDown = "V700.7";
/// <summary>
/// 拧紧机拧紧中
/// </summary>
public const string TheTighteningMachineIsTightening = "V701.0";
/// <summary>
/// 心跳信号
/// </summary>
public const string HeartbeatSignal = "V701.1";
/// <summary>
/// 上位机准备控制
/// </summary>
public const string TheUpperComputerIsReadyForControl= "V701.2";
/// <summary>
/// 上位机准备好
/// </summary>
public const string TheUpperComputerReady = "V701.3";
/// <summary>
/// 上位机转盘旋转控制
/// </summary>
public const string UpperComputerTurntableRotationControl = "V701.4";
/// <summary>
/// 上位机上升控制
/// </summary>
public const string UpperComputerRiseControl = "V701.5";
/// <summary>
/// 上位机下降控制
/// </summary>
public const string UpperComputerDescentControl = "V701.6";
/// <summary>
/// 复位
/// </summary>
public const string Restoration = "V701.7";
/// <summary>
/// 上升超时故障
/// </summary>
public const string AscentTimeoutFault = "V702.0";
/// <summary>
/// 下降超时故障
/// </summary>
public const string DescendingTimeoutFault = "V702.1";
/// <summary>
/// 拧紧机失败(超时)
/// </summary>
public const string TighteningMachineFailure = "V702.2";
}
}

@ -0,0 +1,72 @@
using HslCommunication;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Common
{
public class PLCResult
{
//
// 摘要:
// 指示本次操作是否成功。
// Indicates whether this operation was successful.
public bool IsSuccess { get; set; }
//
// 摘要:
// 具体的错误描述。
// Specific error description.
public string Message { get; set; }
public int ErrorCode { get; set; }
//
// 摘要:
// 实例化一个默认的结果对象
public PLCResult()
{
}
//
// 摘要:
// 使用指定的消息实例化一个默认的结果对象
//
// 参数:
// msg:
// 错误消息
public PLCResult(string msg)
{
Message = msg;
}
//
// 摘要:
// 使用错误代码,消息文本来实例化对象
//
// 参数:
// err:
// 错误代码
//
// msg:
// 错误消息
public PLCResult(int err, string msg)
{
ErrorCode = err;
Message = msg;
}
}
public class PLCResult<T> : PLCResult
{
public T Content { get; set; }
public PLCResult(T content)
{
Content = content;
}
}
}

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Common
{
/// <summary>
/// 系统配置keys 值
/// </summary>
public enum SystemConfigKeys
{
/// <summary>
/// 主题样式
/// </summary>
Style,
/// <summary>
/// PLC通信地址
/// </summary>
PLCAddress,
/// <summary>
/// PLC通信端口
/// </summary>
PLCPort,
/// <summary>
/// 管理员密码
/// </summary>
AdminPwd,
/// <summary>
/// 日期保留天数
/// </summary>
LogRetentionDays,
}
}

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
@ -7,6 +7,11 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Autofac" Version="6.5.0" />
<PackageReference Include="Masuit.Tools.Core" Version="2.5.9.1" />
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="7.0.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="SQLite.CodeFirst" Version="1.7.0.34" />
<PackageReference Include="System.ServiceModel.Duplex" Version="4.10.*" />
<PackageReference Include="System.ServiceModel.Federation" Version="4.10.*" />
<PackageReference Include="System.ServiceModel.Http" Version="4.10.*" />
@ -14,4 +19,10 @@
<PackageReference Include="System.ServiceModel.Security" Version="4.10.*" />
</ItemGroup>
<ItemGroup>
<Reference Include="HslCommunication">
<HintPath>SDK\HslCommunication.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

@ -0,0 +1,94 @@
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SQLite.CodeFirst;
using System.IO;
using GuideScreen.Common.Repositories.Entities;
using System.Data.Entity.Core.EntityClient;
using System.Runtime.CompilerServices;
using GuideScreen.Common.Models;
using GuideScreen.Common.Common;
using GuideScreen.Common.Services.Impl;
using GuideScreen.Common.Services.Models;
using Microsoft.Data.Sqlite;
namespace GuideScreen.Common.Repositories
{
/// <summary>
/// 数据库上下文
/// </summary>
public class ATSDBContext : DbContext
{
//用System.Data.SQLite::SQLiteConnection创建DbConnection进行构造初始化
public ATSDBContext(DbConnection dbConnection, bool contextOwnsConnection = true)
: base(dbConnection, true)
{
}
/// <summary>
/// 获取EF上下文实例
/// </summary>
/// <returns></returns>
public static ATSDBContext GetDbContext()
{
var dbConnection = new SqliteConnection($"data source={AppContext.BaseDirectory}\\ATSDB.db");
var dbContext = new ATSDBContext(dbConnection);
return dbContext;
}
//使用SQLite.CodeFirst::SqliteCreateDatabaseIfNotExists进行创建数据库
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var sqliteConnectionInitializer = new MySqliteCreateDatabaseIfNotExists(modelBuilder);
Database.SetInitializer(sqliteConnectionInitializer);
}
public DbSet<MenuEntity> MenuEntities { get; set; }
public DbSet<SystemConfigEntity> SystemConfigEntities { get; set; }
}
public class MySqliteCreateDatabaseIfNotExists : SqliteCreateDatabaseIfNotExists<ATSDBContext>
{
public MySqliteCreateDatabaseIfNotExists(DbModelBuilder modelBuilder) : base(modelBuilder)
{
}
protected override void Seed(ATSDBContext context)
{
//初始化菜单
var systemManageMenu = new MenuEntity();
systemManageMenu.ID = 30;
systemManageMenu.Name = "系统管理";
systemManageMenu.Symbol = 61818;
systemManageMenu.PageIndex = 3000;
systemManageMenu.Enabled = true;
var systemManageMenu5 = new MenuEntity { ID = 35, ParentID = 30, Name = "系统参数管理", PageIndex = 3005, Symbol = 61459, WindowUri = "AutomaticTighteningSystem.UI.SystemMangeConfig", Enabled = true, IsAdmin = true };
context.MenuEntities.AddRange(new MenuEntity[]
{
systemManageMenu,
systemManageMenu5
});
//初始化系統参数
var plcIPAddress = new SystemConfigEntity { ConfigName = "PLC通信IP地址", ConfigKey = SystemConfigKeys.PLCAddress.ToString(), ConfigValue = "192.168.1.3", Enabled = true };
var plcPort = new SystemConfigEntity { ConfigName = "PLC通信端口", ConfigKey = SystemConfigKeys.PLCPort.ToString(), ConfigValue = "502", Enabled = true };
var adminPassword = new SystemConfigEntity { ConfigName = "管理员密码", ConfigKey = SystemConfigKeys.AdminPwd.ToString(), ConfigValue = "6543210", Enabled = true };
var logRetention = new SystemConfigEntity { ConfigName = "日志保留天数", ConfigKey = SystemConfigKeys.LogRetentionDays.ToString(), ConfigValue = "30", Enabled = true };
context.SystemConfigEntities.AddRange(new SystemConfigEntity[]
{
plcIPAddress,
plcPort,
adminPassword,
logRetention,
});
context.SaveChanges();
}
}
}

@ -0,0 +1,62 @@
using GuideScreen.Common.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Repositories.Entities
{
/// <summary>
/// 菜单 实体
/// </summary>
[Table("menus")]
public class MenuEntity
{
/// <summary>
/// 主键ID
/// </summary>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ID { get; set; }
/// <summary>
/// 父节点ID
/// </summary>
[Required]
public int ParentID { get; set; }
/// <summary>
/// 名称
/// </summary>
[Index(IsUnique = true)]
public string Name { get; set; }
/// <summary>
/// 图标编号
/// </summary>
public int Symbol { get; set; }
/// <summary>
/// 窗体实例化地址
/// </summary>
public string WindowUri { get; set; }
/// <summary>
/// 页面编号
/// </summary>
public int PageIndex { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 是否需要管理员权限
/// </summary>
public bool IsAdmin { get; set; }
}
}

@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Repositories.Entities
{
/// <summary>
/// 系统参数
/// </summary>
[Table("systemConfig")]
public class SystemConfigEntity
{
/// <summary>
/// 主键ID
/// </summary>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
/// <summary>
/// 参数名称
/// </summary>
[Required]
public string ConfigName { get; set; }
/// <summary>
/// 参数键值
/// </summary>
[Index(IsUnique = true)]
public string ConfigKey { get; set; }
/// <summary>
/// 参数值
/// </summary>
[Required]
public string ConfigValue { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Remarks { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool Enabled { get; set; }
}
}

@ -0,0 +1,41 @@
using GuideScreen.Common.Common;
using GuideScreen.Common.Models;
using GuideScreen.Common.Repositories.Entities;
using GuideScreen.Common.Services.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Repositories
{
/// <summary>
/// 系统相关 数据层 接口
/// </summary>
public interface ISystemRepository: IDependency
{
/// <summary>
/// 获取系统菜单
/// </summary>
/// <returns></returns>
List<MenuModel> GetMenus();
/// <summary>
/// 获取系统参数
/// </summary>
/// <param name="configName"></param>
/// <returns></returns>
SystemConfigEntity GetSystemConfig(string configName);
/// <summary>
/// 更新系统参数
/// </summary>
/// <param name="entity"></param>
void UpdateSystemConfig(SystemConfigEntity entity);
#region 系统参数管理
#endregion
}
}

@ -0,0 +1,91 @@
using GuideScreen.Common.Common;
using GuideScreen.Common.Models;
using GuideScreen.Common.Repositories.Entities;
using GuideScreen.Common.Services.Models;
using System;
using System.Collections.Generic;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace GuideScreen.Common.Repositories.Impl
{
/// <summary>
/// 系统相关 数据层 实现
/// </summary>
internal class SystemRepository : ISystemRepository
{
/// <summary>
/// 获取系统菜单
/// </summary>
/// <returns></returns>
public List<MenuModel> GetMenus()
{
using (var context = ATSDBContext.GetDbContext())
{
var menus = context.MenuEntities.Where(f => f.Enabled).ToList();
if (menus.Count == 0)
{
return new List<MenuModel>();
}
var headers = menus.Where(f => f.ParentID == 0).Select(f => ModelTools.PubClone<MenuEntity, MenuModel>.Trans(f)).ToList();
if (headers.Count() > 0)
{
foreach (var item in headers)
{
var subMenus = menus.Where(f => f.ParentID == item.ID).Select(f => ModelTools.PubClone<MenuEntity, MenuModel>.Trans(f)).ToList();
if (subMenus.Count() > 0)
{
item.Menus.AddRange(subMenus);
}
}
}
return headers;
}
}
/// <summary>
/// 获取系统参数
/// </summary>
/// <param name="configKey"></param>
/// <returns></returns>
public SystemConfigEntity GetSystemConfig(string configKey)
{
using (var context = ATSDBContext.GetDbContext())
{
var entity = context.SystemConfigEntities.Where(f => f.ConfigKey == configKey).FirstOrDefault();
return entity;
}
}
/// <summary>
/// 更新系统参数
/// </summary>
/// <param name="entity"></param>
public void UpdateSystemConfig(SystemConfigEntity entity)
{
using (var context = ATSDBContext.GetDbContext())
{
var value = context.SystemConfigEntities.Where(f => f.ConfigKey == entity.ConfigKey).FirstOrDefault();
if (value != null)
{
value.ConfigName = entity.ConfigName;
value.ConfigKey = entity.ConfigKey;
value.ConfigValue = entity.ConfigValue;
value.Enabled = entity.Enabled;
value.Remarks = entity.Remarks;
}
else
{
context.SystemConfigEntities.Add(entity);
}
context.SaveChanges();
}
}
}
}

@ -0,0 +1,154 @@
using GuideScreen.Common.Common;
using GuideScreen.Common.Services.Models;
using Masuit.Tools.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Services
{
/// <summary>
/// 日志服务 接口
/// </summary>
public interface ILogService: IDependency
{
/// <summary>
/// 自定义事件
/// </summary>
event Action<LogInfoModel> LogMessage;
/// <summary>
/// 日志存放目录默认日志放在当前应用程序运行目录下的logs文件夹中
/// </summary>
string LogDirectory { get; set; }
/// <summary>
/// 写入Info级别的日志
/// </summary>
/// <param name="info"></param>
void Info(string info);
/// <summary>
/// 写入Info级别的日志
/// </summary>
/// <param name="source">异常源</param>
/// <param name="info"></param>
void Info(string source, string info);
/// <summary>
/// 写入Info级别的日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="info"></param>
void Info(Type source, string info);
/// <summary>
/// 写入debug级别日志
/// </summary>
/// <param name="debug"></param>
void Debug(string debug);
/// <summary>
/// 写入debug级别日志
/// </summary>
/// <param name="source">异常源</param>
/// <param name="debug"></param>
void Debug(string source, string debug);
/// <summary>
/// 写入debug级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="debug"></param>
void Debug(Type source, string debug);
/// <summary>
/// 写入error级别日志
/// </summary>
/// <param name="error"></param>
void Error(Exception error);
/// <summary>
/// 写入error级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="error"></param>
void Error(Type source, Exception error);
/// <summary>
/// 写入error级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="error">异常信息</param>
void Error(Type source, string error);
/// <summary>
/// 写入error级别日志
/// </summary>
/// <param name="source">异常源</param>
/// <param name="error">异常对象</param>
void Error(string source, Exception error);
/// <summary>
/// 写入error级别日志
/// </summary>
/// <param name="source">异常源</param>
/// <param name="error">异常信息</param>
void Error(string source, string error);
/// <summary>
/// 写入error级别日志
/// </summary>
/// <param name="error">异常信息</param>
void Error(string error);
/// <summary>
/// 写入fatal级别日志
/// </summary>
/// <param name="fatal">异常对象</param>
void Fatal(Exception fatal);
/// <summary>
/// 写入fatal级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="fatal">异常对象</param>
void Fatal(Type source, Exception fatal);
/// <summary>
/// 写入fatal级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="fatal">异常对象</param>
void Fatal(Type source, string fatal);
/// <summary>
/// 写入fatal级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="fatal">异常对象</param>
void Fatal(string source, Exception fatal);
/// <summary>
/// 写入fatal级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="fatal">异常对象</param>
void Fatal(string source , string fatal);
/// <summary>
/// 写入fatal级别日志
/// </summary>
/// <param name="fatal">异常对象</param>
void Fatal(string fatal);
/// <summary>
/// 清理多少天前日志
/// </summary>
void ClearAgoDays(int day);
}
}

@ -0,0 +1,130 @@
using GuideScreen.Common.Common;
using HslCommunication.Core.Address;
using HslCommunication;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using HslCommunication.Profinet.Siemens;
namespace GuideScreen.Common.Services
{
/// <summary>
/// PLC通信接口
/// </summary>
public interface IPLCCommunicationService : IDependency
{
event EventHandler<string> ErrorMessage;
event EventHandler<string> InfoMessage;
/// <summary>
/// 连接PLC长连接
/// </summary>
/// <param name="address"></param>
/// <param name="port"></param>
void Connection(string address, int port = 0);
/// <summary>
/// 关闭连接PLC长连接
/// </summary>
void ColseConnection();
/// <summary>
/// 读取指定地址的bool值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
bool ReadBool(string address);
/// <summary>
/// 读取指定地址的byte值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
byte ReadByte(string address);
/// <summary>
/// 读取指定地址的Int16值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
int ReadInt16(string address);
/// <summary>
/// 读取指定地址的Int32值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
int ReadInt32(string address);
/// <summary>
/// 读取指定地址的long值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
long ReadLong(string address);
/// <summary>
/// 读取指定地址的Float值
/// </summary>
/// <returns></returns>
float ReadFloat(string address);
/// <summary>
/// 读取指定地址的double值
/// </summary>
/// <returns></returns>
double ReadDouble(string address);
/// <summary>
/// 写入bool值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
void Write(string address, bool value);
/// <summary>
/// 写入byte值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
void Write(string address, byte value);
/// <summary>
/// 写入Int16值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
void Write(string address, Int16 value);
/// <summary>
/// 写入Int32值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
void Write(string address, Int32 value);
/// <summary>
/// 写入float值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
void Write(string address, float value);
/// <summary>
/// 写入double值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
void Write(string address, double value);
/// <summary>
/// 写入long值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
void Write(string address, long value);
}
}

@ -0,0 +1,38 @@
using GuideScreen.Common.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Services
{
/// <summary>
/// plc 控制服务 接口
/// </summary>
public interface IPLCControllerService : IDependency
{
event EventHandler<string> ErrorMessage;
event EventHandler<string> InfoMessage;
/// <summary>
/// 初始化连接
/// </summary>
/// <param name="address"></param>
/// <param name="port"></param>
void Connection(string address, int port = 0);
/// <summary>
/// 关闭连接
/// </summary>
void ColseConnection();
/// <summary>
/// 获取心跳 0.5秒 切换
/// </summary>
/// <returns></returns>
bool GetHeartbeat();
}
}

@ -0,0 +1,38 @@
using GuideScreen.Common.Common;
using GuideScreen.Common.Models;
using GuideScreen.Common.Repositories.Entities;
using GuideScreen.Common.Services.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Services
{
/// <summary>
/// 系统相关 服务层 接口
/// </summary>
public interface ISystemService : IDependency
{
/// <summary>
/// 获取菜单
/// </summary>
/// <returns></returns>
List<MenuModel> GetMenuList();
/// <summary>
/// 获取系统参数
/// </summary>
/// <param name="configKey"></param>
/// <returns></returns>
SystemConfigModel GetSystemConfig(string configKey);
/// <summary>
/// 更新系统参数
/// </summary>
/// <param name="entity"></param>
void UpdateSystemConfig(SystemConfigModel model);
}
}

@ -0,0 +1,262 @@
using GuideScreen.Common.Common;
using GuideScreen.Common.Services.Models;
using Masuit.Tools.Logging;
using System;
using System.Collections.Generic;
using System.Data.Entity.Infrastructure.Interception;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace GuideScreen.Common.Services.Impl
{
/// <summary>
/// 日志服务 实现
/// </summary>
internal class LogService : ILogService
{
/// <summary>
/// 自定义事件
/// </summary>
public event Action<LogInfoModel> LogMessage;
public LogService()
{
LogManager.Event += LogManager_Event;
}
private void LogManager_Event(LogInfo obj)
{
if (LogMessage != null)
{
var info = ModelTools.PubClone<LogInfo,LogInfoModel>.Trans(obj) ;
Enum.TryParse(obj.LogLevel.ToString(), out LogInfoLevel level);
info.LogLevel = level;
LogMessage(info);
}
}
/// <summary>
/// 日志存放目录默认日志放在当前应用程序运行目录下的logs文件夹中
/// </summary>
public string LogDirectory
{
get
{
return LogManager.LogDirectory;
}
set
{
LogManager.LogDirectory = value;
}
}
/// <summary>
/// 写入Info级别的日志
/// </summary>
/// <param name="info"></param>
public void Info(string info)
{
LogManager.Info(info);
}
/// <summary>
/// 写入Info级别的日志
/// </summary>
/// <param name="source">异常源</param>
/// <param name="info"></param>
public void Info(string source, string info)
{
LogManager.Info(source, info);
}
/// <summary>
/// 写入Info级别的日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="info"></param>
public void Info(Type source, string info)
{
LogManager.Info(source, info);
}
/// <summary>
/// 写入debug级别日志
/// </summary>
/// <param name="debug"></param>
public void Debug(string debug)
{
LogManager.Debug(debug);
}
/// <summary>
/// 写入debug级别日志
/// </summary>
/// <param name="source">异常源</param>
/// <param name="debug"></param>
public void Debug(string source, string debug)
{
LogManager.Debug(source, debug);
}
/// <summary>
/// 写入debug级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="debug"></param>
public void Debug(Type source, string debug)
{
LogManager.Debug(source, debug);
}
/// <summary>
/// 写入error级别日志
/// </summary>
/// <param name="error"></param>
public void Error(Exception error)
{
LogManager.Error(error);
}
/// <summary>
/// 写入error级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="error"></param>
public void Error(Type source, Exception error)
{
LogManager.Error(source, error);
}
/// <summary>
/// 写入error级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="error">异常信息</param>
public void Error(Type source, string error)
{
LogManager.Error(source, error);
}
/// <summary>
/// 写入error级别日志
/// </summary>
/// <param name="source">异常源</param>
/// <param name="error">异常对象</param>
public void Error(string source, Exception error)
{
LogManager.Error(source, error);
}
/// <summary>
/// 写入error级别日志
/// </summary>
/// <param name="error">异常对象</param>
public void Error(string error)
{
LogManager.Error(String.Empty, error);
}
/// <summary>
/// 写入error级别日志
/// </summary>
/// <param name="source">异常源</param>
/// <param name="error">异常信息</param>
public void Error(string source, string error)
{
LogManager.Error(source, error);
}
/// <summary>
/// 写入fatal级别日志
/// </summary>
/// <param name="fatal">异常对象</param>
public void Fatal(Exception fatal)
{
LogManager.Fatal(fatal);
}
/// <summary>
/// 写入fatal级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="fatal">异常对象</param>
public void Fatal(Type source, Exception fatal)
{
LogManager.Fatal(source, fatal);
}
/// <summary>
/// 写入fatal级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="fatal">异常对象</param>
public void Fatal(Type source, string fatal)
{
LogManager.Fatal(source, fatal);
}
/// <summary>
/// 写入fatal级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="fatal">异常对象</param>
public void Fatal(string source, Exception fatal)
{
LogManager.Fatal(source, fatal);
}
/// <summary>
/// 写入fatal级别日志
/// </summary>
/// <param name="source">异常源的类型</param>
/// <param name="fatal">异常对象</param>
public void Fatal(string source, string fatal)
{
LogManager.Fatal(source, fatal);
}
/// <summary>
/// 写入fatal级别日志
/// </summary>
/// <param name="fatal">异常对象</param>
public void Fatal(string fatal)
{
LogManager.Fatal(String.Empty, fatal);
}
/// <summary>
/// 清理多少天前日志
/// </summary>
/// <param name="day"></param>
public void ClearAgoDays(int day)
{
if (!Directory.Exists(LogDirectory))
{
return;
}
var files = Directory.GetFiles(LogDirectory);
if (files.Length == 0)
{
return;
}
var date = DateTime.Now.AddDays(-day);
var clearFiles = files.Select(f => new FileInfo(f)).Where(f => f.CreationTime <= date).Select(f => f.FullName);
foreach (var filePath in clearFiles)
{
try
{
Info($"日志文件:{filePath} 已过期,将进行清理...");
File.Delete(filePath);
Info($"日志文件:{filePath} 清理完成");
}
catch (Exception ex)
{
Info($"日志文件:{filePath} 清理失败!" + ex.StackTrace);
}
}
}
}
}

@ -0,0 +1,469 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using HslCommunication.BasicFramework;
using HslCommunication.Core.Address;
using HslCommunication.Core.IMessage;
using HslCommunication.Core;
using HslCommunication;
using HslCommunication.Profinet.Siemens;
using HslCommunication.Reflection;
using GuideScreen.Common.Common;
using Masuit.Tools.Reflection;
namespace GuideScreen.Common.Services.Impl
{
/// <summary>
/// PLC通信服务 SiemensS7 smart200 实现
/// </summary>
internal class PLCCommunicationService : IPLCCommunicationService
{
private SiemensS7Net siemensS7Net = null;
public event EventHandler<string> ErrorMessage = null;
public event EventHandler<string> InfoMessage = null;
public PLCCommunicationService()
{
siemensS7Net = new SiemensS7Net(SiemensPLCS.S200Smart);
siemensS7Net.ConnectTimeOut = 3000;
}
#region 同步
/// <summary>
/// 连接PLC长连接
/// </summary>
/// <param name="address"></param>
/// <param name="port"></param>
public void Connection(string address, int port = 0)
{
siemensS7Net.IpAddress = address;
if (port > 0)
{
siemensS7Net.Port = port;
}
siemensS7Net.ConnectServer();
}
/// <summary>
/// 关闭连接PLC长连接
/// </summary>
public void ColseConnection()
{
siemensS7Net.ConnectClose();
}
/// <summary>
/// 读取指定地址的bool值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
public bool ReadBool(string address)
{
var result = siemensS7Net.ReadBool(address);
VerifyResult(result, address);
return result.Content;
}
/// <summary>
/// 读取指定地址的byte值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
public byte ReadByte(string address)
{
var result = siemensS7Net.ReadByte(address);
VerifyResult(result, address);
return result.Content;
}
/// <summary>
/// 读取指定地址的Int16值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
public int ReadInt16(string address)
{
var result = siemensS7Net.ReadInt16(address);
VerifyResult(result, address);
return result.Content;
}
/// <summary>
/// 读取指定地址的Int32值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
public int ReadInt32(string address)
{
var result = siemensS7Net.ReadInt32(address);
VerifyResult(result, address);
return result.Content;
}
/// <summary>
/// 读取指定地址的long值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
public long ReadLong(string address)
{
var result = siemensS7Net.ReadInt64(address);
VerifyResult(result, address);
return result.Content;
}
/// <summary>
/// 读取指定地址的Float值
/// </summary>
/// <returns></returns>
public float ReadFloat(string address)
{
var result = siemensS7Net.ReadFloat(address);
VerifyResult(result, address);
return result.Content;
}
/// <summary>
/// 读取指定地址的double值
/// </summary>
/// <returns></returns>
public double ReadDouble(string address)
{
var result = siemensS7Net.ReadDouble(address);
VerifyResult(result, address);
return result.Content;
}
/// <summary>
/// 写入bool值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
public void Write(string address, bool value)
{
var result = siemensS7Net.Write(address, value);
VerifyResult(result, address, value);
}
/// <summary>
/// 写入byte值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
public void Write(string address, byte value)
{
var result = siemensS7Net.Write(address, value);
VerifyResult(result, address, value);
}
/// <summary>
/// 写入Int16值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
public void Write(string address, Int16 value)
{
var result = siemensS7Net.Write(address, value);
VerifyResult(result, address, value);
}
/// <summary>
/// 写入Int32值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
public void Write(string address, Int32 value)
{
var result = siemensS7Net.Write(address, value);
VerifyResult(result, address, value);
}
/// <summary>
/// 写入float值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
public void Write(string address, float value)
{
var result = siemensS7Net.Write(address, value);
VerifyResult(result, address, value);
}
/// <summary>
/// 写入double值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
public void Write(string address, double value)
{
var result = siemensS7Net.Write(address, value);
VerifyResult(result, address, value);
}
/// <summary>
/// 写入long值
/// </summary>
/// <param name="address">写入地址</param>
/// <param name="value"></param>
public void Write(string address, long value)
{
var result = siemensS7Net.Write(address, value);
VerifyResult(result, address, value);
}
/// <summary>
/// 验证结果 如果启用了 ErrorMessage 就不抛出异常信息
/// </summary>
/// <param name="result"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
private bool VerifyResult(OperateResult result, string address = "", object value = null)
{
var message = $"address:{address}";
if (value != null)
{
message += $",value:{value}";
}
object content = null;
if (result.GetProperties().Where(f => f.Name == "Content").Count() > 0)
{
content = result.GetProperty<object>("Content");
}
if (content != null)
{
message += $",content:{content}";
}
message += "," + result.Message;
if (result.IsSuccess)
{
InfoMessage.Invoke(this, "PLC信息" + message);
return true;
}
else
{
if (ErrorMessage == null)
{
throw new Exception(result.Message);
}
else
{
ErrorMessage.Invoke(this, "PLC异常" + message);
return false;
}
}
}
#endregion
#region 异步
///// <summary>
///// 连接PLC长连接
///// </summary>
///// <param name="address"></param>
///// <param name="port"></param>
//public async PLCResult ConnectionAsync(string address, int port = 0)
//{
// siemensS7Net.IpAddress = address;
// if (port > 0)
// {
// siemensS7Net.Port = port;
// }
// var result = await siemensS7Net.ConnectServerAsync();
//}
///// <summary>
///// 关闭连接PLC长连接
///// </summary>
//public void ColseConnection()
//{
// siemensS7Net.ConnectClose();
//}
///// <summary>
///// 读取指定地址的bool值
///// </summary>
///// <param name="address"></param>
///// <returns></returns>
//public bool ReadBool(string address)
//{
// var result = siemensS7Net.ReadBoolAsync(address);
// VerifyResult(result);
// return result.Content;
//}
///// <summary>
///// 读取指定地址的byte值
///// </summary>
///// <param name="address"></param>
///// <returns></returns>
//public byte ReadByte(string address)
//{
// var result = siemensS7Net.ReadByte(address);
// VerifyResult(result);
// return result.Content;
//}
///// <summary>
///// 读取指定地址的Int16值
///// </summary>
///// <param name="address"></param>
///// <returns></returns>
//public int ReadInt16(string address)
//{
// var result = siemensS7Net.ReadInt16(address);
// VerifyResult(result);
// return result.Content;
//}
///// <summary>
///// 读取指定地址的Int32值
///// </summary>
///// <param name="address"></param>
///// <returns></returns>
//public int ReadInt32(string address)
//{
// var result = siemensS7Net.ReadInt32(address);
// VerifyResult(result);
// return result.Content;
//}
///// <summary>
///// 读取指定地址的long值
///// </summary>
///// <param name="address"></param>
///// <returns></returns>
//public long ReadLong(string address)
//{
// var result = siemensS7Net.ReadInt64(address);
// VerifyResult(result);
// return result.Content;
//}
///// <summary>
///// 读取指定地址的Float值
///// </summary>
///// <returns></returns>
//public float ReadFloat(string address)
//{
// var result = siemensS7Net.ReadFloat(address);
// VerifyResult(result);
// return result.Content;
//}
///// <summary>
///// 读取指定地址的double值
///// </summary>
///// <returns></returns>
//public double ReadDouble(string address)
//{
// var result = siemensS7Net.ReadDouble(address);
// VerifyResult(result);
// return result.Content;
//}
///// <summary>
///// 写入bool值
///// </summary>
///// <param name="address">写入地址</param>
///// <param name="value"></param>
//public void Write(string address, bool value)
//{
// siemensS7Net.Write(address, value);
//}
///// <summary>
///// 写入byte值
///// </summary>
///// <param name="address">写入地址</param>
///// <param name="value"></param>
//public void Write(string address, byte value)
//{
// siemensS7Net.Write(address, value);
//}
///// <summary>
///// 写入Int16值
///// </summary>
///// <param name="address">写入地址</param>
///// <param name="value"></param>
//public void Write(string address, Int16 value)
//{
// siemensS7Net.Write(address, value);
//}
///// <summary>
///// 写入Int32值
///// </summary>
///// <param name="address">写入地址</param>
///// <param name="value"></param>
//public void Write(string address, Int32 value)
//{
// siemensS7Net.Write(address, value);
//}
///// <summary>
///// 写入float值
///// </summary>
///// <param name="address">写入地址</param>
///// <param name="value"></param>
//public void Write(string address, float value)
//{
// siemensS7Net.Write(address, value);
//}
///// <summary>
///// 写入double值
///// </summary>
///// <param name="address">写入地址</param>
///// <param name="value"></param>
//public void Write(string address, double value)
//{
// siemensS7Net.Write(address, value);
//}
///// <summary>
///// 写入long值
///// </summary>
///// <param name="address">写入地址</param>
///// <param name="value"></param>
//public void Write(string address, long value)
//{
// siemensS7Net.Write(address, value);
//}
///// <summary>
///// 验证结果 如果启用了 ErrorMessage 就不抛出异常信息
///// </summary>
///// <param name="result"></param>
///// <returns></returns>
///// <exception cref="Exception"></exception>
//private bool VerifyResult(OperateResult result)
//{
// if (!result.IsSuccess)
// {
// if (ErrorMessage == null)
// {
// throw new Exception(result.Message);
// }
// else
// {
// ErrorMessage.Invoke(this, result.Message);
// return false;
// }
// }
// return true;
//}
#endregion
}
}

@ -0,0 +1,66 @@
using GuideScreen.Common.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Services.Impl
{
/// <summary>
/// plc 控制服务 实现
/// </summary>
internal class PLCControllerService : IPLCControllerService
{
private IPLCCommunicationService pLCCommunicationService;
public event EventHandler<string> ErrorMessage;
public event EventHandler<string> InfoMessage;
public PLCControllerService(IPLCCommunicationService pLCCommunicationService)
{
this.pLCCommunicationService = pLCCommunicationService;
this.pLCCommunicationService.ErrorMessage += PLCCommunicationService_ErrorMessage;
this.pLCCommunicationService.InfoMessage += PLCCommunicationService_InfoMessage; ;
}
private void PLCCommunicationService_InfoMessage(object sender, string e)
{
InfoMessage?.Invoke(sender, e);
}
private void PLCCommunicationService_ErrorMessage(object sender, string e)
{
ErrorMessage?.Invoke(sender, e);
}
/// <summary>
/// 初始化连接
/// </summary>
/// <param name="address"></param>
/// <param name="port"></param>
public void Connection(string address, int port = 0)
{
this.pLCCommunicationService.Connection(address, port);
}
/// <summary>
/// 关闭连接
/// </summary>
public void ColseConnection()
{
this.pLCCommunicationService.ColseConnection();
}
/// <summary>
/// 获取心跳 0.5秒 切换
/// </summary>
/// <returns></returns>
public bool GetHeartbeat()
{
var ret = this.pLCCommunicationService.ReadBool(PLCPointConstants.HeartbeatSignal);
return ret;
}
}
}

@ -0,0 +1,57 @@
using GuideScreen.Common.Common;
using GuideScreen.Common.Models;
using GuideScreen.Common.Repositories;
using GuideScreen.Common.Repositories.Entities;
using GuideScreen.Common.Services.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Services.Impl
{
/// <summary>
/// 系统相关 服务层 实现
/// </summary>
internal class SystemService : ISystemService
{
private readonly ISystemRepository _systemRepository;
public SystemService(ISystemRepository systemRepository)
{
_systemRepository = systemRepository;
}
/// <summary>
/// 获取菜单
/// </summary>
/// <returns></returns>
public List<MenuModel> GetMenuList()
{
return _systemRepository.GetMenus();
}
/// <summary>
/// 获取系统参数
/// </summary>
/// <param name="configKey"></param>
/// <returns></returns>
public SystemConfigModel GetSystemConfig(string configKey)
{
var entity = _systemRepository.GetSystemConfig(configKey);
var model = ModelTools.PubClone<SystemConfigEntity, SystemConfigModel>.Trans(entity);
return model;
}
/// <summary>
/// 更新系统参数
/// </summary>
/// <param name="entity"></param>
public void UpdateSystemConfig(SystemConfigModel model)
{
var value = ModelTools.PubClone<SystemConfigModel, SystemConfigEntity>.Trans(model);
_systemRepository.UpdateSystemConfig(value);
}
}
}

@ -0,0 +1,60 @@
using GuideScreen.Common.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Services.Models
{
/// <summary>
/// 日志信息 model
/// </summary>
public class LogInfoModel
{
//
// 摘要:
// 时间
public DateTime Time { get; set; }
//
// 摘要:
// 线程id
public int ThreadId { get; set; }
//
// 摘要:
// 日志级别
public LogInfoLevel LogLevel { get; set; }
//
// 摘要:
// 异常源
public string Source { get; set; }
//
// 摘要:
// 异常信息
public string Message { get; set; }
//
// 摘要:
// 异常对象
public Exception Exception { get; set; }
//
// 摘要:
// 日志类型
public string ExceptionType { get; set; }
//
// 摘要:
// 请求路径
public string RequestUrl { get; set; }
//
// 摘要:
// 客户端代理
public string UserAgent { get; set; }
}
}

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Models
{
public class MainWindowModel
{
public MainWindowModel()
{
Menus = new List<MenuModel>();
}
public List<MenuModel> Menus { get; set; }
}
}

@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Models
{
/// <summary>
/// 菜单 Model
/// </summary>
public class MenuModel
{
public MenuModel()
{
Menus = new List<MenuModel>();
}
/// <summary>
/// 主键ID
/// </summary>
public int ID { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 图标编号
/// </summary>
public int Symbol { get; set; }
/// <summary>
/// 窗体实例化地址
/// </summary>
public string WindowUri { get; set; }
/// <summary>
/// 页面编号
/// </summary>
public int PageIndex { get; set; }
/// <summary>
/// 是否需要管理员权限
/// </summary>
public bool IsAdmin { get; set; }
/// <summary>
/// 下级菜单
/// </summary>
public List<MenuModel> Menus { get; set; }
}
}

@ -0,0 +1,41 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Services.Models
{
/// <summary>
/// 分页模型
/// </summary>
public class PageModel<T> where T : class
{
/// <summary>
/// 每页行数
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 当前页号
/// </summary>
public int PageIndex { get; set; }
/// <summary>
/// 总页数
/// </summary>
//public int PageCount { get;set; }
/// <summary>
/// 总行数
/// </summary>
public int TotalRows { get;set; }
/// <summary>
/// 查询参数
/// </summary>
public T Content { get; set; }
}
}

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GuideScreen.Common.Services.Models
{
/// <summary>
/// 系统参数
/// </summary>
public class SystemConfigModel
{
/// <summary>
/// 主键ID
/// </summary>
public int ID { get; set; }
/// <summary>
/// 参数名称
/// </summary>
public string ConfigName { get; set; }
/// <summary>
/// 参数键
/// </summary>
public string ConfigKey { get; set; }
/// <summary>
/// 参数值
/// </summary>
public string ConfigValue { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Remarks { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool Enabled { get; set; }
}
}

@ -0,0 +1,12 @@
{
"runtimeOptions": {
"tfm": "net6.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
},
"configProperties": {
"System.Reflection.NullabilityInfoContext.IsSupported": true
}
}
}

@ -1 +1 @@
55c4cf877995632bd4d64a7f177c26201f5cd199
14be134c99e67cc07874521cee390a5067782ff4

@ -10,3 +10,8 @@ D:\Source\wisdomstation\guidescreen\GuideScreen\GuideScreen.Common\obj\Debug\net
D:\Source\wisdomstation\guidescreen\GuideScreen\GuideScreen.Common\obj\Debug\net6.0\refint\GuideScreen.Common.dll
D:\Source\wisdomstation\guidescreen\GuideScreen\GuideScreen.Common\obj\Debug\net6.0\GuideScreen.Common.pdb
D:\Source\wisdomstation\guidescreen\GuideScreen\GuideScreen.Common\obj\Debug\net6.0\ref\GuideScreen.Common.dll
D:\Source\wisdomstation\guidescreen\GuideScreen\GuideScreen.Common\bin\Debug\net6.0\GuideScreen.Common.runtimeconfig.json
D:\Source\wisdomstation\guidescreen\GuideScreen\GuideScreen.Common\bin\Debug\net6.0\HslCommunication.dll
D:\Source\wisdomstation\guidescreen\GuideScreen\GuideScreen.Common\bin\Debug\net6.0\HslCommunication.xml
D:\Source\wisdomstation\guidescreen\GuideScreen\GuideScreen.Common\obj\Debug\net6.0\GuideScreen.Common.csproj.CopyComplete
D:\Source\wisdomstation\guidescreen\GuideScreen\GuideScreen.Common\obj\Debug\net6.0\GuideScreen.Common.genruntimeconfig.cache

@ -44,6 +44,26 @@
"net6.0": {
"targetAlias": "net6.0",
"dependencies": {
"Autofac": {
"target": "Package",
"version": "[6.5.0, )"
},
"Masuit.Tools.Core": {
"target": "Package",
"version": "[2.5.9.1, )"
},
"Microsoft.Data.Sqlite.Core": {
"target": "Package",
"version": "[7.0.1, )"
},
"Newtonsoft.Json": {
"target": "Package",
"version": "[13.0.2, )"
},
"SQLite.CodeFirst": {
"target": "Package",
"version": "[1.7.0.34, )"
},
"System.ServiceModel.Duplex": {
"target": "Package",
"version": "[4.10.*, )"

@ -13,4 +13,13 @@
<SourceRoot Include="C:\Users\Think\.nuget\packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)entityframework\6.4.4\buildTransitive\netcoreapp3.0\EntityFramework.props" Condition="Exists('$(NuGetPackageRoot)entityframework\6.4.4\buildTransitive\netcoreapp3.0\EntityFramework.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore\6.0.10\buildTransitive\net6.0\Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore\6.0.10\buildTransitive\net6.0\Microsoft.EntityFrameworkCore.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgEntityFramework Condition=" '$(PkgEntityFramework)' == '' ">C:\Users\Think\.nuget\packages\entityframework\6.4.4</PkgEntityFramework>
<PkgMicrosoft_CodeAnalysis_Analyzers Condition=" '$(PkgMicrosoft_CodeAnalysis_Analyzers)' == '' ">C:\Users\Think\.nuget\packages\microsoft.codeanalysis.analyzers\1.1.0</PkgMicrosoft_CodeAnalysis_Analyzers>
<PkgMicrosoft_AspNetCore_Razor_Design Condition=" '$(PkgMicrosoft_AspNetCore_Razor_Design)' == '' ">C:\Users\Think\.nuget\packages\microsoft.aspnetcore.razor.design\2.2.0</PkgMicrosoft_AspNetCore_Razor_Design>
</PropertyGroup>
</Project>

@ -1,2 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)system.text.json\7.0.0\buildTransitive\net6.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\7.0.0\buildTransitive\net6.0\System.Text.Json.targets')" />
<Import Project="$(NuGetPackageRoot)entityframework\6.4.4\buildTransitive\netcoreapp3.0\EntityFramework.targets" Condition="Exists('$(NuGetPackageRoot)entityframework\6.4.4\buildTransitive\netcoreapp3.0\EntityFramework.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\7.0.0\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\7.0.0\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets')" />
</ImportGroup>
</Project>

@ -1,43 +1,200 @@
{
"version": 2,
"dgSpecHash": "jeBs0+AtTS5V0ZRwf3ss4eO0tb23Ku8ScCYZxxIFQ0phAPc+qB8a+IeCwbObLbZwq58RyGSGTzOAyoOvcaMb1g==",
"dgSpecHash": "KZBmIDp4edIDNXWjio6IOVjPhhyDUScdqqeqZA62V1uEPs0rq7YZK/jrx09zCdX9LZpQBvlOlt+DGeKohwGBtg==",
"success": true,
"projectFilePath": "D:\\Source\\wisdomstation\\guidescreen\\GuideScreen\\GuideScreen.Common\\GuideScreen.Common.csproj",
"expectedPackageFiles": [
"C:\\Users\\Think\\.nuget\\packages\\anglesharp\\0.17.1\\anglesharp.0.17.1.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\anglesharp.css\\0.16.4\\anglesharp.css.0.16.4.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\autofac\\6.5.0\\autofac.6.5.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\dnsclient\\1.7.0\\dnsclient.1.7.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\entityframework\\6.4.4\\entityframework.6.4.4.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\fastexpressioncompiler\\3.3.3\\fastexpressioncompiler.3.3.3.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\htmlsanitizer\\8.0.601\\htmlsanitizer.8.0.601.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\masuit.tools.abstractions\\2.5.9.1\\masuit.tools.abstractions.2.5.9.1.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\masuit.tools.core\\2.5.9.1\\masuit.tools.core.2.5.9.1.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.antiforgery\\2.2.0\\microsoft.aspnetcore.antiforgery.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.authentication.abstractions\\2.2.0\\microsoft.aspnetcore.authentication.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.authentication.core\\2.2.0\\microsoft.aspnetcore.authentication.core.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.authorization\\2.2.0\\microsoft.aspnetcore.authorization.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.authorization.policy\\2.2.0\\microsoft.aspnetcore.authorization.policy.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.cors\\2.2.0\\microsoft.aspnetcore.cors.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.cryptography.internal\\2.2.0\\microsoft.aspnetcore.cryptography.internal.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.dataprotection\\2.2.0\\microsoft.aspnetcore.dataprotection.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.dataprotection.abstractions\\2.2.0\\microsoft.aspnetcore.dataprotection.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.diagnostics.abstractions\\2.2.0\\microsoft.aspnetcore.diagnostics.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.hosting.abstractions\\2.2.0\\microsoft.aspnetcore.hosting.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.hosting.server.abstractions\\2.2.0\\microsoft.aspnetcore.hosting.server.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.html.abstractions\\2.2.0\\microsoft.aspnetcore.html.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.http\\2.2.0\\microsoft.aspnetcore.http.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.http.abstractions\\2.2.0\\microsoft.aspnetcore.http.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.http.extensions\\2.2.0\\microsoft.aspnetcore.http.extensions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.http.features\\2.2.0\\microsoft.aspnetcore.http.features.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.jsonpatch\\2.2.0\\microsoft.aspnetcore.jsonpatch.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.localization\\2.2.0\\microsoft.aspnetcore.localization.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc\\2.2.0\\microsoft.aspnetcore.mvc.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.abstractions\\2.2.0\\microsoft.aspnetcore.mvc.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.analyzers\\2.2.0\\microsoft.aspnetcore.mvc.analyzers.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.apiexplorer\\2.2.0\\microsoft.aspnetcore.mvc.apiexplorer.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.core\\2.2.0\\microsoft.aspnetcore.mvc.core.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.cors\\2.2.0\\microsoft.aspnetcore.mvc.cors.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.dataannotations\\2.2.0\\microsoft.aspnetcore.mvc.dataannotations.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.formatters.json\\2.2.0\\microsoft.aspnetcore.mvc.formatters.json.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.localization\\2.2.0\\microsoft.aspnetcore.mvc.localization.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.razor\\2.2.0\\microsoft.aspnetcore.mvc.razor.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.razor.extensions\\2.2.0\\microsoft.aspnetcore.mvc.razor.extensions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.razorpages\\2.2.0\\microsoft.aspnetcore.mvc.razorpages.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.taghelpers\\2.2.0\\microsoft.aspnetcore.mvc.taghelpers.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.mvc.viewfeatures\\2.2.0\\microsoft.aspnetcore.mvc.viewfeatures.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.razor\\2.2.0\\microsoft.aspnetcore.razor.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.razor.design\\2.2.0\\microsoft.aspnetcore.razor.design.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.razor.language\\2.2.0\\microsoft.aspnetcore.razor.language.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.razor.runtime\\2.2.0\\microsoft.aspnetcore.razor.runtime.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.responsecaching.abstractions\\2.2.0\\microsoft.aspnetcore.responsecaching.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.routing\\2.2.0\\microsoft.aspnetcore.routing.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.routing.abstractions\\2.2.0\\microsoft.aspnetcore.routing.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.aspnetcore.webutilities\\2.2.0\\microsoft.aspnetcore.webutilities.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\5.0.0\\microsoft.bcl.asyncinterfaces.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.csharp\\4.5.0\\microsoft.csharp.4.5.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\1.1.0\\microsoft.codeanalysis.analyzers.1.1.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.codeanalysis.common\\2.8.0\\microsoft.codeanalysis.common.2.8.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.codeanalysis.csharp\\2.8.0\\microsoft.codeanalysis.csharp.2.8.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.codeanalysis.razor\\2.2.0\\microsoft.codeanalysis.razor.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.data.sqlite.core\\7.0.1\\microsoft.data.sqlite.core.7.0.1.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.dotnet.platformabstractions\\2.1.0\\microsoft.dotnet.platformabstractions.2.1.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.entityframeworkcore\\6.0.10\\microsoft.entityframeworkcore.6.0.10.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\6.0.10\\microsoft.entityframeworkcore.abstractions.6.0.10.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\6.0.10\\microsoft.entityframeworkcore.analyzers.6.0.10.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\6.0.0\\microsoft.extensions.caching.abstractions.6.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.caching.memory\\6.0.1\\microsoft.extensions.caching.memory.6.0.1.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.configuration\\7.0.0\\microsoft.extensions.configuration.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\7.0.0\\microsoft.extensions.configuration.abstractions.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.configuration.fileextensions\\7.0.0\\microsoft.extensions.configuration.fileextensions.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.configuration.json\\7.0.0\\microsoft.extensions.configuration.json.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\7.0.0\\microsoft.extensions.dependencyinjection.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\7.0.0\\microsoft.extensions.dependencyinjection.abstractions.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.dependencymodel\\2.1.0\\microsoft.extensions.dependencymodel.2.1.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.fileproviders.abstractions\\7.0.0\\microsoft.extensions.fileproviders.abstractions.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.fileproviders.composite\\2.2.0\\microsoft.extensions.fileproviders.composite.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.fileproviders.physical\\7.0.0\\microsoft.extensions.fileproviders.physical.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.filesystemglobbing\\7.0.0\\microsoft.extensions.filesystemglobbing.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.hosting.abstractions\\2.2.0\\microsoft.extensions.hosting.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.http\\7.0.0\\microsoft.extensions.http.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.localization\\2.2.0\\microsoft.extensions.localization.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.localization.abstractions\\2.2.0\\microsoft.extensions.localization.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.logging\\7.0.0\\microsoft.extensions.logging.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\7.0.0\\microsoft.extensions.logging.abstractions.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.objectpool\\5.0.10\\microsoft.extensions.objectpool.5.0.10.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.options\\7.0.0\\microsoft.extensions.options.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.primitives\\7.0.0\\microsoft.extensions.primitives.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.extensions.webencoders\\2.2.0\\microsoft.extensions.webencoders.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.identitymodel.logging\\6.8.0\\microsoft.identitymodel.logging.6.8.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.identitymodel.protocols.wstrust\\6.8.0\\microsoft.identitymodel.protocols.wstrust.6.8.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.identitymodel.tokens\\6.8.0\\microsoft.identitymodel.tokens.6.8.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.identitymodel.tokens.saml\\6.8.0\\microsoft.identitymodel.tokens.saml.6.8.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.identitymodel.xml\\6.8.0\\microsoft.identitymodel.xml.6.8.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.net.http.headers\\2.2.0\\microsoft.net.http.headers.2.2.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.netcore.platforms\\5.0.0\\microsoft.netcore.platforms.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.netcore.targets\\1.1.0\\microsoft.netcore.targets.1.1.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.win32.systemevents\\5.0.0\\microsoft.win32.systemevents.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.win32.primitives\\4.3.0\\microsoft.win32.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.win32.registry\\5.0.0\\microsoft.win32.registry.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\microsoft.win32.systemevents\\7.0.0\\microsoft.win32.systemevents.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\netstandard.library\\1.6.1\\netstandard.library.1.6.1.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\newtonsoft.json\\13.0.2\\newtonsoft.json.13.0.2.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\newtonsoft.json.bson\\1.0.1\\newtonsoft.json.bson.1.0.1.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.native.system\\4.3.0\\runtime.native.system.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.native.system.data.sqlclient.sni\\4.7.0\\runtime.native.system.data.sqlclient.sni.4.7.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.native.system.io.compression\\4.3.0\\runtime.native.system.io.compression.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.native.system.net.http\\4.3.0\\runtime.native.system.net.http.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.native.system.security.cryptography.apple\\4.3.0\\runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple\\4.3.0\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.win-x64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\runtime.win-x86.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x86.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\sharpcompress\\0.32.2\\sharpcompress.0.32.2.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\sixlabors.fonts\\1.0.0-beta18\\sixlabors.fonts.1.0.0-beta18.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\sixlabors.imagesharp\\2.1.3\\sixlabors.imagesharp.2.1.3.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\sixlabors.imagesharp.drawing\\1.0.0-beta15\\sixlabors.imagesharp.drawing.1.0.0-beta15.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\sqlite.codefirst\\1.7.0.34\\sqlite.codefirst.1.7.0.34.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\sqlitepclraw.core\\2.1.2\\sqlitepclraw.core.2.1.2.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.appcontext\\4.3.0\\system.appcontext.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.codedom\\7.0.0\\system.codedom.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.collections\\4.3.0\\system.collections.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.collections.concurrent\\4.3.0\\system.collections.concurrent.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.collections.immutable\\6.0.0\\system.collections.immutable.6.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.componentmodel.annotations\\5.0.0\\system.componentmodel.annotations.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.configuration.configurationmanager\\7.0.0\\system.configuration.configurationmanager.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.console\\4.3.0\\system.console.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.data.sqlclient\\4.8.1\\system.data.sqlclient.4.8.1.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.diagnostics.debug\\4.3.0\\system.diagnostics.debug.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.drawing.common\\5.0.0\\system.drawing.common.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.diagnostics.diagnosticsource\\6.0.0\\system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.diagnostics.fileversioninfo\\4.3.0\\system.diagnostics.fileversioninfo.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.diagnostics.performancecounter\\7.0.0\\system.diagnostics.performancecounter.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.diagnostics.stacktrace\\4.3.0\\system.diagnostics.stacktrace.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.diagnostics.tools\\4.3.0\\system.diagnostics.tools.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.diagnostics.tracing\\4.3.0\\system.diagnostics.tracing.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.drawing.common\\7.0.0\\system.drawing.common.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.dynamic.runtime\\4.3.0\\system.dynamic.runtime.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.formats.asn1\\5.0.0\\system.formats.asn1.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.globalization.calendars\\4.3.0\\system.globalization.calendars.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.globalization.extensions\\4.3.0\\system.globalization.extensions.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.io.compression\\4.3.0\\system.io.compression.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.io.compression.zipfile\\4.3.0\\system.io.compression.zipfile.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.io.filesystem\\4.3.0\\system.io.filesystem.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.io.filesystem.primitives\\4.3.0\\system.io.filesystem.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.linq\\4.3.0\\system.linq.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.linq.expressions\\4.3.0\\system.linq.expressions.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.management\\7.0.0\\system.management.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.memory\\4.5.3\\system.memory.4.5.3.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.net.http\\4.3.0\\system.net.http.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.net.primitives\\4.3.0\\system.net.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.net.sockets\\4.3.0\\system.net.sockets.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.numerics.vectors\\4.5.0\\system.numerics.vectors.4.5.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.objectmodel\\4.3.0\\system.objectmodel.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.private.servicemodel\\4.10.0\\system.private.servicemodel.4.10.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.reflection\\4.3.0\\system.reflection.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.reflection.dispatchproxy\\4.7.1\\system.reflection.dispatchproxy.4.7.1.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.reflection.emit\\4.3.0\\system.reflection.emit.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.reflection.emit.ilgeneration\\4.3.0\\system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.reflection.emit.lightweight\\4.7.0\\system.reflection.emit.lightweight.4.7.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.reflection.extensions\\4.3.0\\system.reflection.extensions.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.reflection.metadata\\1.4.2\\system.reflection.metadata.1.4.2.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.reflection.primitives\\4.3.0\\system.reflection.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.reflection.typeextensions\\4.3.0\\system.reflection.typeextensions.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.resources.resourcemanager\\4.3.0\\system.resources.resourcemanager.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.runtime\\4.3.0\\system.runtime.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.runtime.extensions\\4.3.0\\system.runtime.extensions.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.runtime.handles\\4.3.0\\system.runtime.handles.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.runtime.interopservices\\4.3.0\\system.runtime.interopservices.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.runtime.interopservices.runtimeinformation\\4.3.0\\system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.runtime.numerics\\4.3.0\\system.runtime.numerics.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.cryptography.algorithms\\4.3.0\\system.security.cryptography.algorithms.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.cryptography.cng\\5.0.0\\system.security.cryptography.cng.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.cryptography.csp\\4.3.0\\system.security.cryptography.csp.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.cryptography.encoding\\4.3.0\\system.security.cryptography.encoding.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.cryptography.openssl\\4.3.0\\system.security.cryptography.openssl.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.cryptography.pkcs\\5.0.0\\system.security.cryptography.pkcs.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.cryptography.primitives\\4.3.0\\system.security.cryptography.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.cryptography.protecteddata\\7.0.0\\system.security.cryptography.protecteddata.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.cryptography.x509certificates\\4.3.0\\system.security.cryptography.x509certificates.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.cryptography.xml\\5.0.0\\system.security.cryptography.xml.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.permissions\\5.0.0\\system.security.permissions.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.permissions\\7.0.0\\system.security.permissions.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.security.principal.windows\\5.0.0\\system.security.principal.windows.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.servicemodel.duplex\\4.10.0\\system.servicemodel.duplex.4.10.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.servicemodel.federation\\4.10.0\\system.servicemodel.federation.4.10.0.nupkg.sha512",
@ -46,14 +203,24 @@
"C:\\Users\\Think\\.nuget\\packages\\system.servicemodel.primitives\\4.10.0\\system.servicemodel.primitives.4.10.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.servicemodel.security\\4.10.0\\system.servicemodel.security.4.10.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.text.encoding\\4.3.0\\system.text.encoding.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.text.encoding.extensions\\4.3.0\\system.text.encoding.extensions.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.text.encodings.web\\7.0.0\\system.text.encodings.web.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.text.json\\7.0.0\\system.text.json.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.text.regularexpressions\\4.3.0\\system.text.regularexpressions.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.threading\\4.3.0\\system.threading.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.threading.tasks\\4.3.0\\system.threading.tasks.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.threading.tasks.extensions\\4.3.0\\system.threading.tasks.extensions.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.windows.extensions\\5.0.0\\system.windows.extensions.5.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.1\\system.threading.tasks.extensions.4.5.1.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.threading.tasks.parallel\\4.3.0\\system.threading.tasks.parallel.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.threading.thread\\4.3.0\\system.threading.thread.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.threading.timer\\4.3.0\\system.threading.timer.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.valuetuple\\4.3.0\\system.valuetuple.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.windows.extensions\\7.0.0\\system.windows.extensions.7.0.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.xml.readerwriter\\4.3.0\\system.xml.readerwriter.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.xml.xmldocument\\4.3.0\\system.xml.xmldocument.4.3.0.nupkg.sha512"
"C:\\Users\\Think\\.nuget\\packages\\system.xml.xdocument\\4.3.0\\system.xml.xdocument.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.xml.xmldocument\\4.3.0\\system.xml.xmldocument.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.xml.xpath\\4.3.0\\system.xml.xpath.4.3.0.nupkg.sha512",
"C:\\Users\\Think\\.nuget\\packages\\system.xml.xpath.xdocument\\4.3.0\\system.xml.xpath.xdocument.4.3.0.nupkg.sha512"
],
"logs": []
}

@ -57,6 +57,18 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="uiPanel2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="uiLine1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="uiLabel1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="pictureBox1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
@ -1342,7 +1354,19 @@
lM1c2IqRlypQS16X7Pu2aQ6lyiiisigooooA/9k=
</value>
</data>
<metadata name="uiPanel1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="uiBarChart1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="lblTime.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

@ -10,6 +10,9 @@
"name": "Microsoft.WindowsDesktop.App",
"version": "6.0.0"
}
]
],
"configProperties": {
"System.Reflection.NullabilityInfoContext.IsSupported": true
}
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save