解决linux环境下代码生成路径问题

This commit is contained in:
izory 2021-09-23 17:31:46 +08:00
parent f44393b4b9
commit cf9d8ac624
5 changed files with 125 additions and 85 deletions

View File

@ -3,15 +3,13 @@
## 🍟概述 ## 🍟概述
* 本项目适合有一定NetCore和 vue基础的开发人员 * 本项目适合有一定NetCore和 vue基础的开发人员
* 基于.NET 5实现的通用权限管理平台RBAC模式。整合最新技术高效快速开发前后端分离模式开箱即用。 * 基于.NET 5实现的通用权限管理平台RBAC模式。整合最新技术高效快速开发前后端分离模式开箱即用。
* 模块化架构设计,层次清晰,业务层推荐写到单独模块,框架升级不影响业务! * 代码量少、学习简单、通俗易懂、功能强大、易扩展、轻量级让web开发更快速、简单高效解决70%的重复工作,专注您的业务,轻松开发从现在开始!
* 代码量少、通俗易懂、功能强大、易扩展,轻松开发从现在开始!
* 前端采用Vue2.0、Element UI。 * 前端采用Vue2.0、Element UI。
* 后端采用Net5、Sqlsugar、MySQL。 * 后端采用Net5、Sqlsugar、MySQL。
* 权限认证使用Jwt支持多终端认证系统。 * 权限认证使用Jwt支持多终端认证系统。
* 支持加载动态权限菜单,多方式轻松权限控制 * 支持加载动态权限菜单,多方式轻松权限控制
* 基于若依vue分离版本(java版本)修改
~ 如果对您有帮助,您可以点右上角 “Star” 收藏一下 获取第一时间更新,谢谢!~ ~ 如果对您有帮助,您可以点右上角 “Star” 收藏一下 这样作者才有继续免费下去的动力,谢谢!~
## 🍿在线体验 ## 🍿在线体验
体验地址http://www.izhaorui.cn:8080/ 体验地址http://www.izhaorui.cn:8080/
@ -59,7 +57,30 @@ Vue版前端技术栈 基于vue、vuex、vue-router 、vue-cli 、axios 和 e
13. [X] 在线构建器拖动表单元素生成相应的VUE代码。 13. [X] 在线构建器拖动表单元素生成相应的VUE代码。
14. [X] 任务系统基于Quartz.NET定时任务执行。 14. [X] 任务系统基于Quartz.NET定时任务执行。
15. [X] 文章管理:可以写文章记录。 15. [X] 文章管理:可以写文章记录。
16. [X] 代码生成:可以一键生成前后端代码。 16. [X] 代码生成:可以一键生成前后端代码(.cs、.vue、.js),自定义配置前端展示控件、让开发更快捷高效。
## 项目结构
ZRAdmin解决方案包含
Infrastructure[基础类库]包框架的核心组件包含一系列快速开发中经常用到的Utility辅助工具功能部分核心功能的实现
ZR.Service[服务层类库]提供WebApi接口调用
ZR.Tasks[定时任务类库]:提供项目定时任务实现功能;
ZR.Repository[仓库层类库]:方便提供有执行存储过程的操作;
ZR.Model[实体层类库],提供项目中的数据库表、数据传输对象;
ZR.CodeGenerator[代码生成功能],包含代码生成的模板、方法、代码生成的下载。
ZR.Admin.WebApi[webapi接口]为Vue版或其他三方系统提供接口服务。
ZR.Vue[前端UI]vue版本UI层。
DataBase是最新数据库备份文件目前支持MS SQL Server和MySql。
## 🍎演示图 ## 🍎演示图
@ -104,6 +125,7 @@ Vue版前端技术栈 基于vue、vuex、vue-router 、vue-cli 、axios 和 e
2. 后台系统无需任何二次开发,直接发布即可使用 2. 后台系统无需任何二次开发,直接发布即可使用
3. 前台与后台系统分离,分别为不同的系统(域名可独立) 3. 前台与后台系统分离,分别为不同的系统(域名可独立)
4. 全局异常统一处理 4. 全局异常统一处理
5. 自定义的代码生成功能
## 💐 特别鸣谢 ## 💐 特别鸣谢
- 👉Ruoyi.vue[Ruoyi](http://www.ruoyi.vip/) - 👉Ruoyi.vue[Ruoyi](http://www.ruoyi.vip/)

View File

@ -8,6 +8,7 @@ using Microsoft.Extensions.Hosting;
using SqlSugar; using SqlSugar;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using ZR.Admin.WebApi.Extensions; using ZR.Admin.WebApi.Extensions;
using ZR.Admin.WebApi.Filters; using ZR.Admin.WebApi.Filters;
using ZR.CodeGenerator; using ZR.CodeGenerator;
@ -83,8 +84,8 @@ namespace ZR.Admin.WebApi.Controllers
{ {
throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空"); throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空");
} }
dto.ZipPath = WebHostEnvironment.WebRootPath + "\\Generatecode\\"; dto.ZipPath = Path.Combine(WebHostEnvironment.WebRootPath, "Generatecode");
dto.GenCodePath = dto.ZipPath + DateTime.Now.ToString("yyyyMMdd") + "\\"; dto.GenCodePath = Path.Combine(dto.ZipPath, DateTime.Now.ToString("yyyyMMdd"));
var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId); var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId);
var getTableColumn = GenTableColumnService.GenTableColumns(dto.TableId); var getTableColumn = GenTableColumnService.GenTableColumns(dto.TableId);
@ -168,8 +169,8 @@ namespace ZR.Admin.WebApi.Controllers
{ {
GenTable genTable = new() GenTable genTable = new()
{ {
BaseNameSpace = "ZR.", BaseNameSpace = "ZR.",//导入默认命名空间前缀
ModuleName = "bus", ModuleName = "bus",//导入默认模块名
ClassName = CodeGeneratorTool.GetClassName(tableName), ClassName = CodeGeneratorTool.GetClassName(tableName),
BusinessName = CodeGeneratorTool.GetClassName(tableName), BusinessName = CodeGeneratorTool.GetClassName(tableName),
FunctionAuthor = ConfigUtils.Instance.GetConfig(GenConstants.Gen_author), FunctionAuthor = ConfigUtils.Instance.GetConfig(GenConstants.Gen_author),

View File

@ -23,8 +23,8 @@
<!--archiveAboveSize每个日志文件大小的最大值单位字节主日志文件超过大小超过该值时会将文件内容写入滚动日志并清空主日志文件内容--> <!--archiveAboveSize每个日志文件大小的最大值单位字节主日志文件超过大小超过该值时会将文件内容写入滚动日志并清空主日志文件内容-->
<!--${basedir}表示当前应用程序域所在的根目录--> <!--${basedir}表示当前应用程序域所在的根目录-->
<target name="allfile" xsi:type="File" <target name="allfile" xsi:type="File"
fileName="${basedir}/adminlogs/nlog-all-${shortdate}.log" fileName="${basedir}/adminlogs/all.log"
archiveFileName="${basedir}/adminlogs/all/all.{###}.txt" archiveFileName="${basedir}/adminlogs/all.{###}.txt"
archiveAboveSize="20000000" archiveAboveSize="20000000"
maxArchiveFiles="30" maxArchiveFiles="30"
keepFileOpen="false" keepFileOpen="false"

View File

@ -4,6 +4,8 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using ZR.CodeGenerator.CodeGenerator; using ZR.CodeGenerator.CodeGenerator;
using ZR.CodeGenerator.Model; using ZR.CodeGenerator.Model;
using ZR.Model.System.Generate; using ZR.Model.System.Generate;
@ -147,8 +149,11 @@ namespace ZR.CodeGenerator
if (dto.genFiles.Contains(6)) if (dto.genFiles.Contains(6))
{ {
Tuple<string, string> tuple = GenerateVueViews(replaceDto, dto); Tuple<string, string> tuple = GenerateVueViews(replaceDto, dto);
Tuple<string, string> tuple_1 = GenerateVueJs(replaceDto, dto);
genPathList.Add(tuple.Item1); genPathList.Add(tuple.Item1);
genPathList.Add(tuple_1.Item1);
WriteAndSave(tuple.Item1, tuple.Item2); WriteAndSave(tuple.Item1, tuple.Item2);
WriteAndSave(tuple_1.Item1, tuple_1.Item2);
} }
return genPathList; return genPathList;
//GenerateIRepository(modelTypeName, modelTypeDesc, keyTypeName, ifExsitedCovered); //GenerateIRepository(modelTypeName, modelTypeDesc, keyTypeName, ifExsitedCovered);
@ -167,13 +172,11 @@ namespace ZR.CodeGenerator
{ {
var parentPath = generateDto.GenCodePath; var parentPath = generateDto.GenCodePath;
//../ZR.Model //../ZR.Model
var servicesPath = parentPath + "\\" + _option.ModelsNamespace + "\\Models\\"; var servicesPath = Path.Combine(parentPath, _option.ModelsNamespace, "Models");
if (!Directory.Exists(servicesPath)) Console.WriteLine("创建文件夹" + servicesPath);
{ CreateDirectory(servicesPath);
Directory.CreateDirectory(servicesPath);
}
// ../ZR.Model/Models/User.cs // ../ZR.Model/Models/User.cs
var fullPath = servicesPath + replaceDto.ModelTypeName + ".cs"; var fullPath = Path.Combine(servicesPath, replaceDto.ModelTypeName + ".cs");
if (File.Exists(fullPath) && !generateDto.coverd) if (File.Exists(fullPath) && !generateDto.coverd)
return Tuple.Create(fullPath, ""); return Tuple.Create(fullPath, "");
@ -185,7 +188,7 @@ namespace ZR.CodeGenerator
.Replace("{KeyTypeName}", replaceDto.PKName) .Replace("{KeyTypeName}", replaceDto.PKName)
.Replace("{PropertyName}", replaceDto.ModelProperty) .Replace("{PropertyName}", replaceDto.ModelProperty)
.Replace("{TableName}", replaceDto.TableName); .Replace("{TableName}", replaceDto.TableName);
WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content); return Tuple.Create(fullPath, content);
} }
@ -197,13 +200,10 @@ namespace ZR.CodeGenerator
private static Tuple<string, string> GenerateInputDto(ReplaceDto replaceDto, GenerateDto generateDto) private static Tuple<string, string> GenerateInputDto(ReplaceDto replaceDto, GenerateDto generateDto)
{ {
var parentPath = generateDto.GenCodePath; var parentPath = generateDto.GenCodePath;
var servicesPath = parentPath + "\\" + _option.ModelsNamespace + "\\Dto\\"; var servicesPath = Path.Combine(parentPath, _option.ModelsNamespace, "Dto");
if (!Directory.Exists(servicesPath)) CreateDirectory(servicesPath);
{
Directory.CreateDirectory(servicesPath);
}
// ../ZR.Model/Dto/User.cs // ../ZR.Model/Dto/User.cs
var fullPath = servicesPath + replaceDto.ModelTypeName + "Dto.cs"; var fullPath = Path.Combine(servicesPath, $"{replaceDto.ModelTypeName}Dto.cs");
if (File.Exists(fullPath) && !generateDto.coverd) if (File.Exists(fullPath) && !generateDto.coverd)
return Tuple.Create(fullPath, ""); ; return Tuple.Create(fullPath, ""); ;
@ -215,7 +215,7 @@ namespace ZR.CodeGenerator
.Replace("{PropertyName}", replaceDto.InputDtoProperty) .Replace("{PropertyName}", replaceDto.InputDtoProperty)
.Replace("{QueryProperty}", replaceDto.QueryProperty) .Replace("{QueryProperty}", replaceDto.QueryProperty)
.Replace("{ModelTypeName}", replaceDto.ModelTypeName); .Replace("{ModelTypeName}", replaceDto.ModelTypeName);
WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content); return Tuple.Create(fullPath, content);
} }
#endregion #endregion
@ -230,24 +230,20 @@ namespace ZR.CodeGenerator
private static Tuple<string, string> GenerateRepository(ReplaceDto replaceDto, GenerateDto generateDto) private static Tuple<string, string> GenerateRepository(ReplaceDto replaceDto, GenerateDto generateDto)
{ {
var parentPath = generateDto.GenCodePath; var parentPath = generateDto.GenCodePath;
var repositoryPath = parentPath + "\\" + _option.RepositoriesNamespace + "\\Repositories\\"; var repositoryPath = Path.Combine(parentPath, _option.RepositoriesNamespace, "Repositories");
if (!Directory.Exists(repositoryPath)) CreateDirectory(repositoryPath);
{
Directory.CreateDirectory(repositoryPath); var fullPath = Path.Combine(repositoryPath, $"{replaceDto.ModelTypeName}Repository.cs");
}
var fullPath = repositoryPath + "\\" + replaceDto.ModelTypeName + "Repository.cs";
if (File.Exists(fullPath) && !generateDto.coverd) if (File.Exists(fullPath) && !generateDto.coverd)
return Tuple.Create(fullPath, ""); return Tuple.Create(fullPath, "");
var content = ReadTemplate("RepositoryTemplate.txt"); var content = ReadTemplate("RepositoryTemplate.txt");
content = content.Replace("{ModelsNamespace}", _option.ModelsNamespace) content = content.Replace("{ModelsNamespace}", _option.ModelsNamespace)
//.Replace("{IRepositoriesNamespace}", _option.IRepositoriesNamespace)
.Replace("{RepositoriesNamespace}", _option.RepositoriesNamespace) .Replace("{RepositoriesNamespace}", _option.RepositoriesNamespace)
.Replace("{ModelTypeName}", replaceDto.ModelTypeName) .Replace("{ModelTypeName}", replaceDto.ModelTypeName)
.Replace("{TableNameDesc}", replaceDto.TableDesc) .Replace("{TableNameDesc}", replaceDto.TableDesc)
.Replace("{TableName}", replaceDto.TableName); .Replace("{TableName}", replaceDto.TableName);
WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content); return Tuple.Create(fullPath, content);
} }
@ -262,12 +258,10 @@ namespace ZR.CodeGenerator
private static Tuple<string, string> GenerateIService(ReplaceDto replaceDto, GenerateDto generateDto) private static Tuple<string, string> GenerateIService(ReplaceDto replaceDto, GenerateDto generateDto)
{ {
var parentPath = generateDto.GenCodePath; var parentPath = generateDto.GenCodePath;
var iServicesPath = parentPath + "\\" + _option.IServicsNamespace + "\\Business\\IBusService\\"; var iServicesPath = Path.Combine(parentPath, _option.IServicsNamespace, "Business", "IBusService");
if (!Directory.Exists(iServicesPath)) CreateDirectory(iServicesPath);
{
Directory.CreateDirectory(iServicesPath); var fullPath = Path.Combine(iServicesPath, $"I{replaceDto.ModelTypeName}Service.cs");
}
var fullPath = $"{iServicesPath}\\I{replaceDto.ModelTypeName}Service.cs";
Console.WriteLine(fullPath); Console.WriteLine(fullPath);
if (File.Exists(fullPath) && !generateDto.coverd) if (File.Exists(fullPath) && !generateDto.coverd)
return Tuple.Create(fullPath, ""); return Tuple.Create(fullPath, "");
@ -279,7 +273,6 @@ namespace ZR.CodeGenerator
.Replace("{RepositoriesNamespace}", _option.RepositoriesNamespace) .Replace("{RepositoriesNamespace}", _option.RepositoriesNamespace)
.Replace("{ModelTypeName}", replaceDto.ModelTypeName); .Replace("{ModelTypeName}", replaceDto.ModelTypeName);
WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content); return Tuple.Create(fullPath, content);
} }
@ -289,12 +282,9 @@ namespace ZR.CodeGenerator
private static Tuple<string, string> GenerateService(ReplaceDto replaceDto, GenerateDto generateDto) private static Tuple<string, string> GenerateService(ReplaceDto replaceDto, GenerateDto generateDto)
{ {
var parentPath = generateDto.GenCodePath; var parentPath = generateDto.GenCodePath;
var servicesPath = parentPath + "\\" + _option.ServicesNamespace + "\\Business\\"; var servicesPath = Path.Combine(parentPath, _option.ServicesNamespace, "Business");
if (!Directory.Exists(servicesPath)) CreateDirectory(servicesPath);
{ var fullPath = Path.Combine(servicesPath, $"{replaceDto.ModelTypeName}Service.cs");
Directory.CreateDirectory(servicesPath);
}
var fullPath = servicesPath + replaceDto.ModelTypeName + "Service.cs";
Console.WriteLine(fullPath); Console.WriteLine(fullPath);
if (File.Exists(fullPath) && !generateDto.coverd) if (File.Exists(fullPath) && !generateDto.coverd)
return Tuple.Create(fullPath, ""); return Tuple.Create(fullPath, "");
@ -308,7 +298,6 @@ namespace ZR.CodeGenerator
.Replace("{ServicesNamespace}", _option.ServicesNamespace) .Replace("{ServicesNamespace}", _option.ServicesNamespace)
.Replace("{ModelTypeName}", replaceDto.ModelTypeName); .Replace("{ModelTypeName}", replaceDto.ModelTypeName);
WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content); return Tuple.Create(fullPath, content);
} }
@ -321,12 +310,10 @@ namespace ZR.CodeGenerator
private static Tuple<string, string> GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto) private static Tuple<string, string> GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto)
{ {
var parentPath = generateDto.GenCodePath; var parentPath = generateDto.GenCodePath;
var servicesPath = parentPath + "\\" + _option.ApiControllerNamespace + "\\Controllers\\business\\"; var servicesPath = Path.Combine(parentPath, _option.ApiControllerNamespace, "Controllers", "business");
if (!Directory.Exists(servicesPath)) CreateDirectory(servicesPath);
{
Directory.CreateDirectory(servicesPath); var fullPath = Path.Combine(servicesPath, $"{replaceDto.ModelTypeName}Controller.cs");
}
var fullPath = servicesPath + replaceDto.ModelTypeName + "Controller.cs";
if (File.Exists(fullPath) && !generateDto.coverd) if (File.Exists(fullPath) && !generateDto.coverd)
return Tuple.Create(fullPath, ""); return Tuple.Create(fullPath, "");
var content = ReadTemplate("ControllersTemplate.txt"); var content = ReadTemplate("ControllersTemplate.txt");
@ -341,7 +328,7 @@ namespace ZR.CodeGenerator
.Replace("{UpdateColumn}", replaceDto.UpdateColumn) .Replace("{UpdateColumn}", replaceDto.UpdateColumn)
.Replace("{InsertColumn}", replaceDto.InsertColumn) .Replace("{InsertColumn}", replaceDto.InsertColumn)
.Replace("{PKCsharpType}", replaceDto.PKType); .Replace("{PKCsharpType}", replaceDto.PKType);
WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content); return Tuple.Create(fullPath, content);
} }
#endregion #endregion
@ -351,14 +338,11 @@ namespace ZR.CodeGenerator
/// 生成Vue页面 /// 生成Vue页面
private static Tuple<string, string> GenerateVueViews(ReplaceDto replaceDto, GenerateDto generateDto) private static Tuple<string, string> GenerateVueViews(ReplaceDto replaceDto, GenerateDto generateDto)
{ {
//var parentPath = "..\\CodeGenerate";//若要生成到项目中将路径改成 “..\\ZR.Vue\\src” var parentPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src");
var parentPath = $"{generateDto.GenCodePath}\\ZR.Vue\\src"; var servicesPath = Path.Combine(parentPath, "views", FirstLowerCase(replaceDto.ModelTypeName));
var servicesPath = parentPath + "\\views\\" + FirstLowerCase(replaceDto.ModelTypeName); CreateDirectory(servicesPath);
if (!Directory.Exists(servicesPath))
{ var fullPath = Path.Combine(servicesPath, "index.vue");
Directory.CreateDirectory(servicesPath);
}
var fullPath = servicesPath + "\\" + "index.vue";
if (File.Exists(fullPath) && !generateDto.coverd) if (File.Exists(fullPath) && !generateDto.coverd)
return Tuple.Create(fullPath, ""); ; return Tuple.Create(fullPath, ""); ;
@ -376,21 +360,25 @@ namespace ZR.CodeGenerator
.Replace("{primaryKey}", FirstLowerCase(replaceDto.PKName)) .Replace("{primaryKey}", FirstLowerCase(replaceDto.PKName))
.Replace("{MountedMethod}", replaceDto.MountedMethod) .Replace("{MountedMethod}", replaceDto.MountedMethod)
.Replace("{VueViewEditFormRuleContent}", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则 .Replace("{VueViewEditFormRuleContent}", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则
WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content);
}
public static Tuple<string, string> GenerateVueJs(ReplaceDto replaceDto, GenerateDto generateDto)
{
//api js //api js
servicesPath = parentPath + "\\api\\"; var parentPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src");
Directory.CreateDirectory(servicesPath); string servicesPath = Path.Combine(parentPath, "api");
fullPath = servicesPath + "\\" + FirstLowerCase(replaceDto.ModelTypeName) + ".js"; CreateDirectory(servicesPath);
string fullPath = Path.Combine(servicesPath, FirstLowerCase(replaceDto.ModelTypeName) + ".js");
if (File.Exists(fullPath) && !generateDto.coverd) if (File.Exists(fullPath) && !generateDto.coverd)
return Tuple.Create(fullPath, ""); return Tuple.Create(fullPath, "");
content = ReadTemplate("VueJsTemplate.txt"); var content = ReadTemplate("VueJsTemplate.txt");
content = content content = content
.Replace("{ModelTypeName}", replaceDto.ModelTypeName) .Replace("{ModelTypeName}", replaceDto.ModelTypeName)
.Replace("{ModelTypeDesc}", replaceDto.TableDesc); .Replace("{ModelTypeDesc}", replaceDto.TableDesc);
WriteAndSave(fullPath, content);
return Tuple.Create(fullPath, content); return Tuple.Create(fullPath, content);
} }
@ -451,8 +439,9 @@ namespace ZR.CodeGenerator
private static string ReadTemplate(string templateName) private static string ReadTemplate(string templateName)
{ {
string path = Environment.CurrentDirectory; string path = Environment.CurrentDirectory;
//var path = AppDomain.CurrentDomain.BaseDirectory; string fullName = $"{path}/wwwroot/CodeGenTemplate/{templateName}";
string fullName = $"{path}\\wwwroot\\CodeGenTemplate\\{templateName}";
Console.WriteLine("开始读取模板=" + fullName);
string temp = fullName; string temp = fullName;
string str = ""; string str = "";
if (!File.Exists(temp)) if (!File.Exists(temp))
@ -465,7 +454,10 @@ namespace ZR.CodeGenerator
sr = new StreamReader(temp); sr = new StreamReader(temp);
str = sr.ReadToEnd(); // 读取文件 str = sr.ReadToEnd(); // 读取文件
} }
catch { } catch (Exception ex)
{
Console.WriteLine($"读取模板出错了{ex.Message}");
}
sr?.Close(); sr?.Close();
sr?.Dispose(); sr?.Dispose();
return str; return str;
@ -478,7 +470,8 @@ namespace ZR.CodeGenerator
/// <param name="content"></param> /// <param name="content"></param>
private static void WriteAndSave(string fileName, string content) private static void WriteAndSave(string fileName, string content)
{ {
Console.WriteLine(fileName); fileName = fileName.Replace("\\", "/").Replace("//", "/");
Console.WriteLine("写入文件:" + fileName);
try try
{ {
//实例化一个文件流--->与写入文件相关联 //实例化一个文件流--->与写入文件相关联
@ -499,8 +492,34 @@ namespace ZR.CodeGenerator
} }
} }
#endregion /// <summary>
/// 创建文件夹
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static bool CreateDirectory(string path)
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
path = path.Replace("\\", "/").Replace("//", "/");
}
try
{
if (!Directory.Exists(path))
{
DirectoryInfo info = Directory.CreateDirectory(path);
Console.WriteLine("不存在创建文件夹" + info);
}
}
catch (Exception ex)
{
Console.WriteLine($"创建文件夹出错了,{ex.Message}");
return false;
}
return true;
}
#endregion
/// <summary> /// <summary>
/// 初始化列属性字段数据 /// 初始化列属性字段数据
@ -581,24 +600,21 @@ namespace ZR.CodeGenerator
//生成压缩包 //生成压缩包
string zipReturnFileName = "ZR." + DateTime.Now.ToString("yyyyMMddHHmmss") + ".zip"; string zipReturnFileName = "ZR." + DateTime.Now.ToString("yyyyMMddHHmmss") + ".zip";
if (!Directory.Exists(dto.GenCodePath)) CreateDirectory(dto.GenCodePath);
{ string zipFileName = Path.Combine(dto.ZipPath, zipReturnFileName);
Directory.CreateDirectory(dto.GenCodePath);
}
string zipFileName = dto.ZipPath + "\\" + zipReturnFileName;
if (File.Exists(zipFileName)) if (File.Exists(zipFileName))
{ {
File.Delete(zipFileName); File.Delete(zipFileName);
} }
FileHelper.ZipFileDirectory(dto.GenCodePath, zipFileName, 7, "", "", "*.*"); FileHelper.ZipFileDirectory(dto.GenCodePath, zipFileName, 7, "", "", "*.*");
//FileHelper.DeleteDirectory(dto.GenCodePath); FileHelper.DeleteDirectory(dto.GenCodePath);
dto.ZipFileName = zipReturnFileName; dto.ZipFileName = zipReturnFileName;
return zipReturnFileName; return zipReturnFileName;
} }
catch (Exception ex) catch (Exception ex)
{ {
Console.WriteLine(ex.Message); Console.WriteLine("压缩文件出错。" + ex.Message);
return ""; return "";
} }
} }

