.gitignore | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data.sln | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data/App.config | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data/Form1.Designer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data/Form1.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data/Form1.resx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data/P066.Data.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data/P066数据分析程序.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data/Program.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data/Properties/AssemblyInfo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data/Properties/Resources.Designer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data/Properties/Resources.resx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data/Properties/Settings.Designer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066.Data/Properties/Settings.settings | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
P066数据分析程序.sln | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
.gitignore
New file @@ -0,0 +1,340 @@ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # User-specific files *.rsuser *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ [Aa][Rr][Mm]/ [Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ [Ll]og/ # Visual Studio 2015/2017 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ # Visual Studio 2017 auto generated files Generated\ Files/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUNIT *.VisualState.xml TestResult.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # Benchmark Results BenchmarkDotNet.Artifacts/ # .NET Core project.lock.json project.fragment.lock.json artifacts/ # StyleCop StyleCopReport.xml # Files built by Visual Studio *_i.c *_p.c *_h.h *.ilk *.meta *.obj *.iobj *.pch *.pdb *.ipdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *_wpftmp.csproj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db *.VC.VC.opendb # Visual Studio profiler *.psess *.vsp *.vspx *.sap # Visual Studio Trace Files *.e2e # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # JustCode is a .NET coding add-in .JustCode # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # AxoCover is a Code Coverage Tool .axoCover/* !.axoCover/settings.json # Visual Studio code coverage results *.coverage *.coveragexml # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # Note: Comment the next line if you want to checkin your web deploy settings, # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj # Microsoft Azure Web App publish settings. Comment the next line if you want to # checkin your Azure Web App publish settings, but sensitive information contained # in these scripts will be unencrypted PublishScripts/ # NuGet Packages *.nupkg # The packages folder can be ignored because of Package Restore **/[Pp]ackages/* # except build/, which is used as an MSBuild target. !**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/[Pp]ackages/repositories.config # NuGet v3's project.json files produces more ignorable files *.nuget.props *.nuget.targets # Microsoft Azure Build Output csx/ *.build.csdef # Microsoft Azure Emulator ecf/ rcf/ # Windows Store app package directories and files AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt *.appx # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !?*.[Cc]ache/ # Others ClientBin/ ~$* *~ *.dbmdl *.dbproj.schemaview *.jfm *.pfx *.publishsettings orleans.codegen.cs # Including strong name files can present a security risk # (https://github.com/github/gitignore/pull/2483#issue-259490424) #*.snk # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm ServiceFabricBackup/ *.rptproj.bak # SQL Server files *.mdf *.ldf *.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings *.rptproj.rsuser *- Backup*.rdl # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat node_modules/ # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) *.vbw # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts **/*.DesktopClient/ModelManifest.xml **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions # Paket dependency manager .paket/paket.exe paket-files/ # FAKE - F# Make .fake/ # JetBrains Rider .idea/ *.sln.iml # CodeRush personal settings .cr/personal # Python Tools for Visual Studio (PTVS) __pycache__/ *.pyc # Cake - Uncomment if you are using it # tools/** # !tools/packages.config # Tabs Studio *.tss # Telerik's JustMock configuration file *.jmconfig # BizTalk build output *.btp.cs *.btm.cs *.odx.cs *.xsd.cs # OpenCover UI analysis results OpenCover/ # Azure Stream Analytics local run output ASALocalRun/ # MSBuild Binary and Structured Log *.binlog # NVidia Nsight GPU debugger configuration file *.nvuser # MFractors (Xamarin productivity tool) working folder .mfractor/ # Local History for Visual Studio .localhistory/ # BeatPulse healthcheck temp database healthchecksdb P066.Data.sln
New file @@ -0,0 +1,25 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.28307.1259 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "P066.Data", "P066.Data\P066.Data.csproj", "{8B8F7749-8823-48C6-B12A-54979E28C10C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {8B8F7749-8823-48C6-B12A-54979E28C10C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8B8F7749-8823-48C6-B12A-54979E28C10C}.Debug|Any CPU.Build.0 = Debug|Any CPU {8B8F7749-8823-48C6-B12A-54979E28C10C}.Release|Any CPU.ActiveCfg = Release|Any CPU {8B8F7749-8823-48C6-B12A-54979E28C10C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {9015AB30-DC50-4705-A9A7-45C14C06313E} EndGlobalSection EndGlobal P066.Data/App.config
New file @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> </configuration> P066.Data/Form1.Designer.cs
New file @@ -0,0 +1,93 @@ namespace P066.Data { partial class Form1 { /// <summary> /// å¿ éç设计å¨åéã /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// æ¸ çæææ£å¨ä½¿ç¨çèµæºã /// </summary> /// <param name="disposing">妿åºéæ¾æç®¡èµæºï¼ä¸º trueï¼å¦å为 falseã</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows çªä½è®¾è®¡å¨çæç代ç /// <summary> /// è®¾è®¡å¨æ¯ææéçæ¹æ³ - ä¸è¦ä¿®æ¹ /// 使ç¨ä»£ç ç¼è¾å¨ä¿®æ¹æ¤æ¹æ³çå 容ã /// </summary> private void InitializeComponent() { this.btnLoadData1 = new System.Windows.Forms.Button(); this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); this.btnAnalyze = new System.Windows.Forms.Button(); this.btnLoadData2 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // btnLoadData1 // this.btnLoadData1.Location = new System.Drawing.Point(16, 15); this.btnLoadData1.Margin = new System.Windows.Forms.Padding(4); this.btnLoadData1.Name = "btnLoadData1"; this.btnLoadData1.Size = new System.Drawing.Size(176, 29); this.btnLoadData1.TabIndex = 0; this.btnLoadData1.Text = "å è½½æä»¶å¤¹1"; this.btnLoadData1.UseVisualStyleBackColor = true; this.btnLoadData1.Click += new System.EventHandler(this.btnLoadData1_Click); // // btnAnalyze // this.btnAnalyze.Location = new System.Drawing.Point(16, 88); this.btnAnalyze.Margin = new System.Windows.Forms.Padding(4); this.btnAnalyze.Name = "btnAnalyze"; this.btnAnalyze.Size = new System.Drawing.Size(176, 29); this.btnAnalyze.TabIndex = 1; this.btnAnalyze.Text = "å¼å§åæ"; this.btnAnalyze.UseVisualStyleBackColor = true; this.btnAnalyze.Click += new System.EventHandler(this.btnAnalyze_Click); // // btnLoadData2 // this.btnLoadData2.Location = new System.Drawing.Point(16, 51); this.btnLoadData2.Margin = new System.Windows.Forms.Padding(4); this.btnLoadData2.Name = "btnLoadData2"; this.btnLoadData2.Size = new System.Drawing.Size(176, 29); this.btnLoadData2.TabIndex = 1; this.btnLoadData2.Text = "å è½½æä»¶å¤¹2"; this.btnLoadData2.UseVisualStyleBackColor = true; this.btnLoadData2.Click += new System.EventHandler(this.btnLoadData2_Click); // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1067, 562); this.Controls.Add(this.btnAnalyze); this.Controls.Add(this.btnLoadData2); this.Controls.Add(this.btnLoadData1); this.Margin = new System.Windows.Forms.Padding(4); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } #endregion private System.Windows.Forms.Button btnLoadData1; private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; private System.Windows.Forms.Button btnAnalyze; private System.Windows.Forms.Button btnLoadData2; } } P066.Data/Form1.cs
New file @@ -0,0 +1,1131 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace P066.Data { public partial class Form1 : Form { DirectoryInfo directoryInfo1; DirectoryInfo directoryInfo2; public Form1() { InitializeComponent(); } private void btnLoadData1_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() != DialogResult.OK) return; directoryInfo1 = new DirectoryInfo(folderBrowserDialog1.SelectedPath); } private void btnLoadData2_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() != DialogResult.OK) return; directoryInfo2 = new DirectoryInfo(folderBrowserDialog1.SelectedPath); } private void btnAnalyze_Click(object sender, EventArgs e) { var fileinfos1 = directoryInfo1.GetFiles(); var fileinfos2 = directoryInfo2.GetFiles(); var listSum = new List<ResultData>(); var JudgeListSum = new List<ResultData>(); string filename = ""; int WhiteI = 0; int WhiteningI = 0; for (int i = 0; i < fileinfos1.Length; i++) { var list = CompareFile(fileinfos1[i], fileinfos2[i]); var judgeList = JudgeCompareFile(fileinfos1[i], fileinfos2[i]); if (fileinfos1[i].Name.Contains("ç½ç¹")) { WhiteI++; list.ForEach(a => a.Lensnumber = WhiteI); listSum.AddRange(list); judgeList.ForEach(a => a.Lensnumber = WhiteI); JudgeListSum.AddRange(judgeList); } if (fileinfos1[i].Name.Contains("å®ç½")) { WhiteningI++; list.ForEach(a => a.Lensnumber = WhiteningI); listSum.AddRange(list); judgeList.ForEach(a => a.Lensnumber = WhiteningI); JudgeListSum.AddRange(judgeList); } var group = judgeList.GroupBy(a => a.TimeTip); foreach (var item in group) { //计ç®é头1缺é·ä½ç½®åè§åº¦ var listLensnumber1 = judgeList.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 1); for (int k = 0; k < listLensnumber1.Count; k++) { var lenAngle = GetAngle(listLensnumber1[k].X, listLensnumber1[k].Y); if (lenAngle < 0) { lenAngle = 360 + lenAngle; } listLensnumber1[k].angle = lenAngle; var distance = GetDistance(1050, 1050, listLensnumber1[k].X, listLensnumber1[k].Y); if (distance <= 539.87) { listLensnumber1[k].location = "é头"; listLensnumber1[k].R = distance; } else if (539.87 < distance && distance <= 777.11) { listLensnumber1[k].location = "æé¢"; listLensnumber1[k].R = distance; } else if (777.11 < distance && distance <= 919.88) { listLensnumber1[k].location = "å¹³é¢"; listLensnumber1[k].R = distance; } else { listLensnumber1[k].location = "åºåå¤"; listLensnumber1[k].R = distance; } } //计ç®é头2ä½ç½®åè§åº¦ var listLensnumber2 = judgeList.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 2); for (int k = 0; k < listLensnumber2.Count; k++) { var lenAngle = GetAngle(listLensnumber2[k].X, listLensnumber2[k].Y); if (lenAngle < 0) { lenAngle = 360 + lenAngle; } listLensnumber2[k].angle = lenAngle; var distance = GetDistance(1050, 1050, listLensnumber2[k].X, listLensnumber2[k].Y); if (distance <= 400) { listLensnumber2[k].location = "é头"; listLensnumber2[k].R = distance; } else if (400 < distance && distance <= 772.18) { listLensnumber2[k].location = "æé¢"; listLensnumber2[k].R = distance; } else if (772.18 < distance && distance <= 873.38) { listLensnumber2[k].location = "å¹³é¢"; listLensnumber2[k].R = distance; } else { listLensnumber2[k].location = "åºåå¤"; listLensnumber2[k].R = distance; } } //计ç®é头3ä½ç½®åè§åº¦ var listLensnumber3 = judgeList.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 3); for (int k = 0; k < listLensnumber3.Count; k++) { var lenAngle = GetAngle(listLensnumber3[k].X, listLensnumber3[k].Y); if (lenAngle < 0) { lenAngle = 360 + lenAngle; } listLensnumber3[k].angle = lenAngle; var distance = GetDistance(1050, 1050, listLensnumber3[k].X, listLensnumber3[k].Y); if (distance <= 105.63) { listLensnumber3[k].location = "é头"; listLensnumber3[k].R = distance; } else { listLensnumber3[k].location = "æé¢"; listLensnumber3[k].R = distance; } } //计ç®é头4ä½ç½®åè§åº¦ var listLensnumber4 = judgeList.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 4); for (int k = 0; k < listLensnumber4.Count; k++) { var lenAngle = GetAngle(listLensnumber4[k].X, listLensnumber4[k].Y); if (lenAngle < 0) { lenAngle = 360 + lenAngle; } listLensnumber4[k].angle = lenAngle; var distance = GetDistance(1050, 1050, listLensnumber4[k].X, listLensnumber4[k].Y); if (distance <= 339.88) { listLensnumber4[k].location = "é头"; listLensnumber4[k].R = distance; } else if (339.88 < distance && distance <= 547.02) { listLensnumber4[k].location = "æé¢"; listLensnumber4[k].R = distance; } else if (547.02 < distance && distance <= 614.73) { listLensnumber4[k].location = "å¹³é¢"; listLensnumber4[k].R = distance; } else { listLensnumber4[k].location = "åºåå¤"; listLensnumber4[k].R = distance; } } } #region//ç»é头åºåä½ç½®åè§åº¦ var group11 = list.GroupBy(a => a.TimeTip); string currPath = ""; foreach (var item in group11) { //计ç®é头1缺é·ä½ç½®åè§åº¦ var listLensnumber1 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 1); for (int k = 0; k < listLensnumber1.Count; k++) { var lenAngle = GetAngle(listLensnumber1[k].X, listLensnumber1[k].Y); if (lenAngle<0) { lenAngle = 360 + lenAngle; } listLensnumber1[k].angle = lenAngle; var distance = GetDistance(1050, 1050, listLensnumber1[k].X, listLensnumber1[k].Y); if (distance <= 539.87) { listLensnumber1[k].location = "é头"; listLensnumber1[k].R = distance; } else if (539.87 < distance && distance <= 777.11) { listLensnumber1[k].location = "æé¢"; listLensnumber1[k].R = distance; } else if (777.11 < distance && distance <= 919.88) { listLensnumber1[k].location = "å¹³é¢"; listLensnumber1[k].R = distance; } else { listLensnumber1[k].location = "åºåå¤"; listLensnumber1[k].R = distance; } } //计ç®é头2ä½ç½®åè§åº¦ var listLensnumber2 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 2); for (int k = 0; k < listLensnumber2.Count; k++) { var lenAngle = GetAngle(listLensnumber2[k].X, listLensnumber2[k].Y); if (lenAngle < 0) { lenAngle = 360 + lenAngle; } listLensnumber2[k].angle = lenAngle; var distance = GetDistance(1050, 1050, listLensnumber2[k].X, listLensnumber2[k].Y); if (distance <= 400) { listLensnumber2[k].location = "é头"; listLensnumber2[k].R = distance; } else if (400 < distance && distance <= 772.18) { listLensnumber2[k].location = "æé¢"; listLensnumber2[k].R = distance; } else if (772.18 < distance && distance <= 873.38) { listLensnumber2[k].location = "å¹³é¢"; listLensnumber2[k].R = distance; } else { listLensnumber2[k].location = "åºåå¤"; listLensnumber2[k].R = distance; } } //计ç®é头3ä½ç½®åè§åº¦ var listLensnumber3 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 3); for (int k = 0; k < listLensnumber3.Count; k++) { var lenAngle = GetAngle(listLensnumber3[k].X, listLensnumber3[k].Y); if (lenAngle < 0) { lenAngle = 360 + lenAngle; } listLensnumber3[k].angle = lenAngle; var distance = GetDistance(1050, 1050, listLensnumber3[k].X, listLensnumber3[k].Y); if (distance <= 105.63) { listLensnumber3[k].location = "é头"; listLensnumber3[k].R = distance; } else { listLensnumber3[k].location = "æé¢"; listLensnumber3[k].R = distance; } } //计ç®é头4ä½ç½®åè§åº¦ var listLensnumber4 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 4); for (int k = 0; k < listLensnumber4.Count; k++) { var lenAngle = GetAngle(listLensnumber4[k].X, listLensnumber4[k].Y); if (lenAngle < 0) { lenAngle = 360 + lenAngle; } listLensnumber4[k].angle = lenAngle; var distance = GetDistance(1050, 1050, listLensnumber4[k].X, listLensnumber4[k].Y); if (distance <= 339.88) { listLensnumber4[k].location = "é头"; listLensnumber4[k].R = distance; } else if (339.88 < distance && distance <= 547.02) { listLensnumber4[k].location = "æé¢"; listLensnumber4[k].R = distance; } else if (547.02 < distance && distance <= 614.73) { listLensnumber4[k].location = "å¹³é¢"; listLensnumber4[k].R = distance; } else { listLensnumber4[k].location = "åºåå¤"; listLensnumber4[k].R = distance; } } } #endregion #region//夿æ¯åæ£æä»¶å¤¹è¿æ¯å¤æ£æä»¶å¤¹ if (fileinfos1[i].Name.Contains("忣")) { filename = "忣"; } if (fileinfos1[i].Name.Contains("夿£")) { filename = "夿£"; } if (fileinfos1[i].Name.Contains("å®ç½")) { filename = "å®ç½"; } currPath = directoryInfo1.Parent.Parent.FullName; string subPath = currPath + "/" + filename + "åå¹¶å" + "/"; if (false==Directory.Exists(subPath)) { Directory.CreateDirectory(subPath); } #endregion #region//æµè¯è¾åºè®¾å¤å¤æç»æ //var title12 = $"æ¶é´æ³,设å¤å¤æç»æ"; //var file12 = $"{directoryInfo1.Parent.FullName}\\{filename + (i + 111)}.csv"; //File.AppendAllText(file12, title12, Encoding.UTF8); //File.AppendAllText(file12, "\r\n"); //foreach (var item in JudgeListSum) //{ // var conrent12 = $"{item.TimeTip},{item.JudgmentResult}"; // File.AppendAllText(file12, conrent12, Encoding.UTF8); // File.AppendAllText(file12, "\r\n"); //} #endregion var title1 = $"æ¶é´æ³,æä»¶å,夿,å¯è½æ§,ä¸ç¡®å®æ§,é«,宽,X,Y,æå¤§å°ºå¯¸,ä½ç½®,R,è§åº¦,缺é·ç±»å"; var file1 = $"{subPath}\\{filename + (i+1)}.csv"; File.AppendAllText(file1, title1, Encoding.UTF8); File.AppendAllText(file1, "\r\n"); #region//è®¡ç®æ»æ° //var group1 = list.GroupBy(a => a.TimeTip); //var title2 = $"æ¶é´æ³,æ»æ°"; //var file2 = $"{directoryInfo1.Parent.FullName}\\{ "æ»æ°" +( i+1)}.csv"; //File.AppendAllText(file2, title2, Encoding.UTF8); //File.AppendAllText(file2, "\r\n"); //foreach (var item in group1) //{ // var content = $"{item.Key},{item.ToList().Count}"; // File.AppendAllText(file2, content, Encoding.UTF8); // File.AppendAllText(file2, "\r\n"); //} #endregion foreach (var item in list) { string result = item.Result ? "OK" : "NG"; var content = $"{item.TimeTip},{item.ImageFileName},{result},{item.Probability},{item.Uncertainty},{item.Height},{item.Width},{item.X},{item.Y},{item.ex},{item.location},{ Convert.ToInt32(item.R)},{ Convert.ToInt32(item.angle)},{item.DefectType}"; File.AppendAllText(file1, content, Encoding.UTF8); File.AppendAllText(file1, "\r\n"); } } var dataGroup1 = listSum.GroupBy(a => a.TimeTip); var dataListSum = new List<string>(); foreach (var item in dataGroup1) { dataListSum.Add(item.Key); } dataListSum = dataListSum.Distinct().ToList(); dataListSum.Sort(); var dataList = new List<ResultData>(); var title12 = $"æ¶é´æ³,ç¸æºåºå·,设å¤å¤æç»æ,缺é·ç±»å,X,Y,æå¤§å°ºå¯¸,R,ä½ç½®,è§åº¦"; var file12 = $"{directoryInfo1.Parent.FullName}\\{filename+"设å¤å¤æç»æ"}.csv"; File.AppendAllText(file12, title12, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); foreach (var item in dataListSum) { var test11 = JudgeListSum.FindAll(a => a.TimeTip == item&&a.Lensnumber==1); if (test11.Count==0) { var content11 = $"{item},{1},{"OK"}"; File.AppendAllText(file12, content11, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } else { if (test11[0].DefectType=="å®ç½") { var content11 = $"{item},{1},{test11[0].JudgmentResult},{test11[0].DefectType}"; File.AppendAllText(file12, content11, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); for (int i = 0; i < test11.Count; i++) { if (test11[i].DefectType=="å®ç½") { var content111 = $"{""},{""},{""},{""},{test11[i].X},{test11[i].Y},{test11[i].ex},{(int)(test11[i].R)},{test11[i].location},{(int)(test11[i].angle)}"; File.AppendAllText(file12, content111, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } else { var content111 = $"{""},{""},{""},{test11[i].DefectType},{test11[i].X},{test11[i].Y},{test11[i].ex},{(int)(test11[i].R)},{test11[i].location},{(int)(test11[i].angle)}"; File.AppendAllText(file12, content111, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } } } else { var content11 = $"{item},{1},{test11[0].JudgmentResult},{test11[0].DefectType}"; File.AppendAllText(file12, content11, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); for (int i = 0; i < test11.Count; i++) { var content111 = $"{""},{""},{""},{""},{test11[i].X},{test11[i].Y},{test11[i].ex},{(int)(test11[i].R)},{test11[i].location},{(int)(test11[i].angle)}"; File.AppendAllText(file12, content111, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } } } var test12 = JudgeListSum.FindAll(a => a.TimeTip == item && a.Lensnumber == 2); if (test12.Count == 0) { var content11 = $"{""},{2},{"OK"}"; File.AppendAllText(file12, content11, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } else { if (test12[0].DefectType == "å®ç½") { var content11 = $"{""},{2},{test12[0].JudgmentResult},{test12[0].DefectType}"; File.AppendAllText(file12, content11, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); for (int i = 0; i < test12.Count; i++) { if (test12[i].DefectType == "å®ç½") { var content111 = $"{""},{""},{""},{""},{test12[i].X},{test12[i].Y},{test12[i].ex},{(int)(test12[i].R)},{test12[i].location},{(int)(test12[i].angle)}"; File.AppendAllText(file12, content111, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } else { var content111 = $"{""},{""},{""},{test12[i].DefectType},{test12[i].X},{test12[i].Y},{test12[i].ex},{(int)(test12[i].R)},{test12[i].location},{(int)(test12[i].angle)}"; File.AppendAllText(file12, content111, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } } } else { var content11 = $"{""},{2},{test12[0].JudgmentResult},{test12[0].DefectType}"; File.AppendAllText(file12, content11, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); for (int i = 0; i < test12.Count; i++) { var content111 = $"{""},{""},{""},{""},{test12[i].X},{test12[i].Y},{test12[i].ex},{(int)(test12[i].R)},{test12[i].location},{(int)(test12[i].angle)}"; File.AppendAllText(file12, content111, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } } } var test13 = JudgeListSum.FindAll(a => a.TimeTip == item && a.Lensnumber == 3); if (test13.Count == 0) { var content11 = $"{""},{3},{"OK"}"; File.AppendAllText(file12, content11, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } else { if (test13[0].DefectType == "å®ç½") { var content11 = $"{""},{3},{test13[0].JudgmentResult},{test13[0].DefectType}"; File.AppendAllText(file12, content11, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); for (int i = 0; i < test13.Count; i++) { if (test13[i].DefectType == "å®ç½") { var content111 = $"{""},{""},{""},{""},{test13[i].X},{test13[i].Y},{test13[i].ex},{(int)(test13[i].R)},{test13[i].location},{(int)(test13[i].angle)}"; File.AppendAllText(file12, content111, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } else { var content111 = $"{""},{""},{""},{test13[i].DefectType},{test13[i].X},{test13[i].Y},{test13[i].ex},{(int)(test13[i].R)},{test13[i].location},{(int)(test13[i].angle)}"; File.AppendAllText(file12, content111, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } } } else { var content11 = $"{""},{3},{test13[0].JudgmentResult},{test13[0].DefectType}"; File.AppendAllText(file12, content11, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); for (int i = 0; i < test13.Count; i++) { var content111 = $"{""},{""},{""},{""},{test13[i].X},{test13[i].Y},{test13[i].ex},{(int)(test13[i].R)},{test13[i].location},{(int)(test13[i].angle)}"; File.AppendAllText(file12, content111, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } } } var test14 = JudgeListSum.FindAll(a => a.TimeTip == item && a.Lensnumber == 4); if (test14.Count == 0) { var content11 = $"{""},{4},{"OK"}"; File.AppendAllText(file12, content11, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } else { if (test14[0].DefectType == "å®ç½") { var content11 = $"{""},{4},{test14[0].JudgmentResult},{test14[0].DefectType}"; File.AppendAllText(file12, content11, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); for (int i = 0; i < test14.Count; i++) { if (test14[i].DefectType == "å®ç½") { var content111 = $"{""},{""},{""},{""},{test14[i].X},{test14[i].Y},{test14[i].ex},{(int)(test14[i].R)},{test14[i].location},{(int)(test14[i].angle)}"; File.AppendAllText(file12, content111, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } else { var content111 = $"{""},{""},{""},{test14[i].DefectType},{test14[i].X},{test14[i].Y},{test14[i].ex},{(int)(test14[i].R)},{test14[i].location},{(int)(test14[i].angle)}"; File.AppendAllText(file12, content111, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } } } else { var content11 = $"{""},{4},{test14[0].JudgmentResult},{test14[0].DefectType}"; File.AppendAllText(file12, content11, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); for (int i = 0; i < test14.Count; i++) { var content111 = $"{""},{""},{""},{""},{test14[i].X},{test14[i].Y},{test14[i].ex},{(int)(test14[i].R)},{test14[i].location},{(int)(test14[i].angle)}"; File.AppendAllText(file12, content111, Encoding.UTF8); File.AppendAllText(file12, "\r\n"); } } } //var conrent12 = $"{item},{item}"; //File.AppendAllText(file12, conrent12, Encoding.UTF8); //File.AppendAllText(file12, "\r\n"); } #region//æ ¹æ®äº§åç¼å·è¾åºæ»ç¼ºé·æ¥è¡¨ var title = $"产åç¼å·,é头ç¼å·,æ»ç¼ºé·æ°é"; var file = $"{directoryInfo1.Parent.FullName}\\{filename+ "ç¼ºé·æ»æ°æ¥è¡¨"}.csv"; File.AppendAllText(file, title, Encoding.UTF8); File.AppendAllText(file, "\r\n"); var listSumGroup = listSum.GroupBy(a => a.TimeTip); foreach (var item in listSumGroup) { var listLensnumber1 = listSum.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 1); var listLensnumberCount1 = listLensnumber1.Count; var listLensnumber2 = listSum.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 2); var listLensnumberCount2 = listLensnumber2.Count; var listLensnumber3 = listSum.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 3); var listLensnumberCount3 = listLensnumber3.Count; var listLensnumber4 = listSum.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 4); var listLensnumberCount4 = listLensnumber4.Count; //第ä¸è¡ var content1 = $"{item.Key},{1},{listLensnumberCount1}"; File.AppendAllText(file, content1, Encoding.UTF8); File.AppendAllText(file, "\r\n"); //第äºè¡ var content2 = $"{""},{2},{listLensnumberCount2}"; File.AppendAllText(file, content2, Encoding.UTF8); File.AppendAllText(file, "\r\n"); //第ä¸è¡ var content3 = $"{""},{3},{listLensnumberCount3}"; File.AppendAllText(file, content3, Encoding.UTF8); File.AppendAllText(file, "\r\n"); //第åè¡ var content4 = $"{""},{4},{listLensnumberCount4}"; File.AppendAllText(file, content4, Encoding.UTF8); File.AppendAllText(file, "\r\n"); } #endregion } private List<ResultData> CompareFile(FileInfo fileInfo1, FileInfo fileInfo2) { var allLines1 = File.ReadAllLines(fileInfo1.FullName, Encoding.Default); var allLines2 = File.ReadAllLines(fileInfo2.FullName, Encoding.Default); List<ResultData> dataList1 = new List<ResultData>(); List<ResultData> dataList2 = new List<ResultData>(); if (allLines1.Length>1) { dataList1 = GetData(allLines1); } if (allLines2.Length > 1) { dataList2 = GetData(allLines2); } #region //å°æ¶é´æ³ç¸åçå为ä¸ç»å¹¶æåº var dataGroup1 = dataList1.GroupBy(a => a.TimeTip); var dataGroup2 = dataList2.GroupBy(a => a.TimeTip); var dataListSum = new List<string>(); foreach (var item in dataGroup1) { dataListSum.Add(item.Key); } foreach (var item in dataGroup2) { dataListSum.Add(item.Key); } dataListSum = dataListSum.Distinct().ToList(); dataListSum.Sort(); #endregion var dataList = new List<ResultData>(); var dataList11 = new List<ResultData>(); var dataList22 = new List<ResultData>(); foreach (var item in dataListSum) { var list1 = dataList1.FindAll(a => a.TimeTip == item && !a.Result); var list2 = dataList2.FindAll(a => a.TimeTip == item && !a.Result); var itemToRemove = new List<ResultData>(); #region//计ç®è¡¨æ ¼2æå¤§å°ºå¯¸ for (int ii = 0; ii < list2.Count; ii++) { if (list2[ii].Width > list2[ii].Height) { list2[ii].ex = list2[ii].Width * 0.0042; } else { list2[ii].ex = list2[ii].Height * 0.0042; } var distance = GetDistance(1050, 1050, list2[ii].X, list2[ii].Y); list2[ii].R = distance; } #endregion for (int i = 0; i < list1.Count; i++) { #region//计ç®è¡¨æ ¼1æå¤§å°ºå¯¸ if (list1[i].Width > list1[i].Height) { list1[i].ex = list1[i].Width * 0.0042; } else { list1[i].ex = list1[i].Height * 0.0042; } var distance1 = GetDistance(1050, 1050, list1[i].X, list1[i].Y); list1[i].R = distance1; #endregion for (int j = 0; j < list2.Count; j++) { var distance = GetDistance(list1[i].X, list1[i].Y, list2[j].X, list2[j].Y); if (distance < 20) { itemToRemove.Add(list2[j]); } } } for (int i = 0; i < itemToRemove.Count; i++) { list2.Remove(itemToRemove[i]); } dataList11.AddRange(list1); dataList22.AddRange(list2); } dataList.AddRange(dataList1); dataList.AddRange(dataList2); return dataList; } //ç»è®¡è®¾å¤å¤æç»æ private List<ResultData> JudgeCompareFile(FileInfo fileInfo1, FileInfo fileInfo2) { #region //å±è½ //var allLines1 = File.ReadAllLines(fileInfo1.FullName,Encoding.Default); //var allLines2 = File.ReadAllLines(fileInfo2.FullName, Encoding.Default); ////var dataJudgeList1 = GetJudgeData(allLines1); ////var dataJudgeList2 = GetJudgeData(allLines2); //List<ResultData> dataJudgeList1 = new List<ResultData>(); //List<ResultData> dataJudgeList2 = new List<ResultData>(); //if (allLines1.Length > 1) //{ // dataJudgeList1 = GetData(allLines1); //} //if (allLines2.Length > 1) //{ // dataJudgeList2 = GetData(allLines2); //} //var dataGroup1 = dataJudgeList1.GroupBy(a => a.TimeTip); //var dataGroup2 = dataJudgeList2.GroupBy(a => a.TimeTip); //var dataListSum = new List<string>(); //foreach (var item in dataGroup1) //{ // dataListSum.Add(item.Key); //} //foreach (var item in dataGroup2) //{ // dataListSum.Add(item.Key); //} //dataListSum = dataListSum.Distinct().ToList(); //dataListSum.Sort(); //var dataList = new List<ResultData>(); //var itemToRemove = new List<ResultData>(); //foreach (var item in dataListSum) //{ // var list1 = dataJudgeList1.FindAll(a => a.TimeTip == item && a.JudgmentResult=="NG"&&!a.Result); // var list2 = dataJudgeList2.FindAll(a => a.TimeTip == item && a.JudgmentResult == "NG"&&!a.Result); // for (int i = 0; i < list1.Count; i++) // { // for (int j = 0; j < list2.Count; j++) // { // if (list1[i].JudgmentResult != list2[j].JudgmentResult) // { // list1[i].JudgmentResult = "NG"; // list2[j].JudgmentResult = "NG"; // itemToRemove.Add(list2[j]); // } // if (list1[i].JudgmentResult == list2[j].JudgmentResult) // { // itemToRemove.Add(list2[j]); // } // } // } // //if (list1.Count ==0&&list2.Count==0) // //{ // // dataList.Add(new ResultData() // // { // // TimeTip = item, // // JudgmentResult = "OK", // // }); ; ; // //} // dataList.AddRange(list1); // dataList.AddRange(list2); //} //for (int i = 0; i < itemToRemove.Count; i++) //{ // dataList.Remove(itemToRemove[i]); //} #endregion var allLines1 = File.ReadAllLines(fileInfo1.FullName, Encoding.Default); var allLines2 = File.ReadAllLines(fileInfo2.FullName, Encoding.Default); List<ResultData> dataList1 = new List<ResultData>(); List<ResultData> dataList2 = new List<ResultData>(); if (allLines1.Length > 1) { dataList1 = GetData(allLines1); } if (allLines2.Length > 1) { dataList2 = GetData(allLines2); } #region //å°æ¶é´æ³ç¸åçå为ä¸ç»å¹¶æåº var dataGroup1 = dataList1.GroupBy(a => a.TimeTip); var dataGroup2 = dataList2.GroupBy(a => a.TimeTip); var dataListSum = new List<string>(); foreach (var item in dataGroup1) { dataListSum.Add(item.Key); } foreach (var item in dataGroup2) { dataListSum.Add(item.Key); } dataListSum = dataListSum.Distinct().ToList(); dataListSum.Sort(); #endregion var dataList = new List<ResultData>(); var dataList11 = new List<ResultData>(); var dataList22 = new List<ResultData>(); foreach (var item in dataListSum) { var list1 = dataList1.FindAll(a => a.TimeTip == item && !a.Result); var list2 = dataList2.FindAll(a => a.TimeTip == item && !a.Result); var itemToRemove1 = new List<ResultData>(); #region//计ç®è¡¨æ ¼2æå¤§å°ºå¯¸ for (int ii = 0; ii < list2.Count; ii++) { if (list2[ii].Width > list2[ii].Height) { list2[ii].ex = list2[ii].Width * 0.0042; } else { list2[ii].ex = list2[ii].Height * 0.0042; } var distance = GetDistance(1050, 1050, list2[ii].X, list2[ii].Y); list2[ii].R = distance; } #endregion for (int i = 0; i < list1.Count; i++) { #region//计ç®è¡¨æ ¼1æå¤§å°ºå¯¸ if (list1[i].Width > list1[i].Height) { list1[i].ex = list1[i].Width * 0.0042; } else { list1[i].ex = list1[i].Height * 0.0042; } var distance1 = GetDistance(1050, 1050, list1[i].X, list1[i].Y); list1[i].R = distance1; #endregion for (int j = 0; j < list2.Count; j++) { var distance = GetDistance(list1[i].X, list1[i].Y, list2[j].X, list2[j].Y); if (distance < 20) { itemToRemove1.Add(list2[j]); if (list1[i].JudgmentResult!=list2[j].JudgmentResult) { list1[i].JudgmentResult = "NG"; list2[j].JudgmentResult = "NG"; } } } } for (int i = 0; i < itemToRemove1.Count; i++) { list2.Remove(itemToRemove1[i]); } dataList11.AddRange(list1); dataList22.AddRange(list2); } //var itemToRemove = new List<ResultData>(); foreach (var item in dataListSum) { var list1 = dataList11.FindAll(a => a.TimeTip == item/* && a.JudgmentResult == "NG"*/ ); //ä¸ç®¡OKãNGé½è¦è¾åº var list2 = dataList22.FindAll(a => a.TimeTip == item /*&& a.JudgmentResult == "NG"*/); //ä¸ç®¡OKãNGé½è¦è¾åº //for (int i = 0; i < list1.Count; i++) //{ // for (int j = 0; j < list2.Count; j++) // { // if (list1[i].JudgmentResult != list2[j].JudgmentResult) // { // list1[i].JudgmentResult = "NG"; // list2[j].JudgmentResult = "NG"; // itemToRemove.Add(list2[j]); // } // if (list1[i].JudgmentResult == list2[j].JudgmentResult) // { // itemToRemove.Add(list2[j]); // } // } //} dataList.AddRange(list1); dataList.AddRange(list2); } //for (int i = 0; i < itemToRemove.Count; i++) //{ // dataList.Remove(itemToRemove[i]); //} return dataList; } private List<ResultData> GetData(string[] allLines) { var dataList = new List<ResultData>(); var nametemp = allLines[1].Split(',')[0]; var resulttemp = allLines[1].Split(',')[1]; //var Ptr = allLines[1].Split(',')[10]; for (int i = 1; i < allLines.Length; i++) { var data = allLines[i].Split(','); if (data[6]=="-") { continue; } string defectType = ""; string bbb = ""; string Ptr = ""; if (data[0] == "") { data[0] = nametemp; data[1] = resulttemp; //data[10] = Ptr; } if (data[1]== "å®ç½") { defectType = "å®ç½"; bbb = "NG"; Ptr = ""; } else { defectType = "ç½ç¹"; bbb = data[1]; if (data.Length>10) { Ptr = data[10]; } } var data6 = data[6].Split('#').ToList(); data6.Remove(""); var temp6 = Convert.ToInt32(data6[0]); for (int a6 = 0; a6 < data6.Count; a6++) { if (Convert.ToInt32(data6[a6]) > temp6) { temp6 = Convert.ToInt32(data6[a6]); } } data[6] = Convert.ToString(temp6); var data7 = data[7].Split('#').ToList(); data7.Remove(""); var temp7 = Convert.ToInt32(data7[0]); for (int a7 = 0; a7 < data7.Count; a7++) { if (Convert.ToInt32(data7[a7]) > temp7) { temp7 = Convert.ToInt32(data7[a7]); } } data[7] = Convert.ToString(temp7); dataList.Add(new ResultData() { TimeTip = data[0].Split('-')[0], ImageFileName = data[0], JudgmentResult = bbb, Result = data[3] == "OK", Probability = Convert.ToDouble(data[4]), Uncertainty = Convert.ToDouble(data[5]), //Height = Convert.ToDouble(data[6].Replace("#", "").Replace("-", "")), //Width = Convert.ToDouble(data[7].Replace("#", "").Replace("-", "")), Height = Convert.ToDouble(data[6]), Width = Convert.ToDouble(data[7]), X = Convert.ToDouble(data[8].Replace("#", "").Replace("-", "")), Y = Convert.ToDouble(data[9].Replace("#", "").Replace("-", "")), DefectType = defectType, PostTreatmentResults = Ptr, }) ; ; ; nametemp = data[0]; resulttemp= data[1]; } return dataList; } //private List<ResultData> GetJudgeData(string[] allLines) //{ // var dataList = new List<ResultData>(); // for (int i = 1; i < allLines.Length; i++) // { // var data = allLines[i].Split(','); // string defectType = ""; // string aaa = ""; // if (data[0] != "") // { // try // { // defectType = data[10]; // } // catch (Exception) // { // defectType = "å®ç½"; // aaa = "NG"; // } // dataList.Add(new ResultData() // { // TimeTip = data[0].Split('-')[0], // JudgmentResult = aaa, // DefectType= defectType, // }); ; ; // } // } // return dataList; //} private double GetDistance(double x1, double y1, double x2, double y2) { return Math.Sqrt(Math.Pow((x2 - x1), 2) + Math.Pow((y2 - y1), 2)); } private double GetAngle(double x1, double y1) { return Math.Atan2((y1 - 1050), (x1 - 1050)) * (180 / Math.PI); } } public class ResultData { public string TimeTip = ""; public string JudgmentResult = ""; public string ImageFileName = ""; public bool Result = true; public int Lensnumber = 0; public double Probability = 0; public double Uncertainty = 0; public double Height = 0; public double Width = 0; public double X = 0; public double Y = 0; public double ex = 0; public string location = ""; public double angle = 0; public double R = 0; public string DefectType = ""; public string PostTreatmentResults = ""; } } P066.Data/Form1.resx
New file @@ -0,0 +1,123 @@ <?xml version="1.0" encoding="utf-8"?> <root> <!-- Microsoft ResX Schema Version 2.0 The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the various data types are done through the TypeConverter classes associated with the data types. Example: ... ado.net/XML headers & schema ... <resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="version">2.0</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <value>[base64 mime encoded serialized .NET Framework object]</value> </data> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> <comment>This is a comment</comment> </data> There are any number of "resheader" rows that contain simple name/value pairs. Each data row contains a name, and value. The row also contains a type or mimetype. Type corresponds to a .NET class that support text/value conversion through the TypeConverter architecture. Classes that don't support this are serialized and stored with the mimetype set. The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly: Note - application/x-microsoft.net.object.binary.base64 is the format that the ResXResourceWriter will generate, however the reader can read any of the formats listed below. mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Soap.SoapFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.bytearray.base64 value : The object must be serialized into a byte array : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <metadata name="folderBrowserDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>17, 17</value> </metadata> </root> P066.Data/P066.Data.csproj
New file @@ -0,0 +1,83 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{8B8F7749-8823-48C6-B12A-54979E28C10C}</ProjectGuid> <OutputType>WinExe</OutputType> <RootNamespace>P066.Data</RootNamespace> <AssemblyName>P066.Data</AssemblyName> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <Deterministic>true</Deterministic> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Data" /> <Reference Include="System.Deployment" /> <Reference Include="System.Drawing" /> <Reference Include="System.Net.Http" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> <Compile Include="Form1.cs"> <SubType>Form</SubType> </Compile> <Compile Include="Form1.Designer.cs"> <DependentUpon>Form1.cs</DependentUpon> </Compile> <Compile Include="Program.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <EmbeddedResource Include="Form1.resx"> <DependentUpon>Form1.cs</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="Properties\Resources.resx"> <Generator>ResXFileCodeGenerator</Generator> <LastGenOutput>Resources.Designer.cs</LastGenOutput> <SubType>Designer</SubType> </EmbeddedResource> <Compile Include="Properties\Resources.Designer.cs"> <AutoGen>True</AutoGen> <DependentUpon>Resources.resx</DependentUpon> </Compile> <None Include="Properties\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> <LastGenOutput>Settings.Designer.cs</LastGenOutput> </None> <Compile Include="Properties\Settings.Designer.cs"> <AutoGen>True</AutoGen> <DependentUpon>Settings.settings</DependentUpon> <DesignTimeSharedInput>True</DesignTimeSharedInput> </Compile> </ItemGroup> <ItemGroup> <None Include="App.config" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project> P066.Data/P066Êý¾Ý·ÖÎö³ÌÐò.csproj
New file @@ -0,0 +1,83 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{8B8F7749-8823-48C6-B12A-54979E28C10C}</ProjectGuid> <OutputType>WinExe</OutputType> <RootNamespace>P066.Data</RootNamespace> <AssemblyName>P066.Data</AssemblyName> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <Deterministic>true</Deterministic> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Data" /> <Reference Include="System.Deployment" /> <Reference Include="System.Drawing" /> <Reference Include="System.Net.Http" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> <Compile Include="Form1.cs"> <SubType>Form</SubType> </Compile> <Compile Include="Form1.Designer.cs"> <DependentUpon>Form1.cs</DependentUpon> </Compile> <Compile Include="Program.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <EmbeddedResource Include="Form1.resx"> <DependentUpon>Form1.cs</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="Properties\Resources.resx"> <Generator>ResXFileCodeGenerator</Generator> <LastGenOutput>Resources.Designer.cs</LastGenOutput> <SubType>Designer</SubType> </EmbeddedResource> <Compile Include="Properties\Resources.Designer.cs"> <AutoGen>True</AutoGen> <DependentUpon>Resources.resx</DependentUpon> </Compile> <None Include="Properties\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> <LastGenOutput>Settings.Designer.cs</LastGenOutput> </None> <Compile Include="Properties\Settings.Designer.cs"> <AutoGen>True</AutoGen> <DependentUpon>Settings.settings</DependentUpon> <DesignTimeSharedInput>True</DesignTimeSharedInput> </Compile> </ItemGroup> <ItemGroup> <None Include="App.config" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project> P066.Data/Program.cs
New file @@ -0,0 +1,22 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace P066.Data { static class Program { /// <summary> /// åºç¨ç¨åºçä¸»å ¥å£ç¹ã /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } P066.Data/Properties/AssemblyInfo.cs
New file @@ -0,0 +1,36 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // æå ³ç¨åºéçä¸è¬ä¿¡æ¯ç±ä»¥ä¸ // æ§å¶ãæ´æ¹è¿äºç¹æ§å¼å¯ä¿®æ¹ // ä¸ç¨åºéå ³èçä¿¡æ¯ã [assembly: AssemblyTitle("P066.Data")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("P066.Data")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // å° ComVisible 设置为 false ä¼ä½¿æ¤ç¨åºéä¸çç±»å //对 COM ç»ä»¶ä¸å¯è§ã妿éè¦ä» COM è®¿é®æ¤ç¨åºéä¸çç±»å //è¯·å°æ¤ç±»åç ComVisible ç¹æ§è®¾ç½®ä¸º trueã [assembly: ComVisible(false)] // 妿æ¤é¡¹ç®å COM å ¬å¼ï¼åä¸å GUID ç¨äºç±»ååºç ID [assembly: Guid("8b8f7749-8823-48c6-b12a-54979e28c10c")] // ç¨åºéççæ¬ä¿¡æ¯ç±ä¸åå个å¼ç»æ: // // ä¸»çæ¬ // æ¬¡çæ¬ // çæå· // ä¿®è®¢å· // // å¯ä»¥æå®ææå¼ï¼ä¹å¯ä»¥ä½¿ç¨ä»¥ä¸æç¤ºç "*" é¢ç½®çæ¬å·åä¿®è®¢å· // æ¹æ³æ¯æå¦ä¸æç¤ºä½¿ç¨â*â: : // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] P066.Data/Properties/Resources.Designer.cs
New file @@ -0,0 +1,71 @@ //------------------------------------------------------------------------------ // <auto-generated> // æ¤ä»£ç ç±å·¥å ·çæã // è¿è¡æ¶çæ¬: 4.0.30319.42000 // // å¯¹æ¤æä»¶çæ´æ¹å¯è½å¯¼è´ä¸æ£ç¡®çè¡ä¸ºï¼å¦æ // éæ°çæä»£ç ï¼åæåæ´æ¹å°ä¸¢å¤±ã // </auto-generated> //------------------------------------------------------------------------------ namespace P066.Data.Properties { /// <summary> /// 强类åèµæºç±»ï¼ç¨äºæ¥æ¾æ¬å°åå符串çã /// </summary> // æ¤ç±»æ¯ç± StronglyTypedResourceBuilder // ç±»éè¿ç±»ä¼¼äº ResGen æ Visual Studio çå·¥å ·èªå¨çæçã // è¥è¦æ·»å æå 餿åï¼è¯·ç¼è¾ .ResX æä»¶ï¼ç¶åéæ°è¿è¡ ResGen // (以 /str ä½ä¸ºå½ä»¤é项)ï¼æéæ°çæ VS 项ç®ã [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Resources() { } /// <summary> /// è¿åæ¤ç±»ä½¿ç¨çç¼å ResourceManager å®ä¾ã /// </summary> [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { get { if ((resourceMan == null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("P066.Data.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } /// <summary> /// è¦çå½å线ç¨ç CurrentUICulture 屿§ /// ä½¿ç¨æ¤å¼ºç±»åçèµæºç±»çèµæºæ¥æ¾ã /// </summary> [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } } } P066.Data/Properties/Resources.resx
New file @@ -0,0 +1,117 @@ <?xml version="1.0" encoding="utf-8"?> <root> <!-- Microsoft ResX Schema Version 2.0 The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the various data types are done through the TypeConverter classes associated with the data types. Example: ... ado.net/XML headers & schema ... <resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="version">2.0</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <value>[base64 mime encoded serialized .NET Framework object]</value> </data> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> <comment>This is a comment</comment> </data> There are any number of "resheader" rows that contain simple name/value pairs. Each data row contains a name, and value. The row also contains a type or mimetype. Type corresponds to a .NET class that support text/value conversion through the TypeConverter architecture. Classes that don't support this are serialized and stored with the mimetype set. The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly: Note - application/x-microsoft.net.object.binary.base64 is the format that the ResXResourceWriter will generate, however the reader can read any of the formats listed below. mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with : System.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Soap.SoapFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.bytearray.base64 value : The object must be serialized into a byte array : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> </root> P066.Data/Properties/Settings.Designer.cs
New file @@ -0,0 +1,30 @@ //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ namespace P066.Data.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); public static Settings Default { get { return defaultInstance; } } } } P066.Data/Properties/Settings.settings
New file @@ -0,0 +1,7 @@ <?xml version='1.0' encoding='utf-8'?> <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> <Profiles> <Profile Name="(Default)" /> </Profiles> <Settings /> </SettingsFile> P066Êý¾Ý·ÖÎö³ÌÐò.sln
New file @@ -0,0 +1,25 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.30225.117 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "P066æ°æ®åæç¨åº", "P066.Data\P066æ°æ®åæç¨åº.csproj", "{8B8F7749-8823-48C6-B12A-54979E28C10C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {8B8F7749-8823-48C6-B12A-54979E28C10C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8B8F7749-8823-48C6-B12A-54979E28C10C}.Debug|Any CPU.Build.0 = Debug|Any CPU {8B8F7749-8823-48C6-B12A-54979E28C10C}.Release|Any CPU.ActiveCfg = Release|Any CPU {8B8F7749-8823-48C6-B12A-54979E28C10C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {9015AB30-DC50-4705-A9A7-45C14C06313E} EndGlobalSection EndGlobal