diff --git a/shangjian/.vs/BL/v17/.suo b/shangjian/.vs/BL/v17/.suo
index d670332..3ad06e2 100644
Binary files a/shangjian/.vs/BL/v17/.suo and b/shangjian/.vs/BL/v17/.suo differ
diff --git a/shangjian/AutoUpdate/bin/Debug/AutoUpdate.application b/shangjian/AutoUpdate/bin/Debug/AutoUpdate.application
index 7b6e3dd..69a618a 100644
--- a/shangjian/AutoUpdate/bin/Debug/AutoUpdate.application
+++ b/shangjian/AutoUpdate/bin/Debug/AutoUpdate.application
@@ -14,7 +14,7 @@
- BF6HEC9M/jagPc3wN6LzoIFOcqz6U6GkFfq7B5nijQc=
+ ih3KkGKpdid9dU5UoQEXXgsZpplgMpRUQ8Tqz1i1/wQ=
diff --git a/shangjian/AutoUpdate/bin/Debug/AutoUpdate.exe b/shangjian/AutoUpdate/bin/Debug/AutoUpdate.exe
index 656cb6e..ec8c2dc 100644
Binary files a/shangjian/AutoUpdate/bin/Debug/AutoUpdate.exe and b/shangjian/AutoUpdate/bin/Debug/AutoUpdate.exe differ
diff --git a/shangjian/AutoUpdate/bin/Debug/AutoUpdate.exe.manifest b/shangjian/AutoUpdate/bin/Debug/AutoUpdate.exe.manifest
index ef2ad1f..a9f9db0 100644
--- a/shangjian/AutoUpdate/bin/Debug/AutoUpdate.exe.manifest
+++ b/shangjian/AutoUpdate/bin/Debug/AutoUpdate.exe.manifest
@@ -49,7 +49,7 @@
- iy/mPB9no8LMx3n5XtwTBu3OAI6tw4qGaQVBeTlUnhM=
+ g3bEdlk6z/YhmxjUvrtfWuYKNM4Z225YvrpzH8n8vcI=
diff --git a/shangjian/AutoUpdate/bin/Debug/AutoUpdate.pdb b/shangjian/AutoUpdate/bin/Debug/AutoUpdate.pdb
index 3f2681d..10d6beb 100644
Binary files a/shangjian/AutoUpdate/bin/Debug/AutoUpdate.pdb and b/shangjian/AutoUpdate/bin/Debug/AutoUpdate.pdb differ
diff --git a/shangjian/AutoUpdate/bin/Debug/app.publish/AutoUpdate.exe b/shangjian/AutoUpdate/bin/Debug/app.publish/AutoUpdate.exe
index 656cb6e..ec8c2dc 100644
Binary files a/shangjian/AutoUpdate/bin/Debug/app.publish/AutoUpdate.exe and b/shangjian/AutoUpdate/bin/Debug/app.publish/AutoUpdate.exe differ
diff --git a/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.application b/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.application
index 7b6e3dd..69a618a 100644
--- a/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.application
+++ b/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.application
@@ -14,7 +14,7 @@
- BF6HEC9M/jagPc3wN6LzoIFOcqz6U6GkFfq7B5nijQc=
+ ih3KkGKpdid9dU5UoQEXXgsZpplgMpRUQ8Tqz1i1/wQ=
diff --git a/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.exe b/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.exe
index 656cb6e..ec8c2dc 100644
Binary files a/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.exe and b/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.exe differ
diff --git a/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.exe.manifest b/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.exe.manifest
index ef2ad1f..a9f9db0 100644
--- a/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.exe.manifest
+++ b/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.exe.manifest
@@ -49,7 +49,7 @@
- iy/mPB9no8LMx3n5XtwTBu3OAI6tw4qGaQVBeTlUnhM=
+ g3bEdlk6z/YhmxjUvrtfWuYKNM4Z225YvrpzH8n8vcI=
diff --git a/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.pdb b/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.pdb
index 3f2681d..10d6beb 100644
Binary files a/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.pdb and b/shangjian/AutoUpdate/obj/x86/Debug/AutoUpdate.pdb differ
diff --git a/shangjian/BL.sln b/shangjian/BL.sln
index b387977..0020808 100644
--- a/shangjian/BL.sln
+++ b/shangjian/BL.sln
@@ -27,6 +27,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPFupdate", "WPFupdate\WPFu
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XGLFinishPro", "XGLFinishPro\XGLFinishPro.csproj", "{9EF5B36A-859B-4445-9F7C-B6D796898AD6}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RestartApp", "RestartApp\RestartApp.csproj", "{CACAA9D6-5778-491A-A04F-261CF356DC6D}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -331,6 +333,30 @@ Global
{9EF5B36A-859B-4445-9F7C-B6D796898AD6}.Release|x64.Build.0 = Release|Any CPU
{9EF5B36A-859B-4445-9F7C-B6D796898AD6}.Release|x86.ActiveCfg = Release|x86
{9EF5B36A-859B-4445-9F7C-B6D796898AD6}.Release|x86.Build.0 = Release|x86
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Debug|ARM.Build.0 = Debug|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Debug|x64.Build.0 = Debug|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Debug|x86.Build.0 = Debug|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Release|ARM.ActiveCfg = Release|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Release|ARM.Build.0 = Release|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Release|ARM64.Build.0 = Release|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Release|x64.ActiveCfg = Release|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Release|x64.Build.0 = Release|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Release|x86.ActiveCfg = Release|Any CPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/shangjian/CentralControl/bin/Debug/CentralControl.exe b/shangjian/CentralControl/bin/Debug/CentralControl.exe
index c79efdb..9aa4d82 100644
Binary files a/shangjian/CentralControl/bin/Debug/CentralControl.exe and b/shangjian/CentralControl/bin/Debug/CentralControl.exe differ
diff --git a/shangjian/CentralControl/bin/Debug/CentralControl.pdb b/shangjian/CentralControl/bin/Debug/CentralControl.pdb
index 687cb36..afb30a2 100644
Binary files a/shangjian/CentralControl/bin/Debug/CentralControl.pdb and b/shangjian/CentralControl/bin/Debug/CentralControl.pdb differ
diff --git a/shangjian/CentralControl/bin/Debug/CommonFunc.dll b/shangjian/CentralControl/bin/Debug/CommonFunc.dll
index 7c8518c..fd2d584 100644
Binary files a/shangjian/CentralControl/bin/Debug/CommonFunc.dll and b/shangjian/CentralControl/bin/Debug/CommonFunc.dll differ
diff --git a/shangjian/CentralControl/bin/Debug/CommonFunc.pdb b/shangjian/CentralControl/bin/Debug/CommonFunc.pdb
index 04a6282..b2b06b0 100644
Binary files a/shangjian/CentralControl/bin/Debug/CommonFunc.pdb and b/shangjian/CentralControl/bin/Debug/CommonFunc.pdb differ
diff --git a/shangjian/CentralControl/bin/Debug/XGL.Data.dll b/shangjian/CentralControl/bin/Debug/XGL.Data.dll
index 2296b5b..a01740a 100644
Binary files a/shangjian/CentralControl/bin/Debug/XGL.Data.dll and b/shangjian/CentralControl/bin/Debug/XGL.Data.dll differ
diff --git a/shangjian/CentralControl/bin/Debug/XGL.Data.pdb b/shangjian/CentralControl/bin/Debug/XGL.Data.pdb
index 5c923c9..f0809a6 100644
Binary files a/shangjian/CentralControl/bin/Debug/XGL.Data.pdb and b/shangjian/CentralControl/bin/Debug/XGL.Data.pdb differ
diff --git a/shangjian/CentralControl/bin/Debug/XGL.Models.dll b/shangjian/CentralControl/bin/Debug/XGL.Models.dll
index fa5ec7e..c1616e7 100644
Binary files a/shangjian/CentralControl/bin/Debug/XGL.Models.dll and b/shangjian/CentralControl/bin/Debug/XGL.Models.dll differ
diff --git a/shangjian/CentralControl/bin/Debug/XGL.Models.pdb b/shangjian/CentralControl/bin/Debug/XGL.Models.pdb
index 6ac9c55..e067297 100644
Binary files a/shangjian/CentralControl/bin/Debug/XGL.Models.pdb and b/shangjian/CentralControl/bin/Debug/XGL.Models.pdb differ
diff --git a/shangjian/CentralControl/bin/Debug/XGL.Thrift.dll b/shangjian/CentralControl/bin/Debug/XGL.Thrift.dll
index ed604e6..eb53d59 100644
Binary files a/shangjian/CentralControl/bin/Debug/XGL.Thrift.dll and b/shangjian/CentralControl/bin/Debug/XGL.Thrift.dll differ
diff --git a/shangjian/CentralControl/bin/Debug/XGL.Thrift.pdb b/shangjian/CentralControl/bin/Debug/XGL.Thrift.pdb
index 9bb1fbb..db16807 100644
Binary files a/shangjian/CentralControl/bin/Debug/XGL.Thrift.pdb and b/shangjian/CentralControl/bin/Debug/XGL.Thrift.pdb differ
diff --git a/shangjian/CentralControl/obj/Debug/CentralControl.csproj.AssemblyReference.cache b/shangjian/CentralControl/obj/Debug/CentralControl.csproj.AssemblyReference.cache
index 0fa77b0..ed78be8 100644
Binary files a/shangjian/CentralControl/obj/Debug/CentralControl.csproj.AssemblyReference.cache and b/shangjian/CentralControl/obj/Debug/CentralControl.csproj.AssemblyReference.cache differ
diff --git a/shangjian/CentralControl/obj/Debug/CentralControl.exe b/shangjian/CentralControl/obj/Debug/CentralControl.exe
index c79efdb..9aa4d82 100644
Binary files a/shangjian/CentralControl/obj/Debug/CentralControl.exe and b/shangjian/CentralControl/obj/Debug/CentralControl.exe differ
diff --git a/shangjian/CentralControl/obj/Debug/CentralControl.pdb b/shangjian/CentralControl/obj/Debug/CentralControl.pdb
index 687cb36..afb30a2 100644
Binary files a/shangjian/CentralControl/obj/Debug/CentralControl.pdb and b/shangjian/CentralControl/obj/Debug/CentralControl.pdb differ
diff --git a/shangjian/CommonFunc/DataConfig/SqlDataObject.cs b/shangjian/CommonFunc/DataConfig/SqlDataObject.cs
index 26d2a3e..aaba341 100644
--- a/shangjian/CommonFunc/DataConfig/SqlDataObject.cs
+++ b/shangjian/CommonFunc/DataConfig/SqlDataObject.cs
@@ -1,4 +1,6 @@
+using CommonFunc.Tools;
using System;
+using System.Data;
using System.Data.SqlClient;
namespace CommonFunc
@@ -104,8 +106,17 @@ namespace CommonFunc
{
get
{
- ConnectionConfig conSetting = DatabaseConfig.GetSettingsDirectory();
- return CommonFunc.DESProvider.DecryptString(conSetting.MESNetClientConnectionString);
+ string sql = $"SELECT db_url FROM[dbo].[sys_datasource] where dept_id = '{Utils.GetAppSetting("SiteCode")}'";
+ DataTable dt = Utils.cloudDBHelper.getDataSet(sql).Tables[0];
+ if (dt == null || dt.Rows.Count <= 0 || string.IsNullOrEmpty(dt.Rows[0][0].ToString()))
+ {
+ ConnectionConfig conSetting = DatabaseConfig.GetSettingsDirectory();
+ return CommonFunc.DESProvider.DecryptString(conSetting.MESNetClientConnectionString);
+ }
+ else
+ {
+ return dt.Rows[0][0].ToString();
+ }
}
}
diff --git a/shangjian/CommonFunc/LoginUserInfo.cs b/shangjian/CommonFunc/LoginUserInfo.cs
index 11f97df..80f2a3b 100644
--- a/shangjian/CommonFunc/LoginUserInfo.cs
+++ b/shangjian/CommonFunc/LoginUserInfo.cs
@@ -55,6 +55,10 @@ namespace CommonFunc
/// 版本
///
public static string End_Time { get; set; }
+ ///
+ /// 当前设备IP
+ ///
+ public static string CurrDeviceIP { get; set; }
}
diff --git a/shangjian/LanJuControl/obj/Debug/LanJuControl.csproj.AssemblyReference.cache b/shangjian/LanJuControl/obj/Debug/LanJuControl.csproj.AssemblyReference.cache
index b7c22d6..e653b41 100644
Binary files a/shangjian/LanJuControl/obj/Debug/LanJuControl.csproj.AssemblyReference.cache and b/shangjian/LanJuControl/obj/Debug/LanJuControl.csproj.AssemblyReference.cache differ
diff --git a/shangjian/LanJuLib/bin/Debug/CommonFunc.dll b/shangjian/LanJuLib/bin/Debug/CommonFunc.dll
index 7c8518c..fd2d584 100644
Binary files a/shangjian/LanJuLib/bin/Debug/CommonFunc.dll and b/shangjian/LanJuLib/bin/Debug/CommonFunc.dll differ
diff --git a/shangjian/LanJuLib/bin/Debug/CommonFunc.pdb b/shangjian/LanJuLib/bin/Debug/CommonFunc.pdb
index 04a6282..b2b06b0 100644
Binary files a/shangjian/LanJuLib/bin/Debug/CommonFunc.pdb and b/shangjian/LanJuLib/bin/Debug/CommonFunc.pdb differ
diff --git a/shangjian/LanJuLib/bin/Debug/XGL.Models.dll b/shangjian/LanJuLib/bin/Debug/XGL.Models.dll
index fa5ec7e..c1616e7 100644
Binary files a/shangjian/LanJuLib/bin/Debug/XGL.Models.dll and b/shangjian/LanJuLib/bin/Debug/XGL.Models.dll differ
diff --git a/shangjian/LanJuLib/bin/Debug/XGL.Models.pdb b/shangjian/LanJuLib/bin/Debug/XGL.Models.pdb
index 6ac9c55..e067297 100644
Binary files a/shangjian/LanJuLib/bin/Debug/XGL.Models.pdb and b/shangjian/LanJuLib/bin/Debug/XGL.Models.pdb differ
diff --git a/shangjian/LanJuLib/obj/Debug/LanJuLib.csproj.AssemblyReference.cache b/shangjian/LanJuLib/obj/Debug/LanJuLib.csproj.AssemblyReference.cache
index a42fc34..2623910 100644
Binary files a/shangjian/LanJuLib/obj/Debug/LanJuLib.csproj.AssemblyReference.cache and b/shangjian/LanJuLib/obj/Debug/LanJuLib.csproj.AssemblyReference.cache differ
diff --git a/shangjian/RestartApp/App.config b/shangjian/RestartApp/App.config
new file mode 100644
index 0000000..193aecc
--- /dev/null
+++ b/shangjian/RestartApp/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/shangjian/RestartApp/Properties/AssemblyInfo.cs b/shangjian/RestartApp/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..bee05c5
--- /dev/null
+++ b/shangjian/RestartApp/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("WPFupdate")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("HP")]
+[assembly: AssemblyProduct("WPFupdate")]
+[assembly: AssemblyCopyright("Copyright © HP 2023")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("703cdc32-203a-4b71-8b3e-306a48ab3f8b")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/shangjian/RestartApp/RestartApp.cs b/shangjian/RestartApp/RestartApp.cs
new file mode 100644
index 0000000..f053b7a
--- /dev/null
+++ b/shangjian/RestartApp/RestartApp.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace WPFupdate
+{
+ internal class WPFupdate1
+ {
+ public static void Main(string[] args)
+ {
+
+ Console.WriteLine(args[0]);
+
+ Thread.Sleep(1500);
+ // 设置要启动的应用程序名称和参数
+ string appName = args[0];//"XGLFinishPro.exe"; // 替换为你的目标控制台应用程序的名称
+ string appArguments = " ";// 替换为你的应用程序需要的参数
+ Console.WriteLine(appName);
+
+ // 创建进程启动信息
+ ProcessStartInfo startInfo = new ProcessStartInfo
+ {
+ FileName = appName,
+ Arguments = appArguments,
+ RedirectStandardOutput = false, // 可以选择是否重定向标准输出
+ UseShellExecute = false, // 必须设置为false,以便在控制台中启动应用程序
+ CreateNoWindow = false // 设置为true,以便在后台启动应用程序
+ };
+
+ // 创建并启动进程
+ Process process = new Process
+ {
+ StartInfo = startInfo
+ };
+
+ process.Start();
+ Environment.Exit(0);
+
+ Console.ReadLine();
+ // 在这里添加你的应用程序的主要逻辑
+ }
+ }
+}
diff --git a/shangjian/RestartApp/RestartApp.csproj b/shangjian/RestartApp/RestartApp.csproj
new file mode 100644
index 0000000..4f36329
--- /dev/null
+++ b/shangjian/RestartApp/RestartApp.csproj
@@ -0,0 +1,58 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {CACAA9D6-5778-491A-A04F-261CF356DC6D}
+ Exe
+ RestartApp
+ RestartApp
+ v4.8
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\packages\HtmlAgilityPack.1.11.54\lib\Net45\HtmlAgilityPack.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/shangjian/RestartApp/RestartApp1.dll b/shangjian/RestartApp/RestartApp1.dll
new file mode 100644
index 0000000..4d871c8
Binary files /dev/null and b/shangjian/RestartApp/RestartApp1.dll differ
diff --git a/shangjian/RestartApp/RestartApp1.exe b/shangjian/RestartApp/RestartApp1.exe
new file mode 100644
index 0000000..b429422
Binary files /dev/null and b/shangjian/RestartApp/RestartApp1.exe differ
diff --git a/shangjian/RestartApp/bin/Debug/HtmlAgilityPack.dll b/shangjian/RestartApp/bin/Debug/HtmlAgilityPack.dll
new file mode 100644
index 0000000..5bbe450
Binary files /dev/null and b/shangjian/RestartApp/bin/Debug/HtmlAgilityPack.dll differ
diff --git a/shangjian/RestartApp/bin/Debug/HtmlAgilityPack.pdb b/shangjian/RestartApp/bin/Debug/HtmlAgilityPack.pdb
new file mode 100644
index 0000000..5591fda
Binary files /dev/null and b/shangjian/RestartApp/bin/Debug/HtmlAgilityPack.pdb differ
diff --git a/shangjian/RestartApp/bin/Debug/HtmlAgilityPack.xml b/shangjian/RestartApp/bin/Debug/HtmlAgilityPack.xml
new file mode 100644
index 0000000..b2fa1f5
--- /dev/null
+++ b/shangjian/RestartApp/bin/Debug/HtmlAgilityPack.xml
@@ -0,0 +1,3292 @@
+
+
+
+ HtmlAgilityPack
+
+
+
+
+ A utility class to compute CRC32.
+
+
+
+
+ Compute a checksum for a given array of bytes.
+
+ The array of bytes to compute the checksum for.
+ The computed checksum.
+
+
+
+ Compute a checksum for a given string.
+
+ The string to compute the checksum for.
+ The computed checksum.
+
+
+
+ Represents an HTML attribute.
+
+
+
+
+ Gets the line number of this attribute in the document.
+
+
+
+
+ Gets the column number of this attribute in the document.
+
+
+
+
+ Gets the stream position of the value of this attribute in the document, relative to the start of the document.
+
+
+
+
+ Gets the length of the value.
+
+
+
+ Gets or sets a value indicating whether the attribute should use the original name.
+ True if the attribute should use the original name, false if not.
+
+
+
+ Gets the qualified name of the attribute.
+
+
+
+
+ Name of attribute with original case
+
+
+
+
+ Gets the HTML document to which this attribute belongs.
+
+
+
+
+ Gets the HTML node to which this attribute belongs.
+
+
+
+
+ Specifies what type of quote the data should be wrapped in
+
+
+
+
+ Specifies what type of quote the data should be wrapped in (internal to keep backward compatibility)
+
+
+
+
+ Gets the stream position of this attribute in the document, relative to the start of the document.
+
+
+
+
+ Gets or sets the value of the attribute.
+
+
+
+
+ Gets the DeEntitized value of the attribute.
+
+
+
+
+ Gets a valid XPath string that points to this Attribute
+
+
+
+
+ Compares the current instance with another attribute. Comparison is based on attributes' name.
+
+ An attribute to compare with this instance.
+ A 32-bit signed integer that indicates the relative order of the names comparison.
+
+
+
+ Creates a duplicate of this attribute.
+
+ The cloned attribute.
+
+
+
+ Removes this attribute from it's parents collection
+
+
+
+
+ An Enum representing different types of Quotes used for surrounding attribute values
+
+
+
+
+ A single quote mark '
+
+
+
+
+ A double quote mark "
+
+
+
+
+ No quote mark
+
+
+
+ Without the value such as '<span readonly>'
+
+
+
+ The initial value (current value)
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Gets readonly status of colelction
+
+
+
+
+ Gets the attribute at the specified index.
+
+
+
+
+ Gets a given attribute from the list using its name.
+
+
+
+
+ Adds a new attribute to the collection with the given values
+
+
+
+
+
+
+ Adds supplied item to collection
+
+
+
+
+ Adds a range supplied items to collection.
+ An IEnumerable<HtmlAttribute> of items to append to this.
+
+
+ Adds a range supplied items to collection using a dictionary.
+ A Dictionary<string,string> of items to append to this.
+
+
+
+ Explicit clear
+
+
+
+
+ Retreives existence of supplied item
+
+
+
+
+
+
+ Copies collection to array
+
+
+
+
+
+
+ Get Explicit enumerator
+
+
+
+
+
+ Explicit non-generic enumerator
+
+
+
+
+
+ Retrieves the index for the supplied item, -1 if not found
+
+
+
+
+
+
+ Inserts given item into collection at supplied index
+
+
+
+
+
+
+ Explicit collection remove
+
+
+
+
+
+
+ Removes the attribute at the specified index.
+
+ The index of the attribute to remove.
+
+
+
+ Inserts the specified attribute as the last attribute in the collection.
+
+ The attribute to insert. May not be null.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The value of the attribute to insert.
+ The appended attribute.
+
+
+
+ Checks for existance of attribute with given name
+
+
+
+
+
+
+ Inserts the specified attribute as the first node in the collection.
+
+ The attribute to insert. May not be null.
+ The prepended attribute.
+
+
+
+ Removes a given attribute from the list.
+
+ The attribute to remove. May not be null.
+
+
+
+ Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed.
+
+ The attribute's name. May not be null.
+
+
+
+ Remove all attributes in the list.
+
+
+
+
+ Returns all attributes with specified name. Handles case insentivity
+
+ Name of the attribute
+
+
+
+
+ Removes all attributes from the collection
+
+
+
+
+ Clears the attribute collection
+
+
+
+
+ Represents an HTML comment.
+
+
+
+
+ Gets or Sets the comment text of the node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Represents a complete HTML document.
+
+
+
+ True to disable, false to enable the behavior tag p.
+
+
+ Default builder to use in the HtmlDocument constructor
+
+
+ Action to execute before the Parse is executed
+
+
+
+ Defines the max level we would go deep into the html document
+
+
+
+ The HtmlDocument Text. Careful if you modify it.
+
+
+ True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility.
+
+
+
+ Adds Debugging attributes to node. Default is false.
+
+
+
+
+ Defines if closing for non closed nodes must be done at the end or directly in the document.
+ Setting this to true can actually change how browsers render the page. Default is false.
+
+
+
+
+ Defines if non closed nodes will be checked at the end of parsing. Default is true.
+
+
+
+
+ Defines if a checksum must be computed for the document while parsing. Default is false.
+
+
+
+
+ Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression.
+ Setting this to true will return empty collection and false will return null. Default is false.
+
+
+
+ True to disable, false to enable the server side code.
+
+
+
+ Defines the default stream encoding to use. Default is System.Text.Encoding.Default.
+
+
+
+
+ Force to take the original comment instead of creating it
+
+
+
+
+ Defines if source text must be extracted while parsing errors.
+ If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true.
+ Default is false.
+
+
+
+
+ Defines the maximum length of source text or parse errors. Default is 100.
+
+
+
+
+ Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false.
+
+
+
+
+ Defines if output must conform to XML, instead of HTML. Default is false.
+
+
+
+
+ If used together with and enabled, Xml namespaces in element names are preserved. Default is false.
+
+
+
+
+ Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false.
+
+
+
+ Defines the global attribute value quote. When specified, it will always win.
+
+
+
+ Defines if name must be output with it's original case. Useful for asp.net tags and attributes. Default is false.
+
+
+
+
+ Defines if name must be output in uppercase. Default is false.
+
+
+
+
+ Defines if declared encoding must be read from the document.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+ Default is true.
+
+
+
+
+ Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null.
+
+
+
+
+ Defines if attributes should use original names by default, rather than lower case. Default is false.
+
+
+
+
+ Defines if the 'id' attribute must be specifically used. Default is true.
+
+
+
+
+ Defines if empty nodes must be written as closed during output. Default is false.
+
+
+
+
+ The max number of nested child nodes.
+ Added to prevent stackoverflow problem when a page has tens of thousands of opening html tags with no closing tags
+
+
+
+
+ Creates an instance of an HTML document.
+
+
+
+ Gets the parsed text.
+ The parsed text.
+
+
+
+ Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is
+ thrown.
+
+
+
+
+ Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise.
+
+
+
+
+ Gets the document's declared encoding.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node (pre-HTML5) or the meta charset="XXXXX" html node (HTML5).
+
+
+
+
+ Gets the root node of the document.
+
+
+
+
+ Gets the document's output encoding.
+
+
+
+
+ Gets a list of parse errors found in the document.
+
+
+
+
+ Gets the remaining text.
+ Will always be null if OptionStopperNodeName is null.
+
+
+
+
+ Gets the offset of Remainder in the original Html text.
+ If OptionStopperNodeName is null, this will return the length of the original Html text.
+
+
+
+
+ Gets the document's stream encoding.
+
+
+
+
+ Gets a valid XML name.
+
+ Any text.
+ A string that is a valid XML name.
+
+
+
+ Applies HTML encoding to a specified string.
+
+ The input string to encode. May not be null.
+ The encoded string.
+
+
+
+ Determines if the specified character is considered as a whitespace character.
+
+ The character to check.
+ true if if the specified character is considered as a whitespace character.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The new HTML attribute.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The value of the attribute.
+ The new HTML attribute.
+
+
+
+ Creates an HTML comment node.
+
+ The new HTML comment node.
+
+
+
+ Creates an HTML comment node with the specified comment text.
+
+ The comment text. May not be null.
+ The new HTML comment node.
+
+
+
+ Creates an HTML element node with the specified name.
+
+ The qualified name of the element. May not be null.
+ The new HTML node.
+
+
+
+ Creates an HTML text node.
+
+ The new HTML text node.
+
+
+
+ Creates an HTML text node with the specified text.
+
+ The text of the node. May not be null.
+ The new HTML text node.
+
+
+
+ Detects the encoding of an HTML stream.
+
+ The input stream. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML stream.
+
+ The input stream. May not be null.
+ The html is checked.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text provided on a TextReader.
+
+ The TextReader used to feed the HTML. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text.
+
+ The input html text. May not be null.
+ The detected encoding.
+
+
+
+ Gets the HTML node with the specified 'id' attribute value.
+
+ The attribute id to match. May not be null.
+ The HTML node with the matching id or null if not found.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Loads the HTML document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document. May not be null.
+
+
+
+ Loads the HTML document from the specified string.
+
+ String containing the HTML document to load. May not be null.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Saves the HTML document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the HTML document to the specified TextWriter.
+
+ The TextWriter to which you want to save. May not be null.
+
+
+
+ Saves the HTML document to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read.
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read. May not be null.
+ true to detect encoding, false otherwise.
+
+
+
+ Detects the encoding of an HTML file.
+
+ Path for the file containing the HTML document to detect. May not be null.
+ The detected encoding.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML document.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the root of the document.
+
+
+
+ Flags that describe the behavior of an Element node.
+
+
+
+
+ The node is a CDATA node.
+
+
+
+
+ The node is empty. META or IMG are example of such nodes.
+
+
+
+
+ The node will automatically be closed during parsing.
+
+
+
+
+ The node can overlap.
+
+
+
+
+ A utility class to replace special characters by entities and vice-versa.
+ Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html
+ Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
+ See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references
+
+
+
+
+ A collection of entities indexed by name.
+
+
+
+
+ A collection of entities indexed by value.
+
+
+
+
+ Replace known entities by characters.
+
+ The source text.
+ The result text.
+
+
+
+ Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes.
+
+ The node to entitize.
+ An entitized cloned node.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized.
+ The result text
+
+
+
+ Represents an HTML node.
+
+
+
+
+ Gets the name of a comment node. It is actually defined as '#comment'.
+
+
+
+
+ Gets the name of the document node. It is actually defined as '#document'.
+
+
+
+
+ Gets the name of a text node. It is actually defined as '#text'.
+
+
+
+
+ Gets a collection of flags that define specific behaviors for specific element nodes.
+ The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value.
+
+
+
+
+ Initialize HtmlNode. Builds a list of all tags that have special allowances
+
+
+
+
+ Initializes HtmlNode, providing type, owner and where it exists in a collection
+
+
+
+
+
+
+
+ Gets the collection of HTML attributes for this node. May not be null.
+
+
+
+
+ Gets all the children of the node.
+
+
+
+
+ Gets a value indicating if this node has been closed or not.
+
+
+
+
+ Gets the collection of HTML attributes for the closing tag. May not be null.
+
+
+
+
+ Gets the closing tag of the node, null if the node is self-closing.
+
+
+
+
+ Gets the first child of the node.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes.
+
+
+
+
+ Gets a value indicating whether this node has any child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes on the closing tag.
+
+
+
+
+ Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object.
+
+
+
+
+ Gets the text between the start and end tags of the object.
+
+
+
+ Gets direct inner text.
+ The direct inner text.
+
+
+
+ Gets the last child of the node.
+
+
+
+
+ Gets the line number of this node in the document.
+
+
+
+
+ Gets the column number of this node in the document.
+
+
+
+
+ Gets the stream position of the area between the opening and closing tag of the node, relative to the start of the document.
+
+
+
+
+ Gets the stream position of the area of the beginning of the tag, relative to the start of the document.
+
+
+
+
+ Gets the length of the area between the opening and closing tag of the node.
+
+
+
+
+ Gets the length of the entire node, opening and closing tag included.
+
+
+
+
+ Gets or sets this node's name.
+
+
+
+
+ Gets the HTML node immediately following this element.
+
+
+
+
+ Gets the type of this node.
+
+
+
+
+ The original unaltered name of the tag
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets the to which this node belongs.
+
+
+
+
+ Gets the parent of this node (for nodes that can have parents).
+
+
+
+
+ Gets the node immediately preceding this node.
+
+
+
+
+ Gets the stream position of this node in the document, relative to the start of the document.
+
+
+
+
+ Gets a valid XPath string that points to this node
+
+
+
+
+ The depth of the node relative to the opening root html element. This value is used to determine if a document has to many nested html nodes which can cause stack overflows
+
+
+
+
+ Determines if an element node can be kept overlapped.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an element node that can be kept overlapped, false otherwise.
+
+
+
+ Creates an HTML node from a string representing literal HTML.
+
+ The HTML text.
+ The newly created node instance.
+
+
+
+ Creates an HTML node from a string representing literal HTML.
+
+ The HTML text.
+ The HTML Document builder.
+ The newly created node instance.
+
+
+
+ Determines if an element node is a CDATA element node.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a CDATA element node, false otherwise.
+
+
+
+ Determines if an element node is closed.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a closed element node, false otherwise.
+
+
+
+ Determines if an element node is defined as empty.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an empty element node, false otherwise.
+
+
+
+ Determines if a text corresponds to the closing tag of an node that can be kept overlapped.
+
+ The text to check. May not be null.
+ true or false.
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Get Ancestors with matching name
+
+
+
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Gets all anscestor nodes and the current node
+
+
+
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+ Sets child nodes identifier.
+ The chil node.
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Gets all Attributes with name
+
+
+
+
+
+
+ Creates a duplicate of the node
+
+
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node.
+
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and the subtree under it.
+
+ The node to duplicate. May not be null.
+
+
+
+ Creates a duplicate of the node.
+
+ The node to duplicate. May not be null.
+ true to recursively clone the subtree under the specified node, false to clone only the node itself.
+
+
+
+ Gets all Descendant nodes for this node and each of child nodes
+
+ The depth level of the node to parse in the html tree
+ the current element as an HtmlNode
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all Descendant nodes in enumerated list
+
+
+
+
+
+ Gets all Descendant nodes in enumerated list
+
+
+
+
+
+ Get all descendant nodes with matching name
+
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all descendant nodes including this node
+
+
+
+
+
+
+ Gets first generation child node matching name
+
+
+
+
+
+
+ Gets matching first generation child nodes matching name
+
+
+
+
+
+ Gets data attribute.
+ The key.
+ The data attribute.
+
+
+ Gets the data attributes in this collection.
+
+ An enumerator that allows foreach to be used to process the data attributes in this
+ collection.
+
+
+
+ Gets the attributes in this collection.
+
+ An enumerator that allows foreach to be used to process the attributes in this collection.
+
+
+
+ Gets the attributes in this collection.
+ A variable-length parameters list containing attribute names.
+
+ An enumerator that allows foreach to be used to process the attributes in this collection.
+
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found,
+ the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Inserts the specified node immediately after the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newNode is placed after the refNode.
+ The node being inserted.
+
+
+
+ Inserts the specified node immediately before the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newChild is placed before this node.
+ The node being inserted.
+
+
+
+ Adds the specified node to the beginning of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node list to the beginning of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Removes node from parent collection
+
+
+
+
+ Removes all the children and/or attributes of the current node.
+
+
+
+
+ Removes all the children of the current node.
+
+
+
+ Removes all id for node described by node.
+ The node.
+
+
+ Move a node already associated and append it to this node instead.
+ The child node to move.
+
+
+ Move a children collection already associated and append it to this node instead.
+ The children collection already associated to move to another node.
+
+
+ Removes the children collection for this node.
+ The old children collection to remove.
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ The node removed.
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ true to keep grand children of the node, false otherwise.
+ The node removed.
+
+
+
+ Replaces the child node oldChild with newChild node.
+
+ The new node to put in the child list.
+ The node being replaced in the list.
+ The node replaced.
+
+
+
+ Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically.
+
+ The name of the attribute to set. May not be null.
+ The value for the attribute.
+ The corresponding attribute instance.
+
+
+
+ Saves all the children of the node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+ Identifies the level we are in starting at root with 0
+
+
+
+ Saves all the children of the node to a string.
+
+ The saved string.
+
+
+
+ Saves the current node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+ identifies the level we are in starting at root with 0
+
+
+
+ Saves the current node to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Saves the current node to a string.
+
+ The saved string.
+
+
+
+ Sets the parent Html node and properly determines the current node's depth using the parent node's depth.
+
+
+
+
+ Adds one or more classes to this node.
+
+ The node list to add. May not be null.
+
+
+
+ Adds one or more classes to this node.
+
+ The node list to add. May not be null.
+ true to throw Error if class name exists, false otherwise.
+
+
+
+ Removes the class attribute from the node.
+
+
+
+
+ Removes the class attribute from the node.
+
+ true to throw Error if class name doesn't exist, false otherwise.
+
+
+
+ Removes the specified class from the node.
+
+ The class being removed. May not be null.
+
+
+
+ Removes the specified class from the node.
+
+ The class being removed. May not be null.
+ true to throw Error if class name doesn't exist, false otherwise.
+
+
+
+ Replaces the class name oldClass with newClass name.
+
+ The new class name.
+ The class being replaced.
+
+
+
+ Replaces the class name oldClass with newClass name.
+
+ The new class name.
+ The class being replaced.
+ true to throw Error if class name doesn't exist, false otherwise.
+
+
+ Gets the CSS Class from the node.
+
+ The CSS Class from the node
+
+
+
+ Check if the node class has the parameter class.
+ The class.
+ True if node class has the parameter class, false if not.
+
+
+
+ Fill an object and go through it's properties and fill them too.
+
+ Type of object to want to fill. It should have atleast one property that defined XPath.
+ Returns an object of type T including Encapsulated data.
+ Why it's thrown.
+ Why it's thrown.
+
+
+
+
+
+ Why it's thrown.
+ Why it's thrown.
+
+
+
+
+ Fill an object and go through it's properties and fill them too.
+
+ Type of object to want to fill. It should have atleast one property that defined XPath.
+ If htmlDocument includes data , leave this parameter null. Else pass your specific htmldocument.
+ Returns an object of type T including Encapsulated data.
+ Why it's thrown.
+ Why it's thrown.
+
+
+
+
+
+ Why it's thrown.
+ Why it's thrown.
+
+
+
+
+ Fill an object and go through it's properties and fill them too.
+
+ Type of object to want to fill. It should have atleast one property that defined XPath.
+ If htmlDocument includes data , leave this parameter null. Else pass your specific htmldocument.
+ Returns an object of type targetType including Encapsulated data.
+ Why it's thrown.
+ Why it's thrown.
+
+
+
+
+
+ Why it's thrown.
+ Why it's thrown.
+
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML node.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document.
+
+
+
+ Creates an XPathNavigator using the root of this document.
+
+
+
+
+
+ Selects a list of nodes matching the expression.
+
+ The XPath expression.
+ An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
+
+
+
+ Selects a list of nodes matching the expression.
+
+ The XPath expression.
+ An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
+
+
+
+ Selects the first XmlNode that matches the expression.
+
+ The XPath expression. May not be null.
+ The first that matches the XPath query or a null reference if no matching node was found.
+
+
+
+ Selects the first XmlNode that matches the expression.
+
+ The XPath expression.
+ An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
+
+
+
+ Includes tools that GetEncapsulatedData method uses them.
+
+
+
+
+ Determine if a type define an attribute or not , supporting both .NetStandard and .NetFramework2.0
+
+ Type you want to test it.
+ Attribute that type must have or not.
+ If true , The type parameter define attributeType parameter.
+
+
+
+ Retrive properties of type that defined .
+
+ Type that you want to find it's XPath-Defined properties.
+ IEnumerable of property infos of a type , that defined specific attribute.
+
+
+
+ Determine if a has implemented BUT is considered as NONE-IEnumerable !
+
+ The property info you want to test.
+ True if property info is IEnumerable.
+
+
+
+ Returns T type(first generic type) of or .
+
+ IEnumerable-Implemented property
+ List of generic types.
+
+
+
+ Find and Return a mehtod that defined in a class by it's name.
+
+ Type of class include requested method.
+ Name of requested method as string.
+ Method info of requested method.
+
+
+
+ Create of given type.
+
+ Type that you want to make a List of it.
+ Returns IList of given type.
+
+
+
+ Returns the part of value of you want as .
+
+ A htmlNode instance.
+ Attribute that includes ReturnType
+ String that choosen from HtmlNode as result.
+
+
+
+ Returns parts of values of you want as .
+
+ that you want to retrive each value.
+ A instnce incules .
+ Type of IList generic you want.
+
+
+
+
+ Simulate Func method to use in Lambada Expression.
+
+
+
+
+
+
+
+
+ This method works like Where method in LINQ.
+
+
+
+
+
+
+
+
+ Check if the type can instantiated.
+
+
+
+
+
+
+ Returns count of elements stored in IEnumerable of T
+
+
+
+
+
+
+
+ Return html part of based on
+
+ A htmlNode instance.
+
+ Html part
+ Out of range to the
+
+
+
+ Specify which part of is requested.
+
+
+
+
+ The text between the start and end tags of the object.
+
+
+
+
+ The HTML between the start and end tags of the object
+
+
+
+
+ The object and its content in HTML
+
+
+
+
+ Just mark and flag classes to show they have properties that defined .
+
+
+
+
+ Includes XPath and . XPath for finding html tags and for specify which part of you want to return.
+
+
+
+
+ XPath Expression that is used to find related html node.
+
+
+
+
+ Html Attribute name
+
+
+
+
+ The methode of output
+
+
+
+
+ Specify Xpath to find related Html Node.
+
+
+
+
+
+ Specify Xpath to find related Html Node.
+
+
+ Specify you want the output include html text too.
+
+
+
+ Specify Xpath and Attribute to find related Html Node and its attribute value.
+
+
+
+
+
+
+ Tagging a property with this Attribute make Encapsulator to ignore that property if it causes an error.
+
+
+
+
+ Exception that often occures when there is no way to bind a XPath to a Html Tag.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Exception that often occures when there is no way to bind a XPath to a HtmlTag Attribute.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Exception that often occures when there is no property that assigned with XPath Property in Class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Exception that occurs when an XPathAttribute annotation has an invalid ReturnType specified.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Initialize the HtmlNodeCollection with the base parent node
+
+ The base node of the collection
+
+
+ Gets the parent node associated to the collection.
+
+
+
+ Gets a given node from the list.
+
+
+
+
+ Get node with tag name
+
+
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Is collection read only
+
+
+
+
+ Gets the node at the specified index.
+
+
+
+
+ Add node to the collection
+
+
+
+
+
+ Add node to the collection
+
+
+
+
+
+
+ Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode
+
+
+
+
+ Gets existence of node in collection
+
+
+
+
+
+
+ Copy collection to array
+
+
+
+
+
+
+ Get Enumerator
+
+
+
+
+
+ Get Explicit Enumerator
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Insert node at index
+
+
+
+
+
+
+ Remove node
+
+
+
+
+
+
+ Remove at index
+
+
+
+
+
+ Get first instance of node in supplied collection
+
+
+
+
+
+
+
+ Add node to the end of the collection
+
+
+
+
+
+ Get first instance of node with name
+
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Add node to the beginning of the collection
+
+
+
+
+
+ Remove node at index
+
+
+
+
+
+
+ Replace node at index
+
+
+
+
+
+
+ Get all node descended from this collection
+
+
+
+
+
+ Get all node descended from this collection with matching name
+
+
+
+
+
+ Gets all first generation elements in collection
+
+
+
+
+
+ Gets all first generation elements matching name
+
+
+
+
+
+
+ All first generation nodes in collection
+
+
+
+
+
+ Represents an HTML navigator on an HTML document seen as a data store.
+
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Gets the base URI for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the current HTML document.
+
+
+
+
+ Gets the current HTML node.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node is an empty element.
+
+
+
+
+ Gets the name of the current HTML node without the namespace prefix.
+
+
+
+
+ Gets the qualified name of the current node.
+
+
+
+
+ Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the associated with this implementation.
+
+
+
+
+ Gets the type of the current node.
+
+
+
+
+ Gets the prefix associated with the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the text value of the current node.
+
+
+
+
+ Gets the xml:lang scope for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator.
+
+ A new HtmlNavigator object positioned at the same node as the original HtmlNavigator.
+
+
+
+ Gets the value of the HTML attribute with the specified LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node.
+
+
+
+ Returns the value of the namespace node corresponding to the specified local name.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+
+
+ Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator that you want to compare against.
+ true if the two navigators have the same position, otherwise, false.
+
+
+
+ Moves to the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator positioned on the node that you want to move to.
+ true if successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the HTML attribute with matching LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change.
+
+
+
+ Moves to the first sibling of the current node.
+
+ true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the first HTML attribute.
+
+ true if the navigator is successful moving to the first HTML attribute, otherwise, false.
+
+
+
+ Moves to the first child of the current node.
+
+ true if there is a first child node, otherwise false.
+
+
+
+ Moves the XPathNavigator to the first namespace node of the current element.
+ Always returns false for the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the node that has an attribute of type ID whose value matches the specified string.
+
+ A string representing the ID value of the node to which you want to move. This argument does not need to be atomized.
+ true if the move was successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves the XPathNavigator to the namespace node with the specified local name.
+ Always returns false for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the next sibling of the current node.
+
+ true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the next HTML attribute.
+
+
+
+
+
+ Moves the XPathNavigator to the next namespace node.
+ Always returns falsefor the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the parent of the current node.
+
+ true if there is a parent node, otherwise false.
+
+
+
+ Moves to the previous sibling of the current node.
+
+ true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the root node to which the current node belongs.
+
+
+
+
+ Represents the type of a node.
+
+
+
+
+ The root of a document.
+
+
+
+
+ An HTML element.
+
+
+
+
+ An HTML comment.
+
+
+
+
+ A text node is always the child of an element or a document node.
+
+
+
+
+ Represents a parsing error found during document parsing.
+
+
+
+
+ Gets the type of error.
+
+
+
+
+ Gets the line number of this error in the document.
+
+
+
+
+ Gets the column number of this error in the document.
+
+
+
+
+ Gets a description for the error.
+
+
+
+
+ Gets the the full text of the line containing the error.
+
+
+
+
+ Gets the absolute stream position of this error in the document, relative to the start of the document.
+
+
+
+
+ Represents the type of parsing error.
+
+
+
+
+ A tag was not closed.
+
+
+
+
+ A tag was not opened.
+
+
+
+
+ There is a charset mismatch between stream and declared (META) encoding.
+
+
+
+
+ An end tag was not required.
+
+
+
+
+ An end tag is invalid at this position.
+
+
+
+
+ Represents an HTML text node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets or Sets the text of the node.
+
+
+
+
+ A utility class to get HTML document from HTTP.
+
+
+
+
+ Represents the method that will handle the PostResponse event.
+
+
+
+
+ Represents the method that will handle the PreHandleDocument event.
+
+
+
+
+ Represents the method that will handle the PreRequest event.
+
+
+
+
+ Occurs after an HTTP request has been executed.
+
+
+
+
+ Occurs before an HTML document is handled.
+
+
+
+
+ Occurs before an HTTP request is executed.
+
+
+
+ Gets or sets the automatic decompression.
+ The automatic decompression.
+
+
+
+ Maximum number of redirects that will be followed.
+ To disable redirects, do not set the value to 0, please set CaptureRedirect to 'true'.
+
+ Must be greater than 0.
+
+
+
+ Gets or sets the timeout value in milliseconds. Must be greater than zero. A value of -1 sets the timeout to be infinite.
+
+
+
+
+ Gets or Sets a value indicating if document encoding must be automatically detected.
+
+
+
+
+ Gets or sets the Encoding used to override the response stream from any web request
+
+
+
+
+ Gets or Sets a value indicating whether to get document only from the cache.
+ If this is set to true and document is not found in the cache, nothing will be loaded.
+
+
+
+
+ Gets or Sets a value indicating whether to get document from the cache if exists, otherwise from the web
+ A value indicating whether to get document from the cache if exists, otherwise from the web
+
+
+
+
+ Gets or Sets the cache path. If null, no caching mechanism will be used.
+
+
+
+
+ Gets a value indicating if the last document was retrieved from the cache.
+
+
+
+
+ Gets the last request duration in milliseconds.
+
+
+
+
+ Gets the URI of the Internet resource that actually responded to the request.
+
+
+
+
+ Gets the last request status.
+
+
+
+
+ Gets or Sets the size of the buffer used for memory operations.
+
+
+
+
+ Gets or Sets a value indicating if cookies will be stored.
+
+
+
+ Gets or sets a value indicating whether redirect should be captured instead of the current location.
+ True if capture redirect, false if not.
+
+
+
+ Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest
+
+
+
+
+ Gets or Sets a value indicating whether the caching mechanisms should be used or not.
+
+
+
+
+ Gets the MIME content type for a given path extension.
+
+ The input path extension.
+ The default content type to return if any error occurs.
+ The path extension's MIME content type.
+
+
+
+ Gets the path extension for a given MIME content type.
+
+ The input MIME content type.
+ The default path extension to return if any error occurs.
+ The MIME content type's path extension.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The requested type.
+ An newly created instance.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+
+
+
+
+ Gets the cache file path for a specified url.
+
+ The url fo which to retrieve the cache path. May not be null.
+ The cache file path.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ A new HTML document.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp").
+ A new HTML document.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ Host to use for Proxy
+ Port the Proxy is on
+ User Id for Authentication
+ Password for Authentication
+ A new HTML document.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp").
+ Host to use for Proxy
+ Port the Proxy is on
+ User Id for Authentication
+ Password for Authentication
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as new Uri("http://Myserver/Mypath/Myfile.asp").
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ Proxy to use with this request
+ Credentials to use when authenticating
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp").
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ Proxy to use with this request
+ Credentials to use when authenticating
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The XmlTextWriter to which you want to save to.
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ A cancellation token that can be used by other objects or threads to receive notice of cancellation.
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ A cancellation token that can be used by other objects or threads to receive notice of cancellation.
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+ A cancellation token that can be used by other objects or threads to receive notice of cancellation.
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+ Domain to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+ Domain to use for credentials in the web request
+ A cancellation token that can be used by other objects or threads to receive notice of cancellation.
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+ Domain to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+ Domain to use for credentials in the web request
+ A cancellation token that can be used by other objects or threads to receive notice of cancellation.
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ Username to use for credentials in the web request
+ Password to use for credentials in the web request
+ A cancellation token that can be used by other objects or threads to receive notice of cancellation.
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The credentials to use for authenticating the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The credentials to use for authenticating the web request
+ A cancellation token that can be used by other objects or threads to receive notice of cancellation.
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ The credentials to use for authenticating the web request
+
+
+
+ Begins the process of downloading an internet resource
+
+ Url to the html document
+ The encoding to use while downloading the document
+ The credentials to use for authenticating the web request
+ A cancellation token that can be used by other objects or threads to receive notice of cancellation.
+
+
+ Gets or sets the web browser timeout.
+
+
+
+ Gets or sets the web browser delay.
+
+
+ Loads HTML using a WebBrowser and Application.DoEvents.
+ Thrown when an exception error condition occurs.
+ The requested URL, such as "http://html-agility-pack.net/".
+ A new HTML document.
+
+
+ Loads HTML using a WebBrowser and Application.DoEvents.
+ Thrown when an exception error condition occurs.
+ The requested URL, such as "http://html-agility-pack.net/".
+ (Optional) Check if the browser script has all been run and completed.
+ A new HTML document.
+
+
+ Loads HTML using a WebBrowser and Application.DoEvents.
+ Thrown when an exception error condition occurs.
+ The requested URL, such as "http://html-agility-pack.net/".
+ (Optional) Check if the browser script has all been run and completed.
+ A new HTML document.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An containing the namespace-qualified arguments used as input to the transform.
+ The requested type.
+ An newly created instance.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An containing the namespace-qualified arguments used as input to the transform.
+ The requested type.
+ A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.
+ An newly created instance.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.
+ The XmlTextWriter to which you want to save.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null.
+ The URL that specifies the XSLT stylesheet to load.
+ An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.
+ The XmlTextWriter to which you want to save.
+ A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.
+
+
+
+ Represents an exception thrown by the HtmlWeb utility class.
+
+
+
+
+ Creates an instance of the HtmlWebException.
+
+ The exception's message.
+
+
+
+ Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents.
+
+
+
+
+ Gets or sets the token representing code end.
+
+
+
+
+ Gets or sets the token representing code start.
+
+
+
+
+ Gets or sets the token representing code directive.
+
+
+
+
+ Gets or sets the token representing response write directive.
+
+
+
+
+ Creates a mixed code document instance.
+
+
+
+
+ Gets the code represented by the mixed code document seen as a template.
+
+
+
+
+ Gets the list of code fragments in the document.
+
+
+
+
+ Gets the list of all fragments in the document.
+
+
+
+
+ Gets the encoding of the stream used to read the document.
+
+
+
+
+ Gets the list of text fragments in the document.
+
+
+
+
+ Create a code fragment instances.
+
+ The newly created code fragment instance.
+
+
+
+ Create a text fragment instances.
+
+ The newly created text fragment instance.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads the mixed code document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Loads a mixed document from a text
+
+ The text to load.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the mixed document to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Represents a fragment of code in a mixed code document.
+
+
+
+
+ Gets the fragment code text.
+
+
+
+
+ Represents a base class for fragments in a mixed code document.
+
+
+
+
+ Gets the fragement text.
+
+
+
+
+ Gets the type of fragment.
+
+
+
+
+ Gets the line number of the fragment.
+
+
+
+
+ Gets the line position (column) of the fragment.
+
+
+
+
+ Gets the fragment position in the document's stream.
+
+
+
+
+ Represents a list of mixed code fragments.
+
+
+
+
+ Gets the Document
+
+
+
+
+ Gets the number of fragments contained in the list.
+
+
+
+
+ Gets a fragment from the list using its index.
+
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Appends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Prepends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised.
+
+ The fragment to remove. May not be null.
+
+
+
+ Remove all fragments from the list.
+
+
+
+
+ Remove a fragment from the list of fragments, using its index in the list.
+
+ The index of the fragment to remove.
+
+
+
+ Represents a fragment enumerator.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Advances the enumerator to the next element of the collection.
+
+ true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.
+
+
+
+ Sets the enumerator to its initial position, which is before the first element in the collection.
+
+
+
+
+ Represents the type of fragment in a mixed code document.
+
+
+
+
+ The fragment contains code.
+
+
+
+
+ The fragment contains text.
+
+
+
+
+ Represents a fragment of text in a mixed code document.
+
+
+
+
+ Gets the fragment text.
+
+
+
+
diff --git a/shangjian/RestartApp/bin/Debug/RestartApp.exe b/shangjian/RestartApp/bin/Debug/RestartApp.exe
new file mode 100644
index 0000000..5cb60de
Binary files /dev/null and b/shangjian/RestartApp/bin/Debug/RestartApp.exe differ
diff --git a/shangjian/RestartApp/bin/Debug/RestartApp.exe.config b/shangjian/RestartApp/bin/Debug/RestartApp.exe.config
new file mode 100644
index 0000000..193aecc
--- /dev/null
+++ b/shangjian/RestartApp/bin/Debug/RestartApp.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/shangjian/RestartApp/bin/Debug/RestartApp.pdb b/shangjian/RestartApp/bin/Debug/RestartApp.pdb
new file mode 100644
index 0000000..86b9a47
Binary files /dev/null and b/shangjian/RestartApp/bin/Debug/RestartApp.pdb differ
diff --git a/shangjian/RestartApp/bin/Debug/WPFupdate.exe b/shangjian/RestartApp/bin/Debug/WPFupdate.exe
new file mode 100644
index 0000000..0ccd018
Binary files /dev/null and b/shangjian/RestartApp/bin/Debug/WPFupdate.exe differ
diff --git a/shangjian/RestartApp/bin/Debug/WPFupdate.exe.config b/shangjian/RestartApp/bin/Debug/WPFupdate.exe.config
new file mode 100644
index 0000000..193aecc
--- /dev/null
+++ b/shangjian/RestartApp/bin/Debug/WPFupdate.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/shangjian/RestartApp/bin/Debug/WPFupdate.pdb b/shangjian/RestartApp/bin/Debug/WPFupdate.pdb
new file mode 100644
index 0000000..35ef551
Binary files /dev/null and b/shangjian/RestartApp/bin/Debug/WPFupdate.pdb differ
diff --git a/shangjian/RestartApp/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs b/shangjian/RestartApp/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs
new file mode 100644
index 0000000..15efebf
--- /dev/null
+++ b/shangjian/RestartApp/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
diff --git a/shangjian/RestartApp/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/shangjian/RestartApp/obj/Debug/DesignTimeResolveAssemblyReferences.cache
new file mode 100644
index 0000000..c89176e
Binary files /dev/null and b/shangjian/RestartApp/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/shangjian/RestartApp/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/shangjian/RestartApp/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..3dcb42c
Binary files /dev/null and b/shangjian/RestartApp/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/shangjian/RestartApp/obj/Debug/RestartApp.csproj.AssemblyReference.cache b/shangjian/RestartApp/obj/Debug/RestartApp.csproj.AssemblyReference.cache
new file mode 100644
index 0000000..293b360
Binary files /dev/null and b/shangjian/RestartApp/obj/Debug/RestartApp.csproj.AssemblyReference.cache differ
diff --git a/shangjian/RestartApp/obj/Debug/RestartApp.csproj.CopyComplete b/shangjian/RestartApp/obj/Debug/RestartApp.csproj.CopyComplete
new file mode 100644
index 0000000..e69de29
diff --git a/shangjian/RestartApp/obj/Debug/RestartApp.csproj.CoreCompileInputs.cache b/shangjian/RestartApp/obj/Debug/RestartApp.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..d841009
--- /dev/null
+++ b/shangjian/RestartApp/obj/Debug/RestartApp.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+03c0b79cd3691853fd4748eb06a5fdb72fc84d6a
diff --git a/shangjian/RestartApp/obj/Debug/RestartApp.csproj.FileListAbsolute.txt b/shangjian/RestartApp/obj/Debug/RestartApp.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..e547473
--- /dev/null
+++ b/shangjian/RestartApp/obj/Debug/RestartApp.csproj.FileListAbsolute.txt
@@ -0,0 +1,12 @@
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp\bin\Debug\RestartApp.exe.config
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp\bin\Debug\RestartApp.exe
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp\bin\Debug\RestartApp.pdb
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp\bin\Debug\HtmlAgilityPack.dll
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp\bin\Debug\HtmlAgilityPack.pdb
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp\bin\Debug\HtmlAgilityPack.xml
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp\obj\Debug\RestartApp.csproj.AssemblyReference.cache
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp\obj\Debug\RestartApp.csproj.SuggestedBindingRedirects.cache
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp\obj\Debug\RestartApp.csproj.CoreCompileInputs.cache
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp\obj\Debug\RestartApp.csproj.CopyComplete
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp\obj\Debug\RestartApp.exe
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp\obj\Debug\RestartApp.pdb
diff --git a/shangjian/RestartApp/obj/Debug/RestartApp.csproj.SuggestedBindingRedirects.cache b/shangjian/RestartApp/obj/Debug/RestartApp.csproj.SuggestedBindingRedirects.cache
new file mode 100644
index 0000000..e69de29
diff --git a/shangjian/RestartApp/obj/Debug/RestartApp.exe b/shangjian/RestartApp/obj/Debug/RestartApp.exe
new file mode 100644
index 0000000..5cb60de
Binary files /dev/null and b/shangjian/RestartApp/obj/Debug/RestartApp.exe differ
diff --git a/shangjian/RestartApp/obj/Debug/RestartApp.pdb b/shangjian/RestartApp/obj/Debug/RestartApp.pdb
new file mode 100644
index 0000000..86b9a47
Binary files /dev/null and b/shangjian/RestartApp/obj/Debug/RestartApp.pdb differ
diff --git a/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.AssemblyReference.cache b/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.AssemblyReference.cache
new file mode 100644
index 0000000..e8472d7
Binary files /dev/null and b/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.AssemblyReference.cache differ
diff --git a/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.CopyComplete b/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.CopyComplete
new file mode 100644
index 0000000..e69de29
diff --git a/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.CoreCompileInputs.cache b/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..c367b0a
--- /dev/null
+++ b/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+57f46a9d84fe0cf9b52d094f86f1528843920246
diff --git a/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.FileListAbsolute.txt b/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..e6eca53
--- /dev/null
+++ b/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.FileListAbsolute.txt
@@ -0,0 +1,24 @@
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\WPFupdate\bin\Debug\WPFupdate.exe.config
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\WPFupdate\bin\Debug\WPFupdate.exe
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\WPFupdate\bin\Debug\WPFupdate.pdb
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\WPFupdate\bin\Debug\HtmlAgilityPack.dll
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\WPFupdate\bin\Debug\HtmlAgilityPack.pdb
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\WPFupdate\bin\Debug\HtmlAgilityPack.xml
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\WPFupdate\obj\Debug\WPFupdate.csproj.AssemblyReference.cache
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\WPFupdate\obj\Debug\WPFupdate.csproj.SuggestedBindingRedirects.cache
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\WPFupdate\obj\Debug\WPFupdate.csproj.CoreCompileInputs.cache
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\WPFupdate\obj\Debug\WPFupdate.csproj.CopyComplete
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\WPFupdate\obj\Debug\WPFupdate.exe
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\WPFupdate\obj\Debug\WPFupdate.pdb
+E:\workspace\LanJu\client\shangjian\WPFupdate\bin\Debug\WPFupdate.exe.config
+E:\workspace\LanJu\client\shangjian\WPFupdate\bin\Debug\WPFupdate.exe
+E:\workspace\LanJu\client\shangjian\WPFupdate\bin\Debug\WPFupdate.pdb
+E:\workspace\LanJu\client\shangjian\WPFupdate\bin\Debug\HtmlAgilityPack.dll
+E:\workspace\LanJu\client\shangjian\WPFupdate\bin\Debug\HtmlAgilityPack.pdb
+E:\workspace\LanJu\client\shangjian\WPFupdate\bin\Debug\HtmlAgilityPack.xml
+E:\workspace\LanJu\client\shangjian\WPFupdate\obj\Debug\WPFupdate.csproj.AssemblyReference.cache
+E:\workspace\LanJu\client\shangjian\WPFupdate\obj\Debug\WPFupdate.csproj.SuggestedBindingRedirects.cache
+E:\workspace\LanJu\client\shangjian\WPFupdate\obj\Debug\WPFupdate.csproj.CoreCompileInputs.cache
+E:\workspace\LanJu\client\shangjian\WPFupdate\obj\Debug\WPFupdate.csproj.CopyComplete
+E:\workspace\LanJu\client\shangjian\WPFupdate\obj\Debug\WPFupdate.exe
+E:\workspace\LanJu\client\shangjian\WPFupdate\obj\Debug\WPFupdate.pdb
diff --git a/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.SuggestedBindingRedirects.cache b/shangjian/RestartApp/obj/Debug/WPFupdate.csproj.SuggestedBindingRedirects.cache
new file mode 100644
index 0000000..e69de29
diff --git a/shangjian/RestartApp/obj/Debug/WPFupdate.exe b/shangjian/RestartApp/obj/Debug/WPFupdate.exe
new file mode 100644
index 0000000..0ccd018
Binary files /dev/null and b/shangjian/RestartApp/obj/Debug/WPFupdate.exe differ
diff --git a/shangjian/RestartApp/obj/Debug/WPFupdate.pdb b/shangjian/RestartApp/obj/Debug/WPFupdate.pdb
new file mode 100644
index 0000000..35ef551
Binary files /dev/null and b/shangjian/RestartApp/obj/Debug/WPFupdate.pdb differ
diff --git a/shangjian/RestartApp/packages.config b/shangjian/RestartApp/packages.config
new file mode 100644
index 0000000..4c28a63
--- /dev/null
+++ b/shangjian/RestartApp/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/shangjian/RestartApp/update.cs b/shangjian/RestartApp/update.cs
new file mode 100644
index 0000000..28efe0c
--- /dev/null
+++ b/shangjian/RestartApp/update.cs
@@ -0,0 +1,202 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Net.Http;
+using HtmlAgilityPack;
+using System.Linq;
+using System.Diagnostics;
+
+class Update
+{
+ public void Update1(string args)
+ {
+ string[] str = args.Split(',');
+ string iisServerBaseUrl = "http://192.168.202.23:8081/"; // IIS服务器基本URL
+ Console.WriteLine("args[0]>>"+ str[0]);
+ Console.WriteLine("args[1]>>" + str[1]);
+ string iisFolder = ""; // IIS服务器上的文件夹路径
+ string localFolderBase = AppDomain.CurrentDomain.BaseDirectory; // 本地文件夹的基本路径
+ SynchronizeFiles(iisServerBaseUrl, iisFolder, localFolderBase);
+ string fileName = "vsion.txt"; // 指定要操作的文件名
+ string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName); // 构建完整的文件路径
+
+ // 读取文本文件内容
+ string fileContent = File.ReadAllText(filePath);
+
+
+ // 在文件内容中进行修改
+ fileContent = str[0];//args; // 将 "old text" 替换为 "new text"
+
+ // 将修改后的内容写回文件
+ File.WriteAllText(filePath, fileContent);
+
+ Console.WriteLine("文件已修改并保存。");
+ // 继续运行应用程序的主要逻辑
+ Console.WriteLine("应用程序启动...!!!"+ args);
+
+
+ // 设置要启动的应用程序名称和参数
+ string appName = str[1];//"XGLFinishPro.exe"; // 替换为你的目标控制台应用程序的名称
+ string appArguments = " ";// 替换为你的应用程序需要的参数
+
+ // 创建进程启动信息
+ ProcessStartInfo startInfo = new ProcessStartInfo
+ {
+ FileName = appName,
+ Arguments = appArguments,
+ RedirectStandardOutput = false, // 可以选择是否重定向标准输出
+ UseShellExecute = false, // 必须设置为false,以便在控制台中启动应用程序
+ CreateNoWindow = false // 设置为true,以便在后台启动应用程序
+ };
+
+ // 创建并启动进程
+ Process process = new Process
+ {
+ StartInfo = startInfo
+ };
+ process.Start();
+ Environment.Exit(0);
+ // 在这里添加你的应用程序的主要逻辑
+
+ Console.ReadLine();
+ }
+ public void SynchronizeFiles(string serverBaseUrl, string serverFolder, string localFolder)
+ {
+ System.Threading.Thread.Sleep(3000);
+ using (HttpClient client = new HttpClient())
+ {
+ try
+ {
+ HttpResponseMessage response = client.GetAsync(new Uri(serverBaseUrl + serverFolder)).Result;
+ response.EnsureSuccessStatusCode();
+
+ string responseContent = response.Content.ReadAsStringAsync().Result;
+
+ // 使用HtmlAgilityPack解析HTML内容
+ HtmlDocument doc = new HtmlDocument();
+ doc.LoadHtml(responseContent);
+
+ // 查找所有包含文件名和文件夹名的标签
+ var links = doc.DocumentNode.SelectNodes("//a");
+
+ if (links != null)
+ {
+ foreach (var link in links)
+ {
+ string itemName = link.InnerText;
+ string itemUrl = serverBaseUrl + serverFolder + itemName;
+ string localPath = Path.Combine(localFolder, itemName);
+
+ if (link.InnerText.StartsWith(""))
+ {
+ // 这是一个文件夹
+ if (!Directory.Exists(localPath))
+ {
+ Directory.CreateDirectory(localPath);
+ }
+
+ // 递归处理文件夹中的内容
+ SynchronizeFiles(serverBaseUrl, serverFolder + itemName + "/", localPath);
+ }
+ else
+ {
+ // 这是一个文件
+ if (!string.Equals(itemName, "web.config", StringComparison.OrdinalIgnoreCase))
+ {
+ // 检查文件类型是否需要更新
+ string fileExtension = Path.GetExtension(itemName).ToLower();
+ if (ShouldUpdateFile(fileExtension))
+ {
+ if (File.Exists(localPath))
+ {
+ DownloadFile(itemUrl, localPath);
+ Console.WriteLine($"已下载并覆盖文件: {itemName}");
+ }
+ else
+ {
+ DownloadFile(itemUrl, localPath);
+ Console.WriteLine($"已下载文件: {itemName}");
+ }
+ }
+ else
+ {
+ Console.WriteLine($"不需要更新的文件类型: {fileExtension}");
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ Console.WriteLine("未找到文件列表");
+ }
+ }
+ catch (HttpRequestException ex)
+ {
+ Console.WriteLine($"HTTP请求失败: {ex.Message}");
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"发生错误: {ex.Message}");
+ }
+ }
+ }
+
+ public bool ShouldUpdateFile(string fileExtension)
+ {
+ // 添加需要更新的文件类型
+ string[] allowedExtensions = { ".exe", ".dll", ".json", ".xml" };
+
+ // 如果文件类型在允许更新的文件类型列表中,则返回 true,否则返回 false
+ return allowedExtensions.Contains(fileExtension);
+ }
+
+
+
+
+ public void DownloadFile(string fileUrl, string localFilePath)
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ try
+ {
+ HttpResponseMessage response = client.GetAsync(new Uri(fileUrl)).Result;
+ response.EnsureSuccessStatusCode();
+
+ using (Stream contentStream = response.Content.ReadAsStreamAsync().Result)
+ {
+ using (Stream fileStream = File.Create(localFilePath))
+ {
+ contentStream.CopyTo(fileStream);
+ }
+ }
+
+ Console.WriteLine($"已成功下载文件: {localFilePath}");
+ }
+ catch (HttpRequestException ex)
+ {
+ // 处理连接断开或其他HTTP请求错误
+ Console.WriteLine($"HTTP请求失败: {ex.Message}");
+ // 在这里可以添加重试逻辑或其他处理方式
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"发生错误: {ex.Message}");
+ }
+ }
+ }
+
+
+ public bool AreFilesEqual(string file1Url, string file2Path)
+ {
+ byte[] file1Content = File.ReadAllBytes(file2Path);
+
+ using (HttpClient client = new HttpClient())
+ {
+ byte[] file2Content = client.GetByteArrayAsync(file1Url).Result;
+
+ return StructuralComparisons.StructuralEqualityComparer.Equals(file1Content, file2Content);
+ }
+ }
+}
diff --git a/shangjian/RestartApp1/Program.cs b/shangjian/RestartApp1/Program.cs
new file mode 100644
index 0000000..986444a
--- /dev/null
+++ b/shangjian/RestartApp1/Program.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Diagnostics;
+using System.Threading;
+
+namespace RestartApp1
+{
+ internal class Program
+ {
+ static void Main(string[] args)
+ {
+ Thread.Sleep(5000);
+ // 设置要启动的应用程序名称和参数
+ string appName = args[0];//"XGLFinishPro.exe"; // 替换为你的目标控制台应用程序的名称
+ string appArguments = " ";// 替换为你的应用程序需要的参数
+ Console.WriteLine(appName);
+
+ // 创建进程启动信息
+ ProcessStartInfo startInfo = new ProcessStartInfo
+ {
+ FileName = appName,
+ Arguments = appArguments,
+ RedirectStandardOutput = false, // 可以选择是否重定向标准输出
+ UseShellExecute = false, // 必须设置为false,以便在控制台中启动应用程序
+ CreateNoWindow = false // 设置为true,以便在后台启动应用程序
+ };
+
+ // 创建并启动进程
+ Process process = new Process
+ {
+ StartInfo = startInfo
+ };
+
+ process.Start();
+ Console.ReadLine();
+ Environment.Exit(0);
+ // 在这里添加你的应用程序的主要逻辑
+
+ }
+ }
+}
diff --git a/shangjian/RestartApp1/RestartApp1.csproj b/shangjian/RestartApp1/RestartApp1.csproj
new file mode 100644
index 0000000..2082704
--- /dev/null
+++ b/shangjian/RestartApp1/RestartApp1.csproj
@@ -0,0 +1,8 @@
+
+
+
+ Exe
+ net5.0
+
+
+
diff --git a/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.deps.json b/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.deps.json
new file mode 100644
index 0000000..2940f9b
--- /dev/null
+++ b/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.deps.json
@@ -0,0 +1,23 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v5.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v5.0": {
+ "RestartApp1/1.0.0": {
+ "runtime": {
+ "RestartApp1.dll": {}
+ }
+ }
+ }
+ },
+ "libraries": {
+ "RestartApp1/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.dll b/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.dll
new file mode 100644
index 0000000..4d871c8
Binary files /dev/null and b/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.dll differ
diff --git a/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.exe b/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.exe
new file mode 100644
index 0000000..b429422
Binary files /dev/null and b/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.exe differ
diff --git a/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.pdb b/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.pdb
new file mode 100644
index 0000000..d380ff8
Binary files /dev/null and b/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.pdb differ
diff --git a/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.runtimeconfig.dev.json b/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.runtimeconfig.dev.json
new file mode 100644
index 0000000..e53a9b3
--- /dev/null
+++ b/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.runtimeconfig.dev.json
@@ -0,0 +1,10 @@
+{
+ "runtimeOptions": {
+ "additionalProbingPaths": [
+ "C:\\Users\\18366\\.dotnet\\store\\|arch|\\|tfm|",
+ "C:\\Users\\18366\\.nuget\\packages",
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages",
+ "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.runtimeconfig.json b/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.runtimeconfig.json
new file mode 100644
index 0000000..a8e7e82
--- /dev/null
+++ b/shangjian/RestartApp1/bin/Debug/net5.0/RestartApp1.runtimeconfig.json
@@ -0,0 +1,9 @@
+{
+ "runtimeOptions": {
+ "tfm": "net5.0",
+ "framework": {
+ "name": "Microsoft.NETCore.App",
+ "version": "5.0.0"
+ }
+ }
+}
\ No newline at end of file
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs b/shangjian/RestartApp1/obj/Debug/net5.0/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs
new file mode 100644
index 0000000..2f7e5ec
--- /dev/null
+++ b/shangjian/RestartApp1/obj/Debug/net5.0/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v5.0", FrameworkDisplayName = "")]
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.AssemblyInfo.cs b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.AssemblyInfo.cs
new file mode 100644
index 0000000..25802a2
--- /dev/null
+++ b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.AssemblyInfo.cs
@@ -0,0 +1,23 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("RestartApp1")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
+[assembly: System.Reflection.AssemblyProductAttribute("RestartApp1")]
+[assembly: System.Reflection.AssemblyTitleAttribute("RestartApp1")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.AssemblyInfoInputs.cache b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..035c3a0
--- /dev/null
+++ b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+c557af120ab40321417f45a5e20cf9afb7ce043a
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.GeneratedMSBuildEditorConfig.editorconfig b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..3f4e3d4
--- /dev/null
+++ b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,10 @@
+is_global = true
+build_property.TargetFramework = net5.0
+build_property.TargetPlatformMinVersion =
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = RestartApp1
+build_property.ProjectDir = D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.assets.cache b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.assets.cache
new file mode 100644
index 0000000..d615771
Binary files /dev/null and b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.assets.cache differ
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.csproj.AssemblyReference.cache b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.csproj.AssemblyReference.cache
new file mode 100644
index 0000000..4bfe0c3
Binary files /dev/null and b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.csproj.AssemblyReference.cache differ
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.csproj.CoreCompileInputs.cache b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..8a34c9d
--- /dev/null
+++ b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+49491e3533ebf03afbea600bd528f0432dff6a8d
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.csproj.FileListAbsolute.txt b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..43b830c
--- /dev/null
+++ b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.csproj.FileListAbsolute.txt
@@ -0,0 +1,16 @@
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\bin\Debug\net5.0\RestartApp1.exe
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\bin\Debug\net5.0\RestartApp1.deps.json
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\bin\Debug\net5.0\RestartApp1.runtimeconfig.json
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\bin\Debug\net5.0\RestartApp1.runtimeconfig.dev.json
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\bin\Debug\net5.0\RestartApp1.dll
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\bin\Debug\net5.0\RestartApp1.pdb
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\obj\Debug\net5.0\RestartApp1.csproj.AssemblyReference.cache
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\obj\Debug\net5.0\RestartApp1.GeneratedMSBuildEditorConfig.editorconfig
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\obj\Debug\net5.0\RestartApp1.AssemblyInfoInputs.cache
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\obj\Debug\net5.0\RestartApp1.AssemblyInfo.cs
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\obj\Debug\net5.0\RestartApp1.csproj.CoreCompileInputs.cache
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\obj\Debug\net5.0\RestartApp1.dll
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\obj\Debug\net5.0\refint\RestartApp1.dll
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\obj\Debug\net5.0\RestartApp1.pdb
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\obj\Debug\net5.0\RestartApp1.genruntimeconfig.cache
+D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\RestartApp1\obj\Debug\net5.0\ref\RestartApp1.dll
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.dll b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.dll
new file mode 100644
index 0000000..4d871c8
Binary files /dev/null and b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.dll differ
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.genruntimeconfig.cache b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.genruntimeconfig.cache
new file mode 100644
index 0000000..c8774cb
--- /dev/null
+++ b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.genruntimeconfig.cache
@@ -0,0 +1 @@
+47f46b71b2f8bee30d2007f78798c0fce58dad27
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.pdb b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.pdb
new file mode 100644
index 0000000..d380ff8
Binary files /dev/null and b/shangjian/RestartApp1/obj/Debug/net5.0/RestartApp1.pdb differ
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/apphost.exe b/shangjian/RestartApp1/obj/Debug/net5.0/apphost.exe
new file mode 100644
index 0000000..b429422
Binary files /dev/null and b/shangjian/RestartApp1/obj/Debug/net5.0/apphost.exe differ
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/ref/RestartApp1.dll b/shangjian/RestartApp1/obj/Debug/net5.0/ref/RestartApp1.dll
new file mode 100644
index 0000000..633b28a
Binary files /dev/null and b/shangjian/RestartApp1/obj/Debug/net5.0/ref/RestartApp1.dll differ
diff --git a/shangjian/RestartApp1/obj/Debug/net5.0/refint/RestartApp1.dll b/shangjian/RestartApp1/obj/Debug/net5.0/refint/RestartApp1.dll
new file mode 100644
index 0000000..633b28a
Binary files /dev/null and b/shangjian/RestartApp1/obj/Debug/net5.0/refint/RestartApp1.dll differ
diff --git a/shangjian/RestartApp1/obj/RestartApp1.csproj.nuget.dgspec.json b/shangjian/RestartApp1/obj/RestartApp1.csproj.nuget.dgspec.json
new file mode 100644
index 0000000..14d4ea4
--- /dev/null
+++ b/shangjian/RestartApp1/obj/RestartApp1.csproj.nuget.dgspec.json
@@ -0,0 +1,68 @@
+{
+ "format": 1,
+ "restore": {
+ "D:\\WorkSpace\\KHD\\Project\\Lanju\\Lanju-client\\shangjian\\RestartApp1\\RestartApp1.csproj": {}
+ },
+ "projects": {
+ "D:\\WorkSpace\\KHD\\Project\\Lanju\\Lanju-client\\shangjian\\RestartApp1\\RestartApp1.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\WorkSpace\\KHD\\Project\\Lanju\\Lanju-client\\shangjian\\RestartApp1\\RestartApp1.csproj",
+ "projectName": "RestartApp1",
+ "projectPath": "D:\\WorkSpace\\KHD\\Project\\Lanju\\Lanju-client\\shangjian\\RestartApp1\\RestartApp1.csproj",
+ "packagesPath": "C:\\Users\\18366\\.nuget\\packages\\",
+ "outputPath": "D:\\WorkSpace\\KHD\\Project\\Lanju\\Lanju-client\\shangjian\\RestartApp1\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages",
+ "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\18366\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net5.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "C:\\Users\\18366\\.nuget\\packages\\kingerrobot.core\\2022.11.8\\lib\\net6.0\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net5.0": {
+ "targetAlias": "net5.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ }
+ },
+ "frameworks": {
+ "net5.0": {
+ "targetAlias": "net5.0",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.300\\RuntimeIdentifierGraph.json"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/shangjian/RestartApp1/obj/RestartApp1.csproj.nuget.g.props b/shangjian/RestartApp1/obj/RestartApp1.csproj.nuget.g.props
new file mode 100644
index 0000000..9f15077
--- /dev/null
+++ b/shangjian/RestartApp1/obj/RestartApp1.csproj.nuget.g.props
@@ -0,0 +1,17 @@
+
+
+
+ True
+ NuGet
+ $(MSBuildThisFileDirectory)project.assets.json
+ $(UserProfile)\.nuget\packages\
+ C:\Users\18366\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages;C:\Program Files\dotnet\sdk\NuGetFallbackFolder
+ PackageReference
+ 6.2.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/shangjian/RestartApp1/obj/RestartApp1.csproj.nuget.g.targets b/shangjian/RestartApp1/obj/RestartApp1.csproj.nuget.g.targets
new file mode 100644
index 0000000..3dc06ef
--- /dev/null
+++ b/shangjian/RestartApp1/obj/RestartApp1.csproj.nuget.g.targets
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/shangjian/RestartApp1/obj/project.assets.json b/shangjian/RestartApp1/obj/project.assets.json
new file mode 100644
index 0000000..9a2567e
--- /dev/null
+++ b/shangjian/RestartApp1/obj/project.assets.json
@@ -0,0 +1,75 @@
+{
+ "version": 3,
+ "targets": {
+ "net5.0": {}
+ },
+ "libraries": {},
+ "projectFileDependencyGroups": {
+ "net5.0": []
+ },
+ "packageFolders": {
+ "C:\\Users\\18366\\.nuget\\packages\\": {},
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {},
+ "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {}
+ },
+ "project": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\WorkSpace\\KHD\\Project\\Lanju\\Lanju-client\\shangjian\\RestartApp1\\RestartApp1.csproj",
+ "projectName": "RestartApp1",
+ "projectPath": "D:\\WorkSpace\\KHD\\Project\\Lanju\\Lanju-client\\shangjian\\RestartApp1\\RestartApp1.csproj",
+ "packagesPath": "C:\\Users\\18366\\.nuget\\packages\\",
+ "outputPath": "D:\\WorkSpace\\KHD\\Project\\Lanju\\Lanju-client\\shangjian\\RestartApp1\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages",
+ "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\18366\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net5.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "C:\\Users\\18366\\.nuget\\packages\\kingerrobot.core\\2022.11.8\\lib\\net6.0\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net5.0": {
+ "targetAlias": "net5.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ }
+ },
+ "frameworks": {
+ "net5.0": {
+ "targetAlias": "net5.0",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.300\\RuntimeIdentifierGraph.json"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/shangjian/RestartApp1/obj/project.nuget.cache b/shangjian/RestartApp1/obj/project.nuget.cache
new file mode 100644
index 0000000..ca86619
--- /dev/null
+++ b/shangjian/RestartApp1/obj/project.nuget.cache
@@ -0,0 +1,8 @@
+{
+ "version": 2,
+ "dgSpecHash": "S/En5MItEphQbqA+OXsB7SKRR23houz4mu3ptCKbm/Bi9ESl9ot2IDmY2U0pQEvGCjbARCmufOMFMUdsCgnCRg==",
+ "success": true,
+ "projectFilePath": "D:\\WorkSpace\\KHD\\Project\\Lanju\\Lanju-client\\shangjian\\RestartApp1\\RestartApp1.csproj",
+ "expectedPackageFiles": [],
+ "logs": []
+}
\ No newline at end of file
diff --git a/shangjian/WPFupdate/RestartApp1.dll b/shangjian/WPFupdate/RestartApp1.dll
new file mode 100644
index 0000000..4d871c8
Binary files /dev/null and b/shangjian/WPFupdate/RestartApp1.dll differ
diff --git a/shangjian/WPFupdate/RestartApp1.exe b/shangjian/WPFupdate/RestartApp1.exe
new file mode 100644
index 0000000..b429422
Binary files /dev/null and b/shangjian/WPFupdate/RestartApp1.exe differ
diff --git a/shangjian/WPFupdate/WPFupdate.csproj b/shangjian/WPFupdate/WPFupdate.csproj
index 27e66d6..e544884 100644
--- a/shangjian/WPFupdate/WPFupdate.csproj
+++ b/shangjian/WPFupdate/WPFupdate.csproj
@@ -54,5 +54,9 @@
+
+
+
+
\ No newline at end of file
diff --git a/shangjian/WPFupdate/WPFupdate.csproj.user b/shangjian/WPFupdate/WPFupdate.csproj.user
new file mode 100644
index 0000000..9b86104
--- /dev/null
+++ b/shangjian/WPFupdate/WPFupdate.csproj.user
@@ -0,0 +1,6 @@
+
+
+
+ ShowAllFiles
+
+
\ No newline at end of file
diff --git a/shangjian/WPFupdate/WPFupdate1.cs b/shangjian/WPFupdate/WPFupdate1.cs
index 6e0e844..b625251 100644
--- a/shangjian/WPFupdate/WPFupdate1.cs
+++ b/shangjian/WPFupdate/WPFupdate1.cs
@@ -11,6 +11,7 @@ namespace WPFupdate
public static void Main(string[] args)
{
Update update = new Update();
+ Console.WriteLine(args[0]);
update.Update1(args[0]);
}
}
diff --git a/shangjian/WPFupdate/bin/Debug/WPFupdate.exe b/shangjian/WPFupdate/bin/Debug/WPFupdate.exe
index d26f006..0ccd018 100644
Binary files a/shangjian/WPFupdate/bin/Debug/WPFupdate.exe and b/shangjian/WPFupdate/bin/Debug/WPFupdate.exe differ
diff --git a/shangjian/WPFupdate/bin/Debug/WPFupdate.pdb b/shangjian/WPFupdate/bin/Debug/WPFupdate.pdb
index 26da229..35ef551 100644
Binary files a/shangjian/WPFupdate/bin/Debug/WPFupdate.pdb and b/shangjian/WPFupdate/bin/Debug/WPFupdate.pdb differ
diff --git a/shangjian/WPFupdate/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/shangjian/WPFupdate/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
index 1baf0aa..ff4e22b 100644
Binary files a/shangjian/WPFupdate/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/shangjian/WPFupdate/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/shangjian/WPFupdate/obj/Debug/WPFupdate.exe b/shangjian/WPFupdate/obj/Debug/WPFupdate.exe
index d26f006..0ccd018 100644
Binary files a/shangjian/WPFupdate/obj/Debug/WPFupdate.exe and b/shangjian/WPFupdate/obj/Debug/WPFupdate.exe differ
diff --git a/shangjian/WPFupdate/obj/Debug/WPFupdate.pdb b/shangjian/WPFupdate/obj/Debug/WPFupdate.pdb
index 26da229..35ef551 100644
Binary files a/shangjian/WPFupdate/obj/Debug/WPFupdate.pdb and b/shangjian/WPFupdate/obj/Debug/WPFupdate.pdb differ
diff --git a/shangjian/WPFupdate/update.cs b/shangjian/WPFupdate/update.cs
index 9420637..28efe0c 100644
--- a/shangjian/WPFupdate/update.cs
+++ b/shangjian/WPFupdate/update.cs
@@ -6,12 +6,15 @@ using System.Net.Http;
using HtmlAgilityPack;
using System.Linq;
using System.Diagnostics;
+
class Update
{
public void Update1(string args)
{
-
+ string[] str = args.Split(',');
string iisServerBaseUrl = "http://192.168.202.23:8081/"; // IIS服务器基本URL
+ Console.WriteLine("args[0]>>"+ str[0]);
+ Console.WriteLine("args[1]>>" + str[1]);
string iisFolder = ""; // IIS服务器上的文件夹路径
string localFolderBase = AppDomain.CurrentDomain.BaseDirectory; // 本地文件夹的基本路径
SynchronizeFiles(iisServerBaseUrl, iisFolder, localFolderBase);
@@ -21,19 +24,20 @@ class Update
// 读取文本文件内容
string fileContent = File.ReadAllText(filePath);
+
// 在文件内容中进行修改
- fileContent = args; // 将 "old text" 替换为 "new text"
+ fileContent = str[0];//args; // 将 "old text" 替换为 "new text"
// 将修改后的内容写回文件
File.WriteAllText(filePath, fileContent);
Console.WriteLine("文件已修改并保存。");
// 继续运行应用程序的主要逻辑
- Console.WriteLine("应用程序启动...!!!");
+ Console.WriteLine("应用程序启动...!!!"+ args);
// 设置要启动的应用程序名称和参数
- string appName = "XGLFinishPro.exe"; // 替换为你的目标控制台应用程序的名称
+ string appName = str[1];//"XGLFinishPro.exe"; // 替换为你的目标控制台应用程序的名称
string appArguments = " ";// 替换为你的应用程序需要的参数
// 创建进程启动信息
diff --git a/shangjian/XGL.Data/DBService/DBService.cs b/shangjian/XGL.Data/DBService/DBService.cs
index 030e9a2..646f48c 100644
--- a/shangjian/XGL.Data/DBService/DBService.cs
+++ b/shangjian/XGL.Data/DBService/DBService.cs
@@ -645,7 +645,7 @@ select a.TrayCode,a.ProductBarNo,a.carcode,a.createtime,a.lineno,b.HadNumber
return null;
}
- public DataTable GetWetPlanInfo(string date)
+ public DataTable GetWetPlanInfo(string date,string shiftID)
{
//删除湿料计划主表
// string sql = $@"select wet.id,wet.factory_code,wet.prod_code, wetDetail.sync_flag,wet.plan_time,
@@ -656,6 +656,11 @@ select a.TrayCode,a.ProductBarNo,a.carcode,a.createtime,a.lineno,b.HadNumber
//on wet.id = wetDetail.wet_material_plan_id
//left join pro_order_workorder workorder on workorder.workorder_id = wetDetail.workorder_id where 1=1 and workorder.status = 'w1' and workorder.end_flag = '1' and CONVERT(VARCHAR(10), wet.plan_time , 120)= CONVERT(VARCHAR(10), GetDate() , 120)";
//workorder.status = 'w1' and
+ string where = "";
+ if (!string.IsNullOrEmpty(shiftID))
+ {
+ where = $"and wetDetail.shift_id = '{shiftID}'";
+ }
string sql = $@"select wetDetail.id,wetDetail.factory_code,wetDetail.material_code as prod_code, wetDetail.sync_flag,wetDetail.plan_time,
wetDetail.workorder_id,bucket_id,bucket_code,material_code,material_name,
wetDetail.material_name as product_name,shifts.shift_desc,prod_line_code,workorder.status,workorder.workorder_code,route_code
@@ -663,7 +668,7 @@ from pro_wet_material_plan_detail wetDetail WITH (NOLOCK)
left join pro_order_workorder workorder WITH (NOLOCK) on workorder.workorder_id = wetDetail.workorder_id
left JOIN base_shifts_t shifts WITH (NOLOCK) on wetDetail.shift_id = shifts.shift_id
where 1=1 and
- workorder.end_flag = '1' and workorder.del_flag = '0' and CONVERT(VARCHAR(10), wetDetail.plan_time , 120)= CONVERT(VARCHAR(10), '{date}' , 120)";
+ workorder.end_flag = '1' and workorder.del_flag = '0' and wetDetail.del_flag='0' and CONVERT(VARCHAR(10), wetDetail.plan_time , 120)= CONVERT(VARCHAR(10), '{date}' , 120) {where} ORDER BY bucket_code";
DataSet dtset = Utils.netClientDBHelper.getDataSet(sql);
if (dtset != null && dtset.Tables.Count > 0 && dtset.Tables[0].Rows.Count > 0)
{
diff --git a/shangjian/XGL.Data/DBService/FormingMachineService.cs b/shangjian/XGL.Data/DBService/FormingMachineService.cs
index a1dafef..36d24e4 100644
--- a/shangjian/XGL.Data/DBService/FormingMachineService.cs
+++ b/shangjian/XGL.Data/DBService/FormingMachineService.cs
@@ -19,37 +19,68 @@ namespace XGL.Data.DBService
///
///
public DataTable GetFormingMachineInfo(string devicecode,string workDate)
- {
+ {
+ //过于复杂,给数据库造成了压力,经常死锁
+ // string sql = $@"SELECT DISTINCT
+ // ord.workorder_id,
+ // ord.workorder_code,
+ // res.OrderCode,
+ // ord.product_name,
+ // product_code,
+ // isnull( car_num, 0 ) AS car_num,
+ // isnull( plan_time, '1900-01-01 08:00:00' ) AS plan_time,
+ // ord.status ,
+ // ord.route_code,
+ // ord.attr1,
+ // ord.shift_id ,totalCount,shift.Shift_Desc
+ //FROM
+ //pro_order_workorder ord WITH (NOLOCK)
+ // LEFT JOIN mes_material_transfer_result res WITH (NOLOCK) ON res.OrderCode = ord.workorder_id
+ // LEFT JOIN pro_wet_material_plan_detail wet WITH (NOLOCK) ON wet.workorder_id = res.OrderCode
+ // LEFT JOIN pro_rfid_process_detail rfid WITH (NOLOCK) ON rfid.workorder_code = ord.workorder_code
+ // left join (select count(*) as totalCount,ordercode from mes_material_transfer_result WITH (NOLOCK)
+ // where CONVERT(VARCHAR(10), update_time , 120) = CONVERT(VARCHAR(10),'{workDate}', 120) and equipmentCode = '{devicecode}' group by OrderCode) tt
+ //on (tt.ordercode = wet.workorder_id )
+ // AND rfid.rfid = res.rfid
+ //LEFT JOIN base_shifts_t shift WITH (NOLOCK) on ord.shift_id = shift.Shift_Id
+ //WHERE
+ // CONVERT(VARCHAR(10), wet.plan_time , 120) = CONVERT(VARCHAR(10), '{workDate}', 120 )
+ // And ord.prod_line_code like '%{devicecode}%' and totalCount is not null
+ //ORDER BY
+ // ( isnull( plan_time, '1900-01-01 08:00:00' ) ) DESC";
+
string sql = $@"SELECT DISTINCT
- ord.workorder_id,
- ord.workorder_code,
- res.OrderCode,
- ord.product_name,
- product_code,
- isnull( car_num, 0 ) AS car_num,
- isnull( plan_time, '1900-01-01 08:00:00' ) AS plan_time,
- ord.status ,
- ord.route_code,
- ord.attr1,
- ord.shift_id ,totalCount,shift.Shift_Desc
-FROM
-pro_order_workorder ord WITH (NOLOCK)
- LEFT JOIN mes_material_transfer_result res WITH (NOLOCK) ON res.OrderCode = ord.workorder_id
- LEFT JOIN pro_wet_material_plan_detail wet WITH (NOLOCK) ON wet.workorder_id = res.OrderCode
- LEFT JOIN pro_rfid_process_detail rfid WITH (NOLOCK) ON rfid.workorder_code = ord.workorder_code
- left join (select count(*) as totalCount,ordercode from mes_material_transfer_result WITH (NOLOCK)
- where CONVERT(VARCHAR(10), update_time , 120) = CONVERT(VARCHAR(10),'{workDate}', 120) and equipmentCode = '{devicecode}' group by OrderCode) tt
-on (tt.ordercode = wet.workorder_id )
- AND rfid.rfid = res.rfid
-LEFT JOIN base_shifts_t shift WITH (NOLOCK) on ord.shift_id = shift.Shift_Id
-WHERE
- CONVERT(VARCHAR(10), wet.plan_time , 120) = CONVERT(VARCHAR(10), '{workDate}', 120 )
- And ord.prod_line_code like '%{devicecode}%' and totalCount is not null
-ORDER BY
- ( isnull( plan_time, '1900-01-01 08:00:00' ) ) DESC";
+ ord.workorder_id,
+ ord.workorder_code,
+ ord.product_name,
+ product_code,
+ isnull( car_num, 0 ) AS car_num,
+ isnull( product_date, '1900-01-01 08:00:00' ) AS plan_time,
+ ord.status,
+ ord.route_code,
+ ord.attr1,
+ ord.shift_id,
+ shift.Shift_Desc,'0' as totalCount
+ FROM
+ pro_order_workorder ord WITH (NOLOCK)
+ LEFT JOIN base_shifts_t shift WITH (NOLOCK) on ord.shift_id = shift.Shift_Id
+ WHERE
+ CONVERT(VARCHAR(10), ord.product_date , 120) = CONVERT(VARCHAR(10), '{workDate}', 120 )
+ And ord.prod_line_code like '%{devicecode}%' ";
DataSet dtset = Utils.netClientDBHelper.getDataSet(sql);
if (dtset != null && dtset.Tables.Count > 0 && dtset.Tables[0].Rows.Count > 0)
{
+ foreach (DataRow item in dtset.Tables[0].Rows)
+ {
+ string work0rderID = item["workorder_id"].ToString();
+ string totalcountSql = $@" select count(*) as totalCount from mes_material_transfer_result WITH (NOLOCK)
+ where CONVERT(VARCHAR(10), work_date , 120) = CONVERT(VARCHAR(10),'{workDate}', 120) and equipmentCode = '{devicecode}' and OrderCode = '{work0rderID}' group by OrderCode ";
+ DataSet dtsetTotalCount = Utils.netClientDBHelper.getDataSet(totalcountSql);
+ if (dtsetTotalCount != null && dtsetTotalCount.Tables.Count > 0 && dtsetTotalCount.Tables[0].Rows.Count > 0)
+ {
+ item["totalCount"] = dtsetTotalCount.Tables[0].Rows[0][0];
+ }
+ }
return dtset.Tables[0];
}
return null;
@@ -436,7 +467,7 @@ VALUES
[remark], [work_time], [machine_code], [machine_name], [team_code], [shift_code],
[attr1], [attr2], [attr3], [attr4], [create_by], [create_time],
[update_time], [update_by], [upload_time], [upload_status], [upload_msg], [prod_type],
- [use_man], [work_center],[del_flag],[batch],[end_report],[parent_order])
+ [use_man], [work_center],[del_flag],[batch],[end_report],[parent_order],[IP],[version])
VALUES
('{Common.GetUUID()}', 'SELF', '{reportCode}', '{selectRow["workorder_code"]}', '{selectRow["product_code"]}', '{selectRow["product_name"]}',
'{selectRow["product_spc"]}', '{selectRow["unit"]}', {workCount}, {workCount}, 0, 0,
@@ -444,7 +475,7 @@ VALUES
'无', '{workTime}', '{deviceCode}', '{lineName}', N'{LoginUser.TeamCode}', '{selectRow["shift_id"]}',
NULL, NULL, NULL, NULL, '{LoginUser.UserName}', '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}',
'{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}', '{LoginUser.UserName}',GetDate(), '0', NULL, 'prod',
- {userCount}, '{costCenter}','0','{batchCode}','{isEndReport}','{0}');";
+ {userCount}, '{costCenter}','0','{batchCode}','{isEndReport}','{0}','{LoginUser.CurrDeviceIP}','{LoginUser.Version}');";
string subOrderSql = $@"INSERT INTO [dbo].[mes_report_work]
([id], [report_type], [report_code], [workorder_code], [product_code], [product_name],
@@ -453,7 +484,7 @@ VALUES
[remark], [work_time], [machine_code], [machine_name], [team_code], [shift_code],
[attr1], [attr2], [attr3], [attr4], [create_by], [create_time],
[update_time], [update_by], [upload_time], [upload_status], [upload_msg], [prod_type],
- [use_man], [work_center],[del_flag],[batch],[end_report],[parent_order])
+ [use_man], [work_center],[del_flag],[batch],[end_report],[parent_order],[IP],[version])
VALUES
('{Common.GetUUID()}', 'SELF', '{reportCode}', '{subOrder}', '{subProductCode}', '{subProductName}',
'{selectRow["product_spc"]}', '{subUnit}', {subOrderQty}, {subOrderQty}, 0, 0,
@@ -461,7 +492,7 @@ VALUES
'无', '{workTime}', '{deviceCode}', '{lineName}', N'{LoginUser.TeamCode}', '{selectRow["shift_id"]}',
NULL, NULL, NULL, NULL, '{LoginUser.UserName}', '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}',
'{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}', '{LoginUser.UserName}',GetDate(), '0', NULL, 'prod',
- {userCount}, '{costCenter}','0','{batchCode}','{isEndReport}','{selectRow["workorder_code"]}');";
+ {userCount}, '{costCenter}','0','{batchCode}','{isEndReport}','{selectRow["workorder_code"]}','{LoginUser.CurrDeviceIP}','{LoginUser.Version}');";
sqlList.Add(mainOrderSql);
sqlList.Add(subOrderSql);
}
@@ -475,7 +506,7 @@ VALUES
[remark], [work_time], [machine_code], [machine_name], [team_code], [shift_code],
[attr1], [attr2], [attr3], [attr4], [create_by], [create_time],
[update_time], [update_by], [upload_time], [upload_status], [upload_msg], [prod_type],
- [use_man], [work_center],[del_flag],[batch],[end_report],[parent_order])
+ [use_man], [work_center],[del_flag],[batch],[end_report],[parent_order],[IP],[version])
VALUES
('{Common.GetUUID()}', 'SELF', '{reportCode}', '{selectRow["workorder_code"]}', '{selectRow["product_code"]}', '{selectRow["product_name"]}',
'{selectRow["product_spc"]}', '{selectRow["unit"]}', {workCount}, {workCount}, 0, 0,
@@ -483,7 +514,7 @@ VALUES
'无', '{workTime}', '{deviceCode}', '{lineName}', N'{LoginUser.TeamCode}', '{selectRow["shift_id"]}',
NULL, NULL, NULL, NULL, '{LoginUser.UserName}', '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}',
'{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}', '{LoginUser.UserName}',GetDate(), '0', NULL, 'prod',
- {userCount}, '{costCenter}','0','{batchCode}','{isEndReport}','{selectRow["parent_order"]}');";
+ {userCount}, '{costCenter}','0','{batchCode}','{isEndReport}','{selectRow["parent_order"]}','{LoginUser.CurrDeviceIP}','{LoginUser.Version}');";
sqlList.Add(mainOrderSql);
}
@@ -492,11 +523,27 @@ VALUES
//sqlList.Add(sql);
//sqlList.Add(updateOrderSql);
-
+ //赵啸林又说sap有问题,需要上位机修改报工标识2023-12-25,仅在最终报工时,才更新此状态
+ if (isEndReport.Equals("1"))
+ {
+ string updateOrderSql = $@"update pro_order_workorder set status = 'w3', update_by = '{LoginUser.UserName}',update_time = GETDATE() where belong_work_order = '{selectRow["workorder_code"]}' ";
+ sqlList.Add(updateOrderSql);
+ }
+
+ //添加批次报工状态更新--2023-12-26
+ string updateBatchOrderStatusSql = $@"update pro_order_workorder_batch set status = '0', update_by = '{LoginUser.UserName}',update_time = GETDATE() where workorder_id = '{selectRow["workorder_id"]}' and batch_code = '{batchCode}' ";
+ sqlList.Add(updateBatchOrderStatusSql);
return sqlList;//> 0 ? true : false;
}
+ public void ChangeShiftsInfo()
+ {
+ //
+ string sql = $@"INSERT INTO [dbo].[mes_changeshift_info] ([id], [shift_code], [change_time], [create_time], [create_by], [last_update], [update_by], [work_date])
+ VALUES ('1', NULL, NULL, NULL, NULL, NULL, NULL, NULL);";
+ }
+
///
/// 插入消耗表
@@ -521,6 +568,14 @@ VALUES
int ret = Utils.netClientDBHelper.executeUpdate(sql);
return ret > 0 ? true : false;
}
+
+ public bool UpdateFirstCheckTask(string workorderID, string batchCode)
+ {
+ string sql = $@"update pro_order_workorder_batch set qc_status = '1', update_by = '{LoginUser.UserName}',update_time = GETDATE() where workorder_id = '{workorderID}' and batch_code = '{batchCode}'";
+ int ret = Utils.netClientDBHelper.executeUpdate(sql);
+ return ret > 0 ? true : false;
+ }
+
public bool InsertConsumeInfo(DataRowView selectedConsumeRow,string newReportCode, string siteCode)
{
string sql = $@" INSERT INTO [dbo].[mes_report_work_consume]
@@ -543,12 +598,12 @@ VALUES
([record_id], [workorder_code], [material_code], [material_name], [material_spc],
[quantity], [unit], [remark], [attr1], [attr2],
[attr3], [attr4], [create_by], [create_time], [update_by],
- [update_time], [factory_code], [report_code], [del_flag],[parent_order],[recoil])
+ [update_time], [factory_code], [report_code], [del_flag],[parent_order],[recoil],[IP],[version])
VALUES
('{Common.GetUUID()}', '{selectedConsumeRow["workorder_code"]}', '{selectedConsumeRow["material_code"]}', '{selectedConsumeRow["material_name"]}', '{selectedConsumeRow["material_spc"]}',
'{selectedConsumeRow["qty"]}','{selectedConsumeRow["unit"]}', '{selectedConsumeRow["remark"]}', NULL, NULL,
NULL, NULL, '{LoginUser.UserName}', GetDate(), '{LoginUser.UserName}',
- GetDate(), '{siteCode}', '{newReportCode}', '0','{selectedConsumeRow["parent_work_order"]}','{selectedConsumeRow["recoil"]}'); ";
+ GetDate(), '{siteCode}', '{newReportCode}', '0','{selectedConsumeRow["parent_work_order"]}','{selectedConsumeRow["recoil"]}','{LoginUser.CurrDeviceIP}','{LoginUser.Version}'); ";
//int ret = Utils.netClientDBHelper.executeUpdate(sql);
return sql;
}
@@ -597,9 +652,9 @@ where machine_code = 'X1' and bind_status = '0' order by update_time DESC";
return null;
}
- public string InterfaceUrl(string v)
+ public string GetInterfaceUrl(string v)
{
- string getReportCodeSql = $@"SELECT url FROM [dbo].[mes_interface_url] where url_type = 'reportWork' and del_flag = '0'";
+ string getReportCodeSql = $@"SELECT url FROM [dbo].[mes_interface_url] where url_type = '{v}' and del_flag = '0'";
DataSet dtset = Utils.netClientDBHelper.getDataSet(getReportCodeSql);
if (dtset != null && dtset.Tables.Count > 0 && dtset.Tables[0].Rows.Count > 0)
diff --git a/shangjian/XGL.Data/DBServiceFinishProd/FinishProdDBService.cs b/shangjian/XGL.Data/DBServiceFinishProd/FinishProdDBService.cs
index 3aa6905..7669856 100644
--- a/shangjian/XGL.Data/DBServiceFinishProd/FinishProdDBService.cs
+++ b/shangjian/XGL.Data/DBServiceFinishProd/FinishProdDBService.cs
@@ -215,6 +215,9 @@ where detail.parent_work_order ='{workorder}' and detail.del_flag = '0'";
}
return null;
}
+
+
+
public DataTable GetFactoryInfo(string sitecode)
{
string sql = $"select factory_name from sys_factory where factory_code = '{sitecode}'";
@@ -512,7 +515,7 @@ select a.TrayCode,a.ProductBarNo,a.carcode,a.createtime,a.lineno,b.HadNumber
public DataTable GetWetPlanInfo(string deviceCode, string date)
{
string sql = $@"select workorder.factory_code,workorder.product_date as plan_time, workorder.workorder_id,workorder.workorder_code, product_code,product_name,
-product_spc,shifts.shift_desc,prod_line_code,workorder.status,route_code,quantity_split,unit,workorder.shift_id ,batch.batch_code,batch.batch_quantity,sort_no,product_spc, workorder.parent_order
+product_spc,shifts.shift_desc,prod_line_code,workorder.status,route_code,quantity_split,unit,workorder.shift_id ,batch.batch_code,batch.batch_quantity,sort_no, workorder.parent_order,batch.qc_status,batch.status as batchStatus
from pro_order_workorder workorder WITH (NOLOCK)
left JOIN base_shifts_t shifts WITH (NOLOCK) on workorder.shift_id = shifts.shift_id
left JOIN pro_order_workorder_batch batch WITH (NOLOCK) on workorder.workorder_id = batch.workorder_id
@@ -606,6 +609,19 @@ where 1=1 and
}
return baseeqlist;
}
+
+ public DataTable GetCarInfo(string deviceCode)
+ {
+ string sql = $@"SELECT workshop_code,workshop_name FROM [dbo].[base_equipment] where equipment_code = '{deviceCode}'";
+
+ DataSet dtset = Utils.netClientDBHelper.getDataSet(sql);
+ if (dtset != null && dtset.Tables.Count > 0 && dtset.Tables[0].Rows.Count > 0)
+ {
+ return dtset.Tables[0];
+ }
+ return null;
+ }
+
///
/// 查询工艺
///
@@ -703,14 +719,53 @@ where detail.parent_work_order = '{processid}'"; //where CONVERT(VARCHAR(10), w
/// 更新湿料计划同步状态、工单状态
///
///
- public bool UpdateSycnFlag(string workOrderID)
+ public bool UpdateSycnFlag(string workOrderID,string deviceCode)
{
- string sql1 = $@"update pro_order_workorder set status = 'w2', update_by = '{LoginUser.UserName}',update_time = GETDATE() where workorder_code = '{workOrderID}' ";
+ string sql1 = $@"update pro_order_workorder set status = 'w2',workorder_name = '{deviceCode}', update_by = '{LoginUser.UserName}',update_time = GETDATE() where workorder_code = '{workOrderID}' ";
return Utils.netClientDBHelper.executeUpdate(sql1) > 0 ? true : false;
}
+ ///
+ /// 写入开始、报工状态
+ ///
+ ///
+ ///
+ public void InsertOperationLog(DataRowView selectedRow,string state)
+ {
+ throw new NotImplementedException();
+ }
+
+ public bool InsertOperationLog(string orderCode, string status, string remark, string type, string deviceCode,string materialCode,string materialDesc)
+ {
+ List sqlList = new List();
+ string logSql = "";
+ if (status.Equals("w2"))
+ {
+ logSql = $@"INSERT INTO [dbo].[mes_operation_log]
+ ([id], [user_id], [user_name], [operation_type], [operation_time],
+ [operation_desc], [old_value], [new_value], [device_code],[remark],[order_code],[material_code],[material_desc],[version],[ip])
+ VALUES
+ ('{CommonFunc.Common.GetUUID()}', '{LoginUser.UserId}', '{LoginUser.UserName}', '{type}', GetDate(),
+ '工单开始', 'w1', '{status}', '{deviceCode}','{remark}','{orderCode}','{materialCode}','{materialDesc}','{LoginUser.Version}','{LoginUser.CurrDeviceIP}');";
+ }
+ else if(status.Equals("w3"))
+ {
+ logSql = $@"INSERT INTO [dbo].[mes_operation_log]
+ ([id], [user_id], [user_name], [operation_type], [operation_time],
+ [operation_desc], [old_value], [new_value], [device_code],[remark],[order_code],[material_code],[material_desc],[version],[ip])
+ VALUES
+ ('{CommonFunc.Common.GetUUID()}', '{LoginUser.UserId}', '{LoginUser.UserName}', '{type}', GetDate(),
+ '工单报工', 'w2', '{status}', '{deviceCode}','{remark}','{orderCode}','{materialCode}','{materialDesc}','{LoginUser.Version}','{LoginUser.CurrDeviceIP}');";
+ }
+
+ sqlList.Add(logSql);
+ bool issucc = Utils.netClientDBHelper.executeBatchSql(sqlList);
+
+ return issucc;
+ }
+
///
/// 获取湿料计划指向的成型机
diff --git a/shangjian/XGL.Data/userDB.cs b/shangjian/XGL.Data/userDB.cs
index c917e4a..dd3b5e5 100644
--- a/shangjian/XGL.Data/userDB.cs
+++ b/shangjian/XGL.Data/userDB.cs
@@ -333,6 +333,7 @@ namespace XGL.Data
LoginUser.WorkDate = workDate;
LoginUser.Start_Time = startTime;
LoginUser.End_Time = endTime;
+ LoginUser.CurrDeviceIP = Common.GetLocationHostAddress();
}
return issuccess;//lst.Count > 0 ? true : false;
}
diff --git a/shangjian/XGL.Model/Model/OrderPrepare/WcsSyncResult.cs b/shangjian/XGL.Model/Model/OrderPrepare/WcsSyncResult.cs
index 21bd663..a9fca67 100644
--- a/shangjian/XGL.Model/Model/OrderPrepare/WcsSyncResult.cs
+++ b/shangjian/XGL.Model/Model/OrderPrepare/WcsSyncResult.cs
@@ -22,7 +22,7 @@ namespace XGL.Models.Model.OrderPrepare
{
public string msg { get; set; }
public int code { get; set; }
- public Data data { get; set; }
+ public object data { get; set; }
}
public class Data
diff --git a/shangjian/XGL.Model/ShiftInfoModel.cs b/shangjian/XGL.Model/ShiftInfoModel.cs
index 5ac0330..7ae0c88 100644
--- a/shangjian/XGL.Model/ShiftInfoModel.cs
+++ b/shangjian/XGL.Model/ShiftInfoModel.cs
@@ -11,7 +11,7 @@ namespace XGL.Models
///
///id
///
- public int shift_id { get; set; }
+ public int? shift_id { get; set; }
///
///carNo
diff --git a/shangjian/XGL.Model/bin/Debug/XGL.Models.dll b/shangjian/XGL.Model/bin/Debug/XGL.Models.dll
index fa5ec7e..c1616e7 100644
Binary files a/shangjian/XGL.Model/bin/Debug/XGL.Models.dll and b/shangjian/XGL.Model/bin/Debug/XGL.Models.dll differ
diff --git a/shangjian/XGL.Model/bin/Debug/XGL.Models.pdb b/shangjian/XGL.Model/bin/Debug/XGL.Models.pdb
index 6ac9c55..e067297 100644
Binary files a/shangjian/XGL.Model/bin/Debug/XGL.Models.pdb and b/shangjian/XGL.Model/bin/Debug/XGL.Models.pdb differ
diff --git a/shangjian/XGL.Model/obj/Debug/XGL.Models.csproj.AssemblyReference.cache b/shangjian/XGL.Model/obj/Debug/XGL.Models.csproj.AssemblyReference.cache
index b1e3e18..709a5dc 100644
Binary files a/shangjian/XGL.Model/obj/Debug/XGL.Models.csproj.AssemblyReference.cache and b/shangjian/XGL.Model/obj/Debug/XGL.Models.csproj.AssemblyReference.cache differ
diff --git a/shangjian/XGL.Model/obj/Debug/XGL.Models.dll b/shangjian/XGL.Model/obj/Debug/XGL.Models.dll
index fa5ec7e..c1616e7 100644
Binary files a/shangjian/XGL.Model/obj/Debug/XGL.Models.dll and b/shangjian/XGL.Model/obj/Debug/XGL.Models.dll differ
diff --git a/shangjian/XGL.Model/obj/Debug/XGL.Models.pdb b/shangjian/XGL.Model/obj/Debug/XGL.Models.pdb
index 6ac9c55..e067297 100644
Binary files a/shangjian/XGL.Model/obj/Debug/XGL.Models.pdb and b/shangjian/XGL.Model/obj/Debug/XGL.Models.pdb differ
diff --git a/shangjian/XGL.Thrift/bin/Debug/XGL.Thrift.dll b/shangjian/XGL.Thrift/bin/Debug/XGL.Thrift.dll
index ed604e6..eb53d59 100644
Binary files a/shangjian/XGL.Thrift/bin/Debug/XGL.Thrift.dll and b/shangjian/XGL.Thrift/bin/Debug/XGL.Thrift.dll differ
diff --git a/shangjian/XGL.Thrift/bin/Debug/XGL.Thrift.pdb b/shangjian/XGL.Thrift/bin/Debug/XGL.Thrift.pdb
index 9bb1fbb..db16807 100644
Binary files a/shangjian/XGL.Thrift/bin/Debug/XGL.Thrift.pdb and b/shangjian/XGL.Thrift/bin/Debug/XGL.Thrift.pdb differ
diff --git a/shangjian/XGL.Thrift/obj/Debug/XGL.Thrift.csproj.AssemblyReference.cache b/shangjian/XGL.Thrift/obj/Debug/XGL.Thrift.csproj.AssemblyReference.cache
index 5f076da..cf52ee4 100644
Binary files a/shangjian/XGL.Thrift/obj/Debug/XGL.Thrift.csproj.AssemblyReference.cache and b/shangjian/XGL.Thrift/obj/Debug/XGL.Thrift.csproj.AssemblyReference.cache differ
diff --git a/shangjian/XGL.Thrift/obj/Debug/XGL.Thrift.dll b/shangjian/XGL.Thrift/obj/Debug/XGL.Thrift.dll
index ed604e6..eb53d59 100644
Binary files a/shangjian/XGL.Thrift/obj/Debug/XGL.Thrift.dll and b/shangjian/XGL.Thrift/obj/Debug/XGL.Thrift.dll differ
diff --git a/shangjian/XGL.Thrift/obj/Debug/XGL.Thrift.pdb b/shangjian/XGL.Thrift/obj/Debug/XGL.Thrift.pdb
index 9bb1fbb..db16807 100644
Binary files a/shangjian/XGL.Thrift/obj/Debug/XGL.Thrift.pdb and b/shangjian/XGL.Thrift/obj/Debug/XGL.Thrift.pdb differ
diff --git a/shangjian/XGL/App.xaml.cs b/shangjian/XGL/App.xaml.cs
index 7f95bd9..d47e18f 100644
--- a/shangjian/XGL/App.xaml.cs
+++ b/shangjian/XGL/App.xaml.cs
@@ -18,11 +18,15 @@ namespace XGL
///
public partial class App : Application
{
+ private System.Threading.Mutex mutex;
public App()
{
- var processs = Process.GetProcessesByName(Process.GetCurrentProcess().MainModule.ModuleName.Replace(".exe", ""));
- if (processs.Length > 1)
+ string name = Process.GetCurrentProcess().MainModule.ModuleName.Replace(".exe", "");
+ //禁止多开
+ mutex = new System.Threading.Mutex(true, name, out bool ret);
+ if (!ret)
{
+ MessageBox.Show("已有一个程序实例运行", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
Environment.Exit(0);
}
diff --git a/shangjian/XGL/FormItem/Main.xaml.cs b/shangjian/XGL/FormItem/Main.xaml.cs
index 4a82a5a..5e2badc 100644
--- a/shangjian/XGL/FormItem/Main.xaml.cs
+++ b/shangjian/XGL/FormItem/Main.xaml.cs
@@ -153,7 +153,7 @@ namespace XGL.FormItem
catch (Exception ex)
{
}
- System.Environment.Exit(System.Environment.ExitCode);
+ System.Environment.Exit(0);
}
}
diff --git a/shangjian/XGL/LoginPage.xaml.cs b/shangjian/XGL/LoginPage.xaml.cs
index ac02747..8f758d9 100644
--- a/shangjian/XGL/LoginPage.xaml.cs
+++ b/shangjian/XGL/LoginPage.xaml.cs
@@ -340,7 +340,7 @@ namespace XGL
{
// 设置要启动的应用程序名称和参数
string appName = "WPFupdate.exe"; // 替换为你的目标控制台应用程序的名称
- string appArguments = sresu;// 替换为你的应用程序需要的参数
+ string appArguments = sresu + "," +System.Diagnostics.Process.GetCurrentProcess().MainModule.ModuleName;//sresu;// 替换为你的应用程序需要的参数
// 创建进程启动信息
ProcessStartInfo startInfo = new ProcessStartInfo
diff --git a/shangjian/XGL/Views/LanJu_InOut.xaml b/shangjian/XGL/Views/LanJu_InOut.xaml
index cb0c8a1..75817a0 100644
--- a/shangjian/XGL/Views/LanJu_InOut.xaml
+++ b/shangjian/XGL/Views/LanJu_InOut.xaml
@@ -39,7 +39,7 @@
Width="1920"
Margin="0"
HorizontalAlignment="Center"
- VerticalAlignment="Center">
+ VerticalAlignment="Top">
-
-
-
+
diff --git a/shangjian/XGLFinishPro/Views/LanJu_Prepare.xaml.cs b/shangjian/XGLFinishPro/Views/LanJu_Prepare.xaml.cs
index a2a40f8..189eb09 100644
--- a/shangjian/XGLFinishPro/Views/LanJu_Prepare.xaml.cs
+++ b/shangjian/XGLFinishPro/Views/LanJu_Prepare.xaml.cs
@@ -220,7 +220,7 @@ namespace XGLFinishPro.Views
return;
}
}
-
+ var selectedRow = (WorkOrder.SelectedItem as DataRowView);
//获取WMS齐套率,湿料计划先不用
//var wmsState = userDbWareHouse.GetWorkOrderQitaoLv(orderID);
@@ -233,7 +233,7 @@ namespace XGLFinishPro.Views
//获取湿料计划指定的成型机
//var cxjDt = userDbWareHouse.GetCXJList(orderID);
-
+
//更新工单状态
//var updatestatus = userDbWareHouse.UpdateSycnFlag(workorderID);
if (!UpdateOrderStatus(workorderID))
@@ -242,6 +242,9 @@ namespace XGLFinishPro.Views
}
else
{
+ string materialCode = selectedRow["product_code"].ToString();
+ string materialDesc = selectedRow["product_name"].ToString();
+ userDbWareHouse.InsertOperationLog(workorderID, "w2", "","开始工单", deviceCode, materialCode, materialDesc);
GetWorkOrder();
}
@@ -347,10 +350,11 @@ namespace XGLFinishPro.Views
private bool UpdateOrderStatus(string workorderID)
{
//更新工单状态
- var updatestatus = userDbWareHouse.UpdateSycnFlag(workorderID);
+ var updatestatus = userDbWareHouse.UpdateSycnFlag(workorderID,deviceCode);
if (!updatestatus)
{
CustomMessageBox.Show("开始工单失败!", CustomMessageBoxButton.OK, CustomMessageBoxIcon.Warning);
+ return false;
}
DataTable dtSubOrders = userDbWareHouse.GetSubOrderInfo(workorderID);
if (dtSubOrders != null)
diff --git a/shangjian/XGLFinishPro/Views/QitaoLvUC.xaml b/shangjian/XGLFinishPro/Views/QitaoLvUC.xaml
index a5cc768..2d47395 100644
--- a/shangjian/XGLFinishPro/Views/QitaoLvUC.xaml
+++ b/shangjian/XGLFinishPro/Views/QitaoLvUC.xaml
@@ -5,23 +5,32 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:XGLFinishPro.Views"
mc:Ignorable="d"
- Width="1920" Height="260" Loaded="UserControl_Loaded">
+ xmlns:hc="https://handyorg.github.io/handycontrol"
+ Width="1920" Height="280" Loaded="UserControl_Loaded">
-
+
-
+
ModuleUC.xaml
+