View File

@ -103,7 +103,7 @@ namespace ZR.CodeGenerator
{ {
strDirectory += Path.DirectorySeparatorChar; strDirectory += Path.DirectorySeparatorChar;
} }
Console.WriteLine("strDirectory=" + strDirectory);
Crc32 crc = new Crc32(); Crc32 crc = new Crc32();
string[] filenames = Directory.GetFileSystemEntries(strDirectory, filetype); string[] filenames = Directory.GetFileSystemEntries(strDirectory, filetype);
@ -112,8 +112,9 @@ namespace ZR.CodeGenerator
if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件 if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
{ {
string pPath = parentPath; string pPath = parentPath;
pPath += file.Substring(file.LastIndexOf("\\") + 1); pPath += file[(file.LastIndexOf("/") + 1)..];
pPath += "\\"; pPath += "/";
Console.WriteLine("递归路径" + pPath);
ZipSetp(file, s, pPath, filetype); ZipSetp(file, s, pPath, filetype);
} }
else // 否则直接压缩文件 else // 否则直接压缩文件
@ -123,7 +124,7 @@ namespace ZR.CodeGenerator
{ {
byte[] buffer = new byte[fs.Length]; byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length); fs.Read(buffer, 0, buffer.Length);
string fileName = parentPath + file[(file.LastIndexOf("\\") + 1)..]; string fileName = parentPath + file[(file.LastIndexOf("/") + 1)..];
ZipEntry entry = new ZipEntry(fileName); ZipEntry entry = new ZipEntry(fileName);
entry.DateTime = DateTime.Now; entry.DateTime = DateTime.Now;
entry.Size = fs.Length; entry.Size = fs.Length;