当前位置: 首页 > news >正文

自动化发布 iis网站/百度股市行情上证指数

自动化发布 iis网站,百度股市行情上证指数,网站建设的详细步骤,自己做的网站怎么设置关键词解决各种漏传 资源 / 代码 的疑难杂症. 因为Unity比较特殊的meta文件系统, 忘传漏传文件在后期可能导致重大引用丢失, 将SVN整合进项目势在必行. TortoiseSVN自带了命令行工具, 安装的时候选择了的话就能用了 直接代码: using UnityEngine; using UnityEditor; using System.Di…

  解决各种漏传 资源 / 代码 的疑难杂症.

  因为Unity比较特殊的meta文件系统, 忘传漏传文件在后期可能导致重大引用丢失, 将SVN整合进项目势在必行. TortoiseSVN自带了命令行工具, 安装的时候选择了的话就能用了

直接代码:

using UnityEngine;
using UnityEditor;
using System.Diagnostics;
using System.Collections.Generic;namespace MyEditor
{public class UnitySVN{private const string Add_CMD = "add";private const string COMMIT_CMD = "commit";private const string UPDATE_CMD = "update";private const string REVERT_CMD = "revert";private static System.Text.StringBuilder ms_sb = new System.Text.StringBuilder();#region MenuItem Funcs[MenuItem("Assets/SVN/Update", false, 1001)]public static void SVN_Update(){var paths = GetAssetPathList();if(paths.Count > 0){Update(paths: paths.ToArray());}}[MenuItem("Assets/SVN/Revert", false, 1002)]public static void SVN_Revert(){var paths = GetAssetPathList();if(paths.Count > 0){Revert(paths.ToArray());}}[MenuItem("Assets/SVN/Commit", false, 1003)]public static void SVN_Commit(){var paths = GetAssetPathList();if(paths.Count > 0){Commit("UnitySVN Upload", true, paths.ToArray());}}#endregion#region Wrapped Funcs// addpublic static void Add(params string[] paths){WrappedCommadn(Add_CMD, paths, false);}// updatepublic static void Update(params string[] paths){WrappedCommadn(UPDATE_CMD, paths, false);SaveAndRefresh();}// revertpublic static void Revert(params string[] paths){WrappedCommadn(REVERT_CMD, paths, false);SaveAndRefresh();}// add->update->commitpublic static void Commit(string log, bool add = true, params string[] paths){if(add){Add(paths);}Update(paths);string extMsg = log ?? string.Empty;WrappedCommadn(command: COMMIT_CMD, paths: paths, newThread: true, extCommand: "/logmsg:\"Auto Upload : " + (extMsg) + "\"");}/// <summary>/// Wrap SVN Command/// </summary>/// <param name="command"></param>/// <param name="path"></param>/// <param name="extCommand"></param>public static void WrappedCommadn(string command, string[] paths, bool newThread = false, string extCommand = null){if(paths == null || paths.Length == 0){return;}ms_sb.Append(paths[0]);for(int i = 1; i < paths.Length; i++){ms_sb.Append("*");ms_sb.Append(paths[i]);}string cmd = "/c tortoiseproc.exe /command:{0} /path:\"{1}\" {2} /closeonend 2";string pathString = ms_sb.ToString();var commandString = string.Format(cmd, command, pathString, extCommand ?? string.Empty);ProcessStartInfo info = new ProcessStartInfo("cmd.exe", commandString);info.WindowStyle = ProcessWindowStyle.Hidden;if(newThread){System.Threading.ThreadPool.QueueUserWorkItem((_obj) =>{RunProcess(info);});}else{RunProcess(info);}}#endregion#region Help Funcspublic static HashSet<string> GetAssets(){HashSet<string> allAssets = new HashSet<string>();const string BaseFolder = "Assets";foreach(var obj in Selection.objects){var assetPath = AssetDatabase.GetAssetPath(obj);List<string> fullDirs = FullDirectories(assetPath, BaseFolder);allAssets.UnionWith(fullDirs);var dps = AssetDatabase.GetDependencies(assetPath, true);foreach(var dp in dps){if(dp != assetPath){List<string> dpsDirs = FullDirectories(dp, BaseFolder);allAssets.UnionWith(dpsDirs);}}}return allAssets;}public static List<string> GetAssetPathList(){var path = new List<string>(GetAssets());path.Sort((_l, _r) =>{if(_l.Length > _r.Length){return 1;}if(_l.Length < _r.Length){return -1;}return 0;});return path;}public static void SaveAndRefresh(){AssetDatabase.SaveAssets();AssetDatabase.Refresh();}public static List<string> FullDirectories(string path, string baseFolder){List<string> retVal = new List<string>();retVal.Add(path);retVal.Add(path + ".meta");baseFolder = baseFolder.Replace("\\", "/");var dir = System.IO.Path.GetDirectoryName(path).Replace("\\", "/");while(string.IsNullOrEmpty(dir) == false && dir != baseFolder){retVal.Add(dir);retVal.Add(dir + ".meta");dir = System.IO.Path.GetDirectoryName(dir).Replace("\\", "/");}return retVal;}private static void RunProcess(ProcessStartInfo info){Process p = null;try{using(p = Process.Start(info)){p.WaitForExit();}}catch(System.Exception ex){UnityEngine.Debug.LogError(@ex.ToString());if(p != null){p.Kill();}}}#endregion}/*/ closeonend:0不自动关闭对话框/ closeonend:1会自动关闭,如果没有错误/ closeonend:2会自动关闭,如果没有发生错误和冲突/ closeonend:3会自动关闭,如果没有错误,冲突和合并/ closeonend:4会自动关闭,如果没有错误,冲突和合并*/
}

  主要的功能还是自动上传功能, 被选中物体的所有关联引用都会被加入上传列表, 并且所有文件夹也会被加入, 这样就保证了Add逻辑不会错误.

 

转载于:https://www.cnblogs.com/tiancaiwrk/p/10900173.html

http://www.lbrq.cn/news/820999.html

相关文章:

  • 网站建设优化是什么鬼/上海网站推广服务
  • 湖南网站备案/镇江交叉口优化
  • 网站后台标签切换/哪个app可以找培训班
  • 南皮做网站的/网络优化公司有哪些
  • soho做网站谷歌推广/南城网站优化公司
  • 阳区城市规划建设局网站/网络推广软文范文
  • 做flash网站的软件/网站登录入口
  • wordpress添加网页背景图片大小/免费seo培训
  • 网站开发与网站运营/推广优化师
  • 手机网站建设技术方案/网络培训机构排名前十
  • 做网站什么软件/搜索引擎优化是指什么
  • 电子商务在线网站建设/百度上怎么打广告宣传
  • 网站建设和网站开发/淘宝搜索关键词排名查询工具
  • 网上商城网站建设意义/重庆seo整站优化系统
  • wordpress 移动端 搜索/网站seo优化培训
  • 小型企业网站开发公司/优化优化
  • 网站程序开发费用/快速优化seo
  • 制作网站网页设计/深圳最新疫情最新消息
  • 拖拽网站怎么做的/如何出售自己的域名
  • wordpress 徽标/网站seo属于什么专业
  • 关于网站建设新闻/广西百度seo
  • 带icp备案的网站/免费建站的平台
  • 做棋牌网站建设/优秀的软文广告案例
  • 杭州网站怎么制作/今日热点新闻头条国内
  • 如何选网站建设公司/中国营销传播网
  • 洛阳网站建设哪家好/百度推广开户费用
  • 建设网站一般流程/推广自己的网站
  • 中组部 两学一做网站/长沙正规seo优化价格
  • 网站建设实训总结2000字/网络营销的概念和特征
  • 租车网站建设方案/如何建网站教程
  • MCP:UVX的安装
  • [特殊字符] 从数据库无法访问到成功修复崩溃表:一次 MySQL 故障排查实录
  • 深度学习的一些疑点整理
  • 【面试】Redis分布式ID与锁的底层博弈:高并发下的陷阱与破局之道
  • 【学习路线】Python全栈开发攻略:从编程入门到AI应用实战
  • Android ViewModel 深度解析:原理、使用与最佳实践