no message

20260122
zhaoaomin 2 years ago
parent 3f912dd198
commit 6be6e7cf83

Binary file not shown.

@ -152,6 +152,7 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SecurityHelper\DESProvider.cs" />
<Compile Include="SecurityHelper\MD5Provider.cs" />
<Compile Include="snap7.net.cs" />
<Compile Include="SqlServerDbHelper.cs" />
<Compile Include="Tools\CustomMessageBox.cs" />
<Compile Include="Tools\PlcHelper.cs" />
@ -179,6 +180,9 @@
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Content Include="snap7.dll" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

@ -0,0 +1,424 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BCrypt.Net-Next</name>
</assembly>
<members>
<member name="T:BCrypt.Net.BCrypt">
<summary>BCrypt implementation.</summary>
<remarks>
<para>
BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
<a href="http://www.usenix.org/event/usenix99/provos/provos_html/index.html">"A Future-
Adaptable Password Scheme"</a> by Niels Provos and David Mazieres.
</para>
<para>
This password hashing system tries to thwart off-line password cracking using a
computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
The work factor of the algorithm is parameterised, so it can be increased as computers
get faster.
</para>
<para>
To hash a password using the defaults, call the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String)"/> (which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.HashPassword(plain_password);</code>
<para>
To hash a password using SHA384 pre-hashing for increased entropy call <see cref="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)"/>
(which will generate a random salt and hash at default cost), like this:
</para>
<code>string pw_hash = BCrypt.EnhancedHashPassword(plain_password);</code>
<para>
To check whether a plaintext password matches one that has been hashed previously,
use the <see cref="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)"/> method:
(To validate an enhanced hash you can pass true as the last parameter of Verify or use <see cref="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)"/>)
</para>
<code>
if (BCrypt.Verify(candidate_password, stored_hash))
Console.WriteLine("It matches");
else
Console.WriteLine("It does not match");
</code>
<para>
The <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/> method takes an optional parameter (workFactor) that
determines the computational complexity of the hashing:
</para>
<code>
string strong_salt = BCrypt.GenerateSalt(10);
string stronger_salt = BCrypt.GenerateSalt(12);
</code>
<para>
The amount of work increases exponentially (2^workFactor), so each increment is twice
as much work. The default workFactor is 10, and the valid range is 4 to 31.
</para>
</remarks>
</member>
<member name="F:BCrypt.Net.BCrypt.DefaultRounds">
<summary>
Default Work Factor
</summary>
</member>
<member name="F:BCrypt.Net.BCrypt.RngCsp">
<summary>
RandomNumberGenerator.Create calls RandomNumberGenerator.Create("System.Security.Cryptography.RandomNumberGenerator"), which will create an instance of RNGCryptoServiceProvider.
https://msdn.microsoft.com/en-us/library/42ks8fz1
</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.String,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.ValidateAndReplacePassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType,System.String,System.Boolean,BCrypt.Net.HashType,System.Int32,System.Boolean)">
<summary>
Validate existing hash and password,
</summary>
<param name="currentKey">Current password / string</param>
<param name="currentHash">Current hash to validate password against</param>
<param name="currentKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="oldHashType">HashType used (default SHA384)</param>
<param name="newKey">NEW password / string to be hashed</param>
<param name="newKeyEnhancedEntropy">Set to true,the string will undergo SHA384 hashing to make
use of available entropy prior to bcrypt hashing</param>
<param name="newHashType">HashType to use (default SHA384)</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="forceWorkFactor">By default this method will not accept a work factor lower
than the one set in the current hash and will set the new work-factor to match.</param>
<exception cref="T:BCrypt.Net.BcryptAuthenticationException">returned if the users hash and current pass doesn't validate</exception>
<exception cref="T:BCrypt.Net.SaltParseException">returned if the salt is invalid in any way</exception>
<exception cref="T:System.ArgumentException">returned if the hash is invalid</exception>
<exception cref="T:System.ArgumentNullException">returned if the user hash is null</exception>
<returns>New hash of new password</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.HashString(System.String,System.Int32)">
<summary>
Hash a string using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<remarks>Just an alias for HashPassword.</remarks>
<param name="inputKey"> The string to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<returns>The hashed string.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,System.Int32,BCrypt.Net.HashType)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor"></param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHashPassword(System.String,BCrypt.Net.HashType,System.Int32)">
<summary>
Pre-hash a password with SHA384 then using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>.
</summary>
<param name="inputKey">The password to hash.</param>
<param name="workFactor">Defaults to 11</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.Int32,System.Boolean)">
<summary>
Hash a password using the OpenBSD BCrypt scheme and a salt generated by <see cref="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)"/> using the given <paramref name="workFactor"/>.
</summary>
<param name="inputKey"> The password to hash.</param>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2^workFactor. Default is 11</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<returns>The hashed password.</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<returns>The hashed password</returns>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>Hash a password using the OpenBSD BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<param name="inputKey">The password or string to hash.</param>
<param name="salt"> the salt to hash with (best generated using <see cref="M:BCrypt.Net.BCrypt.GenerateSalt"/>).</param>
<param name="enhancedEntropy">Set to true,the string will undergo hashing (defaults to SHA384 then base64 encoding) to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">Configurable hash type for enhanced entropy</param>
<returns>The hashed password</returns>
<exception cref="T:System.ArgumentNullException">Thrown when the <paramref name="inputKey"/> is null.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the <paramref name="salt"/> could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedHash(System.Byte[],System.Char,BCrypt.Net.HashType)">
<summary>
Hashes key, base64 encodes before returning byte array
</summary>
<param name="inputBytes"></param>
<param name="bcryptMinorRevision"></param>
<param name="hashType"></param>
<returns></returns>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt(System.Int32,System.Char)">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method.
</summary>
<param name="workFactor">The log2 of the number of rounds of hashing to apply - the work
factor therefore increases as 2**workFactor.</param>
<param name="bcryptMinorRevision"></param>
<exception cref="T:System.ArgumentOutOfRangeException">Work factor must be between 4 and 31</exception>
<returns>A base64 encoded salt value.</returns>
<exception cref="T:System.ArgumentException">BCrypt Revision should be a, b, x or y</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.PasswordNeedsRehash(System.String,System.Int32)">
<summary>
Based on password_needs_rehash in PHP this method will return true
if the work factor (logrounds) set on the hash is lower than the new minimum workload passed in
</summary>
<param name="hash">full bcrypt hash</param>
<param name="newMinimumWorkLoad">target workload</param>
<returns>true if new work factor is higher than the one in the hash</returns>
<exception cref="T:System.ArgumentException">throws if the current hash workload (logrounds) can not be parsed</exception>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.InterrogateHash(System.String)">
<summary>
Takes a valid hash and outputs its component parts
</summary>
<param name="hash"></param>
<exception cref="T:BCrypt.Net.HashInformationException"></exception>
</member>
<member name="M:BCrypt.Net.BCrypt.GenerateSalt">
<summary>
Generate a salt for use with the <see cref="M:BCrypt.Net.BCrypt.HashPassword(System.String,System.String)"/> method
selecting a reasonable default for the number of hashing rounds to apply.
</summary>
<returns>A base64 encoded salt value.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.EnhancedVerify(System.String,System.String,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>; the string will undergo SHA384 hashing to maintain the enhanced entropy work done during hashing
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Verify(System.String,System.String,System.Boolean,BCrypt.Net.HashType)">
<summary>
Verifies that the hash of the given <paramref name="text"/> matches the provided
<paramref name="hash"/>
</summary>
<param name="text">The text to verify.</param>
<param name="hash"> The previously-hashed password.</param>
<param name="enhancedEntropy">Set to true,the string will undergo SHA384 hashing to make use of available entropy prior to bcrypt hashing</param>
<param name="hashType">HashType used (default SHA384)</param>
<returns>true if the passwords match, false otherwise.</returns>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.</exception>
<exception cref="T:BCrypt.Net.SaltParseException">Thrown when the salt could not be parsed.</exception>
</member>
<member name="M:BCrypt.Net.BCrypt.EncodeBase64(System.Byte[],System.Int32)">
<summary>
Encode a byte array using BCrypt's slightly-modified base64 encoding scheme. Note that this
is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="byteArray">The byte array to encode.</param>
<param name="length"> The number of bytes to encode.</param>
<returns>Base64-encoded string.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.DecodeBase64(System.String,System.Int32)">
<summary>
Decode a string encoded using BCrypt's base64 scheme to a byte array.
Note that this is *not* compatible with the standard MIME-base64 encoding.
</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="encodedString">The string to decode.</param>
<param name="maximumBytes"> The maximum bytes to decode.</param>
<returns>The decoded byte array.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Char64(System.Char)">
<summary>
Look up the 3 bits base64-encoded by the specified character, range-checking against
conversion table.
</summary>
<param name="character">The base64-encoded value.</param>
<returns>The decoded value of x.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.Encipher(System.Span{System.UInt32},System.Int32)">
<summary>Blowfish encipher a single 64-bit block encoded as two 32-bit halves.</summary>
<param name="blockArray">An array containing the two 32-bit half blocks.</param>
<param name="offset"> The position in the array of the blocks.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.StreamToWord(System.ReadOnlySpan{System.Byte},System.Int32@)">
<summary>Cyclically extract a word of key material.</summary>
<param name="data">The string to extract the data from.</param>
<param name="offset"> [in,out] The current offset.</param>
<returns>The next word of material from data.</returns>
</member>
<member name="M:BCrypt.Net.BCrypt.InitializeKey">
<summary>Initializes the Blowfish key schedule.</summary>
</member>
<member name="M:BCrypt.Net.BCrypt.Key(System.ReadOnlySpan{System.Byte})">
<summary>Key the Blowfish cipher.</summary>
<param name="keyBytes">The key byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.EKSKey(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<summary>
Perform the "enhanced key schedule" step described by Provos and Mazieres in
"A Future Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
</summary>
<param name="saltBytes"> Salt byte array.</param>
<param name="inputBytes">Input byte array.</param>
</member>
<member name="M:BCrypt.Net.BCrypt.CryptRaw(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte},System.Int32)">
<summary>Perform the central hashing step in the BCrypt scheme.</summary>
<exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or
illegal values.</exception>
<param name="inputBytes">The input byte array to hash.</param>
<param name="saltBytes"> The salt byte array to hash with.</param>
<param name="workFactor"> The binary logarithm of the number of rounds of hashing to apply.</param>
<returns>A byte array containing the hashed result.</returns>
</member>
<member name="T:BCrypt.Net.BcryptAuthenticationException">
<inheritdoc />
<summary>Exception for signalling hash validation errors. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor">
<inheritdoc />
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.BcryptAuthenticationException.#ctor(System.String,System.Exception)">
<inheritdoc />
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.BcryptAuthenticationException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
<member name="T:BCrypt.Net.HashInformation">
<summary>
HashInformation : A value object that contains the results of interrogating a hash
Namely its settings (2a$10 for example); version (2a); workfactor (log rounds), and the raw hash returned
</summary>
</member>
<member name="M:BCrypt.Net.HashInformation.#ctor(System.String,System.String,System.String,System.String)">
<summary>Constructor. </summary>
<param name="settings">The message.</param>
<param name="version">The message.</param>
<param name="workFactor">The message.</param>
<param name="rawHash">The message.</param>
</member>
<member name="P:BCrypt.Net.HashInformation.Settings">
<summary>
Settings string
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.Version">
<summary>
Hash Version
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.WorkFactor">
<summary>
log rounds used / workfactor
</summary>
</member>
<member name="P:BCrypt.Net.HashInformation.RawHash">
<summary>
Raw Hash
</summary>
</member>
<member name="T:BCrypt.Net.HashInformationException">
<summary>
Exception used to signal errors that occur during use of the hash information methods
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor">
<summary>
Default Constructor
</summary>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
</member>
<member name="M:BCrypt.Net.HashInformationException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of <see cref="T:BCrypt.Net.HashInformationException" />.
</summary>
<param name="message"></param>
<param name="innerException"></param>
</member>
<member name="T:BCrypt.Net.HashType">
<summary>
Type of SHA implementation to use
Keys will be hashed, then base64 encoded before being passed to crypt.
Unless legacy is selected in which case simply SHA384 hashed.
</summary>
</member>
<member name="T:BCrypt.Net.SaltParseException">
<summary>Exception for signalling parse errors during salt checks. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor">
<summary>Default constructor. </summary>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message">The message.</param>
</member>
<member name="M:BCrypt.Net.SaltParseException.#ctor(System.String,System.Exception)">
<summary>Initializes a new instance of <see cref="T:BCrypt.Net.SaltParseException" />.</summary>
<param name="message"> The message.</param>
<param name="innerException">The inner exception.</param>
</member>
</members>
</doc>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup><system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient"/>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</DbProviderFactories>
</system.data></configuration>

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<!--在出现什么级别的错误才记录错误 【注意如果有多个appender-ref的时候应该给他们放到同一个root节点下】-->
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender"/>
<appender-ref ref="MachineWainingLog"/>
<appender-ref ref="ErrorInfoLog"/>
</root>
<!--写入到文件-->
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<!--文件路径如果RollingStyle为Composite或Date则这里设置为目录文件名在DatePattern里设置其他则这里要有文件名。已经扩展支持虚拟目录-->
<param name="File" value="LogInfo\\" />
<!--将日记写入到跟目录下面的Log文件夹下面的LogInfo文件夹下面的yyyy-MM-dd.TXT文件中-->
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaximumFileSize" value="10240KB" />
<param name="StaticLogFileName" value="false" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd.TXT" />
<!--TXT后缀必须是大写的否则有问题-->
<param name="CountDirection" value="-1" />
<!--log4net记录错误的格式(即:用什么样的格式(布局)来记录错误)-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value=" 【时间】:%d%n 【级别】:%p%n 【类名】:%c%n 【线程ID】: %thread %n 【文件地址】:%F 第%L行%n 【日志内容】:%m%n 【日记详细】:%exception %n---------------------------------------------------------------------------------------------------------------%n" />
</layout>
</appender>
<!--写入到文件 将WARN级别的单独记录作为机器警告记录-->
<appender name="MachineWainingLog" type="log4net.Appender.RollingFileAppender,log4net">
<!--文件路径如果RollingStyle为Composite或Date则这里设置为目录文件名在DatePattern里设置其他则这里要有文件名。已经扩展支持虚拟目录-->
<param name="File" value="LogInfo\\MachineWainingLog\\" />
<!--将日记写入到跟目录下面的Log文件夹下面的LogInfo文件夹下面的yyyy-MM-dd.TXT文件中-->
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaximumFileSize" value="10240KB" />
<param name="StaticLogFileName" value="false" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="\MWL_yyyy-MM-dd.TXT" />
<!--TXT后缀必须是大写的否则有问题-->
<param name="CountDirection" value="-1" />
<!--log4net记录错误的格式(即:用什么样的格式(布局)来记录错误)-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[%d] %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<!--写入到文件 将Error级别的单独记录作为机器警告记录-->
<appender name="ErrorInfoLog" type="log4net.Appender.RollingFileAppender,log4net">
<!--文件路径如果RollingStyle为Composite或Date则这里设置为目录文件名在DatePattern里设置其他则这里要有文件名。已经扩展支持虚拟目录-->
<param name="File" value="LogInfo\\ErrorInfoLog\\" />
<!--将日记写入到跟目录下面的Log文件夹下面的LogInfo文件夹下面的yyyy-MM-dd.TXT文件中-->
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaximumFileSize" value="10240KB" />
<param name="StaticLogFileName" value="false" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="\ERROR_yyyy-MM-dd.TXT" />
<!--TXT后缀必须是大写的否则有问题-->
<param name="CountDirection" value="-1" />
<!--log4net记录错误的格式(即:用什么样的格式(布局)来记录错误)-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[%d][%p] %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
</log4net>
</configuration>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Buffers</name>
</assembly>
<members>
<member name="T:System.Buffers.ArrayPool`1">
<summary>Provides a resource pool that enables reusing instances of type <see cref="T[]"></see>.</summary>
<typeparam name="T">The type of the objects that are in the resource pool.</typeparam>
</member>
<member name="M:System.Buffers.ArrayPool`1.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Buffers.ArrayPool`1"></see> class.</summary>
</member>
<member name="M:System.Buffers.ArrayPool`1.Create">
<summary>Creates a new instance of the <see cref="T:System.Buffers.ArrayPool`1"></see> class.</summary>
<returns>A new instance of the <see cref="System.Buffers.ArrayPool`1"></see> class.</returns>
</member>
<member name="M:System.Buffers.ArrayPool`1.Create(System.Int32,System.Int32)">
<summary>Creates a new instance of the <see cref="T:System.Buffers.ArrayPool`1"></see> class using the specifed configuration.</summary>
<param name="maxArrayLength">The maximum length of an array instance that may be stored in the pool.</param>
<param name="maxArraysPerBucket">The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access.</param>
<returns>A new instance of the <see cref="System.Buffers.ArrayPool`1"></see> class with the specified configuration.</returns>
</member>
<member name="M:System.Buffers.ArrayPool`1.Rent(System.Int32)">
<summary>Retrieves a buffer that is at least the requested length.</summary>
<param name="minimumLength">The minimum length of the array.</param>
<returns>An array of type <see cref="T[]"></see> that is at least <paramref name="minimumLength">minimumLength</paramref> in length.</returns>
</member>
<member name="M:System.Buffers.ArrayPool`1.Return(`0[],System.Boolean)">
<summary>Returns an array to the pool that was previously obtained using the <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"></see> method on the same <see cref="T:System.Buffers.ArrayPool`1"></see> instance.</summary>
<param name="array">A buffer to return to the pool that was previously obtained using the <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"></see> method.</param>
<param name="clearArray">Indicates whether the contents of the buffer should be cleared before reuse. If <paramref name="clearArray">clearArray</paramref> is set to true, and if the pool will store the buffer to enable subsequent reuse, the <see cref="M:System.Buffers.ArrayPool`1.Return(`0[],System.Boolean)"></see> method will clear the <paramref name="array">array</paramref> of its contents so that a subsequent caller using the <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"></see> method will not see the content of the previous caller. If <paramref name="clearArray">clearArray</paramref> is set to false or if the pool will release the buffer, the array&amp;#39;s contents are left unchanged.</param>
</member>
<member name="P:System.Buffers.ArrayPool`1.Shared">
<summary>Gets a shared <see cref="T:System.Buffers.ArrayPool`1"></see> instance.</summary>
<returns>A shared <see cref="System.Buffers.ArrayPool`1"></see> instance.</returns>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,355 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Memory</name>
</assembly>
<members>
<member name="T:System.Span`1">
<typeparam name="T"></typeparam>
</member>
<member name="M:System.Span`1.#ctor(`0[])">
<param name="array"></param>
</member>
<member name="M:System.Span`1.#ctor(System.Void*,System.Int32)">
<param name="pointer"></param>
<param name="length"></param>
</member>
<member name="M:System.Span`1.#ctor(`0[],System.Int32)">
<param name="array"></param>
<param name="start"></param>
</member>
<member name="M:System.Span`1.#ctor(`0[],System.Int32,System.Int32)">
<param name="array"></param>
<param name="start"></param>
<param name="length"></param>
</member>
<member name="M:System.Span`1.Clear">
</member>
<member name="M:System.Span`1.CopyTo(System.Span{`0})">
<param name="destination"></param>
</member>
<member name="M:System.Span`1.DangerousCreate(System.Object,`0@,System.Int32)">
<param name="obj"></param>
<param name="objectData"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.DangerousGetPinnableReference">
<returns></returns>
</member>
<member name="P:System.Span`1.Empty">
<returns></returns>
</member>
<member name="M:System.Span`1.Equals(System.Object)">
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Fill(`0)">
<param name="value"></param>
</member>
<member name="M:System.Span`1.GetHashCode">
<returns></returns>
</member>
<member name="P:System.Span`1.IsEmpty">
<returns></returns>
</member>
<member name="P:System.Span`1.Item(System.Int32)">
<param name="index"></param>
<returns></returns>
</member>
<member name="P:System.Span`1.Length">
<returns></returns>
</member>
<member name="M:System.Span`1.op_Equality(System.Span{`0},System.Span{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(System.ArraySegment{T})~System.Span{T}">
<param name="arraySegment"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(System.Span{T})~System.ReadOnlySpan{T}">
<param name="span"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(T[])~System.Span{T}">
<param name="array"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Inequality(System.Span{`0},System.Span{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Slice(System.Int32)">
<param name="start"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Slice(System.Int32,System.Int32)">
<param name="start"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.ToArray">
<returns></returns>
</member>
<member name="M:System.Span`1.TryCopyTo(System.Span{`0})">
<param name="destination"></param>
<returns></returns>
</member>
<member name="T:System.SpanExtensions">
</member>
<member name="M:System.SpanExtensions.AsBytes``1(System.ReadOnlySpan{``0})">
<param name="source"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsBytes``1(System.Span{``0})">
<param name="source"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan(System.String)">
<param name="text"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan``1(System.ArraySegment{``0})">
<param name="arraySegment"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan``1(``0[])">
<param name="array"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.CopyTo``1(``0[],System.Span{``0})">
<param name="array"></param>
<param name="destination"></param>
<typeparam name="T"></typeparam>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.Byte)">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.Byte)">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},``0)">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},``0)">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<param name="value2"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<param name="value2"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="values"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="values"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.NonPortableCast``2(System.ReadOnlySpan{``0})">
<param name="source"></param>
<typeparam name="TFrom"></typeparam>
<typeparam name="TTo"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.NonPortableCast``2(System.Span{``0})">
<param name="source"></param>
<typeparam name="TFrom"></typeparam>
<typeparam name="TTo"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="first"></param>
<param name="second"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="first"></param>
<param name="second"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="first"></param>
<param name="second"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="first"></param>
<param name="second"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="T:System.ReadOnlySpan`1">
<typeparam name="T"></typeparam>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[])">
<param name="array"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(System.Void*,System.Int32)">
<param name="pointer"></param>
<param name="length"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32)">
<param name="array"></param>
<param name="start"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32,System.Int32)">
<param name="array"></param>
<param name="start"></param>
<param name="length"></param>
</member>
<member name="M:System.ReadOnlySpan`1.CopyTo(System.Span{`0})">
<param name="destination"></param>
</member>
<member name="M:System.ReadOnlySpan`1.DangerousCreate(System.Object,`0@,System.Int32)">
<param name="obj"></param>
<param name="objectData"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.DangerousGetPinnableReference">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Empty">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Equals(System.Object)">
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.GetHashCode">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.IsEmpty">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Item(System.Int32)">
<param name="index"></param>
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Length">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Equality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Implicit(System.ArraySegment{T})~System.ReadOnlySpan{T}">
<param name="arraySegment"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Implicit(T[])~System.ReadOnlySpan{T}">
<param name="array"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Inequality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Slice(System.Int32)">
<param name="start"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Slice(System.Int32,System.Int32)">
<param name="start"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.ToArray">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.TryCopyTo(System.Span{`0})">
<param name="destination"></param>
<returns></returns>
</member>
</members>
</doc>

@ -0,0 +1,200 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Runtime.CompilerServices.Unsafe</name>
</assembly>
<members>
<member name="T:System.Runtime.CompilerServices.Unsafe">
<summary>Contains generic, low-level functionality for manipulating pointers.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.Int32)">
<summary>Adds an element offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.IntPtr)">
<summary>Adds an element offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AddByteOffset``1(``0@,System.IntPtr)">
<summary>Adds a byte offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="byteOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of byte offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AreSame``1(``0@,``0@)">
<summary>Determines whether the specified references point to the same location.</summary>
<param name="left">The first reference to compare.</param>
<param name="right">The second reference to compare.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>true if <paramref name="left">left</paramref> and <paramref name="right">right</paramref> point to the same location; otherwise, false.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.As``1(System.Object)">
<summary>Casts the given object to the specified type.</summary>
<param name="o">The object to cast.</param>
<typeparam name="T">The type which the object will be cast to.</typeparam>
<returns>The original object, casted to the given type.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.As``2(``0@)">
<summary>Reinterprets the given reference as a reference to a value of type <typeparamref name="TTo">TTo</typeparamref>.</summary>
<param name="source">The reference to reinterpret.</param>
<typeparam name="TFrom">The type of reference to reinterpret..</typeparam>
<typeparam name="TTo">The desired type of the reference.</typeparam>
<returns>A reference to a value of type <typeparamref name="TTo">TTo</typeparamref>.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AsPointer``1(``0@)">
<summary>Returns a pointer to the given by-ref parameter.</summary>
<param name="value">The object whose pointer is obtained.</param>
<typeparam name="T">The type of object.</typeparam>
<returns>A pointer to the given value.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AsRef``1(System.Void*)">
<summary>Reinterprets the given location as a reference to a value of type <typeparamref name="T">T</typeparamref>.</summary>
<param name="source">The location of the value to reference.</param>
<typeparam name="T">The type of the interpreted location.</typeparam>
<returns>A reference to a value of type <typeparamref name="T">T</typeparamref>.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.ByteOffset``1(``0@,``0@)">
<summary>Determines the byte offset from origin to target from the given references.</summary>
<param name="origin">The reference to origin.</param>
<param name="target">The reference to target.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>Byte offset from origin to target i.e. <paramref name="target">target</paramref> - <paramref name="origin">origin</paramref>.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(System.Void*,``0@)">
<summary>Copies a value of type <typeparamref name="T">T</typeparamref> to the given location.</summary>
<param name="destination">The location to copy to.</param>
<param name="source">A reference to the value to copy.</param>
<typeparam name="T">The type of value to copy.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(``0@,System.Void*)">
<summary>Copies a value of type <typeparamref name="T">T</typeparamref> to the given location.</summary>
<param name="destination">The location to copy to.</param>
<param name="source">A pointer to the value to copy.</param>
<typeparam name="T">The type of value to copy.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Byte@,System.Byte@,System.UInt32)">
<summary>Copies bytes from the source address to the destination address.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Void*,System.Void*,System.UInt32)">
<summary>Copies bytes from the source address to the destination address.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Void*,System.Void*,System.UInt32)">
<summary>Copies bytes from the source address to the destination address
without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Byte@,System.Byte@,System.UInt32)">
<summary>Copies bytes from the source address to the destination address
without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Byte@,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Void*,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Byte@,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value
without assuming architecture dependent alignment of the address.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Void*,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value
without assuming architecture dependent alignment of the address.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Read``1(System.Void*)">
<summary>Reads a value of type <typeparamref name="T">T</typeparamref> from the given location.</summary>
<param name="source">The location to read from.</param>
<typeparam name="T">The type to read.</typeparam>
<returns>An object of type <typeparamref name="T">T</typeparamref> read from the given location.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Byte@)">
<summary>Reads a value of type <typeparamref name="T">T</typeparamref> from the given location
without assuming architecture dependent alignment of the addresses.</summary>
<param name="source">The location to read from.</param>
<typeparam name="T">The type to read.</typeparam>
<returns>An object of type <typeparamref name="T">T</typeparamref> read from the given location.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Void*)">
<summary>Reads a value of type <typeparamref name="T">T</typeparamref> from the given location
without assuming architecture dependent alignment of the addresses.</summary>
<param name="source">The location to read from.</param>
<typeparam name="T">The type to read.</typeparam>
<returns>An object of type <typeparamref name="T">T</typeparamref> read from the given location.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SizeOf``1">
<summary>Returns the size of an object of the given type parameter.</summary>
<typeparam name="T">The type of object whose size is retrieved.</typeparam>
<returns>The size of an object of type <typeparamref name="T">T</typeparamref>.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.Int32)">
<summary>Subtracts an element offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subraction of offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.IntPtr)">
<summary>Subtracts an element offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subraction of offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SubtractByteOffset``1(``0@,System.IntPtr)">
<summary>Subtracts a byte offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="byteOffset"></param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subraction of byte offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Write``1(System.Void*,``0)">
<summary>Writes a value of type <typeparamref name="T">T</typeparamref> to the given location.</summary>
<param name="destination">The location to write to.</param>
<param name="value">The value to write.</param>
<typeparam name="T">The type of value to write.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Byte@,``0)">
<summary>Writes a value of type <typeparamref name="T">T</typeparamref> to the given location
without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The location to write to.</param>
<param name="value">The value to write.</param>
<typeparam name="T">The type of value to write.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Void*,``0)">
<summary>Writes a value of type <typeparamref name="T">T</typeparamref> to the given location
without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The location to write to.</param>
<param name="value">The value to write.</param>
<typeparam name="T">The type of value to write.</typeparam>
</member>
</members>
</doc>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup><system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient"/>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</DbProviderFactories>
</system.data></configuration>

