public List <FileItem> Convert(string projectPre, Options.OptionsSelect select = null)
        {
            if (!IsProjectPreValid(projectPre))
            {
                throw new Exception("名称不合法!");
            }

            var cd = GetChangeItems(select).SelectMany(x => x.ChangeDetails).ToArray();


            List <FileItem> result = new List <FileItem>();

            foreach (var item in codeLoader.FileItems)
            {
                var name = item.FileFullName.Replace(codeLoader.ProjectPre, projectPre);
                if (item is TextFileItem itemt)
                {
                    var changes = cd.Where(x => item.FileFullName.EndsWith(x.FileName, StringComparison.OrdinalIgnoreCase)).ToArray();
                    var cnt     = itemt.GetText().Replace(codeLoader.ProjectPre, projectPre);
                    foreach (var cg in changes)
                    {
                        cnt = cnt.Replace(cg.OldeValue, cg.NewValue);
                    }
                    result.Add(new TextFileItem(name, System.Text.Encoding.UTF8.GetBytes(cnt)));
                }
                else
                {
                    result.Add(new FileItem(name, item.Content));
                }
            }
            return(result);
        }
        private List <Options.OptionChangeItem> GetChangeItems(Options.OptionsSelect select)
        {
            List <Options.OptionChangeItem> listOptions = new List <Options.OptionChangeItem>();

            if ((codeLoader.Options?.Items.Any() ?? false) && (select?.Items.Any() ?? false))
            {
                foreach (var sel in select.Items)
                {
                    var sl = codeLoader.Options.Items.Where(x => x.OptionCode == sel.OptionCode).FirstOrDefault();
                    if (sl == null)
                    {
                        continue;
                    }
                    if (sl.Type == Options.OptionType.Radio)
                    {
                        var ss = sl.Options.Where(x => x.ItemName == sel.SelectOrInput).FirstOrDefault();
                        if (ss != null && !ss.IsDefault)
                        {
                            listOptions.Add(ss);
                        }
                    }
                    else
                    {
                        var ss = new Options.OptionChangeItem()
                        {
                            ItemName      = sel.SelectOrInput,
                            ChangeDetails = sl.Options.Where(x => !x.IsDefault).FirstOrDefault().ChangeDetails.Select(x =>
                                                                                                                      new Options.OptionChangeDetail()
                            {
                                FileName  = x.FileName,
                                OldeValue = x.OldeValue,
                                NewValue  = x.NewValue == "$" ? sel.SelectOrInput : x.NewValue
                            }).ToArray()
                        };
                        listOptions.Add(ss);
                    }
                }
            }
            return(listOptions);
        }