@ -11,10 +11,10 @@ false
DEBUG;TRACE
12023204370
231115367844
11419817861
241494203934
44-550732465
HMessageBox.xaml;
True
False

@ -1,5 +1,4 @@
// Updated by XamlIntelliSenseFileGenerator 2023-8-21 11:37:23
#pragma checksum "..\..\..\Views\LanJu_Prepare.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "4ED23CEE126987D73089B80D2B02FE50005DC73FC0F8D483F3B398CF05D824ED"
#pragma checksum "..\..\..\Views\LanJu_Prepare.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "64707632E97E11320B4AF88E42DE13B33B062A7F54D5E1401F7FF2A6358059B1"
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
@ -33,65 +32,69 @@ using System.Windows.Shapes;
using System.Windows.Shell;
namespace COSMO.IM.LanJu.Index
{
namespace COSMO.IM.LanJu.Index {
/// <summary>
/// LanJu_Prepare
/// </summary>
public partial class LanJu_Prepare : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector
{
#line 116 "..\..\..\Views\LanJu_Prepare.xaml"
public partial class LanJu_Prepare : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
#line 103 "..\..\..\Views\LanJu_Prepare.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnStartOrders;
#line default
#line hidden
#line 128 "..\..\..\Views\LanJu_Prepare.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.DataGrid WorkOrder;
#line default
#line hidden
#line default
#line hidden
private bool _contentLoaded;
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent()
{
if (_contentLoaded)
{
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/LanJu;component/views/lanju_prepare.xaml", System.UriKind.Relative);
#line 1 "..\..\..\Views\LanJu_Prepare.xaml"
#line 1 "..\..\..\Views\LanJu_Prepare.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
#line default
#line hidden
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target)
{
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
switch (connectionId)
{
case 1:
this.WorkOrder = ((System.Windows.Controls.DataGrid)(target));
return;
case 1:
this.btnStartOrders = ((System.Windows.Controls.Button)(target));
return;
case 2:
this.WorkOrder = ((System.Windows.Controls.DataGrid)(target));
return;
}
this._contentLoaded = true;
}
internal System.Windows.Controls.Button btnStartOrders;
}
}

@ -1,4 +1,4 @@
#pragma checksum "..\..\..\Views\LanJu_Prepare.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "4ED23CEE126987D73089B80D2B02FE50005DC73FC0F8D483F3B398CF05D824ED"
#pragma checksum "..\..\..\Views\LanJu_Prepare.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "64707632E97E11320B4AF88E42DE13B33B062A7F54D5E1401F7FF2A6358059B1"
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
@ -41,7 +41,15 @@ namespace COSMO.IM.LanJu.Index {
public partial class LanJu_Prepare : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
#line 116 "..\..\..\Views\LanJu_Prepare.xaml"
#line 103 "..\..\..\Views\LanJu_Prepare.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnStartOrders;
#line default
#line hidden
#line 128 "..\..\..\Views\LanJu_Prepare.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.DataGrid WorkOrder;
@ -79,6 +87,9 @@ namespace COSMO.IM.LanJu.Index {
switch (connectionId)
{
case 1:
this.btnStartOrders = ((System.Windows.Controls.Button)(target));
return;
case 2:
this.WorkOrder = ((System.Windows.Controls.DataGrid)(target));
return;
}

@ -635,13 +635,27 @@ select a.TrayCode,a.ProductBarNo,a.carcode,a.createtime,a.lineno,b.HadNumber
return null;
}
public DataTable GetWetPlanInfo()
{
string sql = $@"select wet.id,wet.factory_code,wet.prod_code, wet.sync_flag,wet.plan_time, workorder_id,bucket_id,bucket_code,material_code,material_name,product_name,wet.shift_desc
from pro_wet_material_plan wet
LEFT JOIN pro_wet_material_plan_detail wetDetail
on wet.id = wetDetail.wet_material_plan_id "; //where wet.plan_time = '{}'
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;
}
/// <summary>
/// 获取工单是否齐套
/// </summary>
/// <returns></returns>
public DataTable GetWorkOrderQitaoLv(string workOrderNo)
{
string sql = $@"select status from mes_prepare where workorder_code = '{workOrderNo}'";
string sql = $@"select status from mes_prepare where wet_detail_plan_id = '{workOrderNo}'";
DataSet dtset = Utils.netClientDBHelper.getDataSet(sql);
if (dtset != null && dtset.Tables.Count > 0 && dtset.Tables[0].Rows.Count > 0)

@ -8,7 +8,29 @@ namespace XGL.Models.Model.OrderPrepare
{
public class MaterialPlanModel
{
public string id { get; set; }
public string Name { get; set; }
public string reqCode { get; set; }
public string reqTime { get; set; }
public string planNo { get; set; }
public List<skuInfo> data { get; set; }
}
public class skuInfo
{
public string sku { get; set; }
public string loadNo { get; set; }
public List<unloadNoInfo> unLoadItems { get; set; }
}
public class unloadNoInfo
{
public string unloadNo { get; set; }
}
public class MaterialPlanModelResponse
{
public string reqCode { get; set; }
public string code { get; set; }
public string message { get; set; }
}
}

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace XGL.Models.Model.OrderPrepare
{
public class WetMaterialModel
{
public string id { get; set; }
public string factory_code { get; set; }
public string prod_code { get; set; }
public string sync_flag { get; set; }
public DateTime plan_time { get; set; }
public string workorder_id { get; set; }
public string bucket_id { get; set; }
public string bucket_code { get; set; }
public string material_code { get; set; }
public string material_name { get; set; }
public string product_name { get; set; }
public string shift_desc { get; set; }
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

@ -152,6 +152,7 @@
HorizontalAlignment="Left"
AutoGenerateColumns="False"
CanUserResizeColumns="False"
SelectionMode="Single"
CellStyle="{StaticResource CustomCellStyle}"
FrozenColumnCount="1"
IsReadOnly="True">
@ -198,7 +199,7 @@
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="200" Header="序号" />
<DataGridTextColumn
<!--<DataGridTextColumn
Width="250"
Binding="{Binding WorkOrderCode}"
Header="工单编码" />
@ -221,7 +222,35 @@
<DataGridTextColumn
Width="*"
Binding="{Binding BatchCode}"
Header="生产批次" />
Header="生产批次" />-->
<DataGridTextColumn
Width="250"
Binding="{Binding id}"
Header="计划编码" />
<DataGridTextColumn
Width="150"
Binding="{Binding workorder_id}"
Header="订单编码" />
<DataGridTextColumn
Width="450"
Binding="{Binding ProductName}"
Header="产品名称" />
<DataGridTextColumn
Width="200"
Binding="{Binding material_code}"
Header="产品型号" />
<DataGridTextColumn
Width="200"
Binding="{Binding plan_time}"
Header="工单时间" />
<DataGridTextColumn
Width="*"
Binding="{Binding bucket_code}"
Header="料罐编码" />
<DataGridTextColumn
Width="*"
Binding="{Binding shift_desc}"
Header="班次" />
</DataGrid.Columns>
</DataGrid>
</ScrollViewer>

@ -15,6 +15,7 @@ using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using XGL.Models.Model.OrderPrepare;
using XGL.Thrift;
namespace XGL.Views
@ -30,33 +31,44 @@ namespace XGL.Views
}
List<WorkOrder> modelWareHouse = new List<WorkOrder>();
DBService userDbWareHouse = new DBService();
WorkOrder list_modelWareHouse = new WorkOrder();
List<WetMaterialModel> wetList = new List<WetMaterialModel>();
WetMaterialModel wet = new WetMaterialModel();
string messageOrderCode = "";
/// <summary>
/// <summary>
/// 获取主页显示订单
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
List<WorkOrder> modelWareHouse = new List<WorkOrder>();
DBService userDbWareHouse = new DBService();
WorkOrder list_modelWareHouse = new WorkOrder();
string messageOrderCode = "";
private void GetWorkOrder()
{
try
{
modelWareHouse = new List<WorkOrder>();
userDbWareHouse = new DBService();
var Items = userDbWareHouse.GetWorkOrderList();
//modelWareHouse = new List<WorkOrder>();
//userDbWareHouse = new DBService();
var Items = userDbWareHouse.GetWetPlanInfo();
foreach (DataRow i in Items.Rows)
{
list_modelWareHouse.WorkOrderCode = i["WorkOrderCode"].ToString();
list_modelWareHouse.OrderCode = i["OrderCode"].ToString();
list_modelWareHouse.ProductName = i["ProductName"].ToString();
list_modelWareHouse.ProductSpc = i["ProductSpc"].ToString();
list_modelWareHouse.QuantitySplit = i["QuantitySplit"].ToString();
list_modelWareHouse.BatchCode = i["BatchCode"].ToString();
modelWareHouse.Add(list_modelWareHouse);
wet.id = i["id"].ToString();
wet.workorder_id = i["workorder_id"].ToString();
wet.product_name = i["product_name"].ToString();
wet.material_code = i["material_code"].ToString();
wet.plan_time = Convert.ToDateTime(i["plan_time"].ToString());
wet.bucket_code = i["bucket_code"].ToString();
wet.shift_desc = i["shift_desc"].ToString();
wetList.Add(wet);
// list_modelWareHouse.WorkOrderCode = i["WorkOrderCode"].ToString();
// list_modelWareHouse.OrderCode = i["OrderCode"].ToString();
// list_modelWareHouse.ProductName = i["ProductName"].ToString();
// list_modelWareHouse.ProductSpc = i["ProductSpc"].ToString();
// list_modelWareHouse.QuantitySplit = i["QuantitySplit"].ToString();
// list_modelWareHouse.BatchCode = i["BatchCode"].ToString();
// modelWareHouse.Add(list_modelWareHouse);
}
this.WorkOrder.ItemsSource = modelWareHouse;
}
@ -79,15 +91,23 @@ namespace XGL.Views
}
private void btnStartOrders_Click(object sender, RoutedEventArgs e)
{
var wmsState = userDbWareHouse.GetWorkOrderQitaoLv("");
if (WorkOrder.SelectedItems.Count == 0)
{
CustomMessageBox.Show("请选择要开始的工单!", CustomMessageBoxIcon.Warning);
return;
}
string orderID = (WorkOrder.SelectedItem as WetMaterialModel).id;
var wmsState = userDbWareHouse.GetWorkOrderQitaoLv(orderID);
if (wmsState == null || wmsState.Rows[0][0].Equals("0"))
{
CustomMessageBox.Show("该工单未准备好,请稍后再试!", CustomMessageBoxIcon.Warning);
return;
}
string apiUrl = "http://example.com/api/endpoint";
string jsonContent = "{\"key1\":\"value1\",\"key2\":\"value2\"}";
string jsonContent = "{\"key1\":\"value1\",\"key2\":\"value2\"}";
MaterialPlanModel materialPlanModel = new MaterialPlanModel();
//materialPlanModel.reqCode = CommonFunc.Common.
RestHelper restClient = new RestHelper();
var response = restClient.PostAsync(apiUrl, jsonContent);

@ -0,0 +1,56 @@
【时间】:2023-08-28 18:13:18,653
【级别】:ERROR
【类名】:CommonFunc.LogHelper
【线程ID】: 18232
【文件地址】:D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\Common.cs 第403行
【日志内容】:==========>变量取值出错:给定关键字不在字典中。 [loginUser]
【日记详细】:
---------------------------------------------------------------------------------------------------------------
【时间】:2023-08-28 18:13:18,720
【级别】:ERROR
【类名】:CommonFunc.LogHelper
【线程ID】: 18232
【文件地址】:D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\Common.cs 第403行
【日志内容】:==========>变量取值出错:给定关键字不在字典中。 [loginpwd]
【日记详细】:
---------------------------------------------------------------------------------------------------------------
【时间】:2023-08-28 18:13:35,720
【级别】:ERROR
【类名】:CommonFunc.LogHelper
【线程ID】: 18232
【文件地址】:D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\Common.cs 第364行
【日志内容】:在D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\XGL\bin\x86\Debug\\System.ini中已经存在相同的配置项loginUser
【日记详细】:
---------------------------------------------------------------------------------------------------------------
【时间】:2023-08-28 18:13:35,725
【级别】:ERROR
【类名】:CommonFunc.LogHelper
【线程ID】: 18232
【文件地址】:D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\Common.cs 第364行
【日志内容】:在D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\XGL\bin\x86\Debug\\System.ini中已经存在相同的配置项loginpwd
【日记详细】:
---------------------------------------------------------------------------------------------------------------
【时间】:2023-08-28 18:13:36,131
【级别】:INFO
【类名】:CommonFunc.SqlServerDBHelper
【线程ID】: 21020
【文件地址】:D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\SqlServerDbHelper.cs 第50行
【日志内容】:数据库连接已打开!
【日记详细】:
---------------------------------------------------------------------------------------------------------------
【时间】:2023-08-28 18:13:36,405
【级别】:INFO
【类名】:CommonFunc.LogHelper
【线程ID】: 21020
【文件地址】:D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\XGL\LoginPage.xaml.cs 第127行
【日志内容】:登录时间差0
【日记详细】:
---------------------------------------------------------------------------------------------------------------
【时间】:2023-08-28 18:13:37,968
【级别】:INFO
【类名】:CommonFunc.SqlServerDBHelper
【线程ID】: 18232
【文件地址】:D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\SqlServerDbHelper.cs 第50行
【日志内容】:数据库连接已打开!
【日记详细】:
---------------------------------------------------------------------------------------------------------------

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save