20260122
zhaoaomin 2 years ago
parent 02723809b2
commit 3f912dd198

Binary file not shown.

@ -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,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>

@ -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,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>

@ -1 +1 @@
462f338da6fdd10599c95e42e508a81b510d84df
65ea42614d5210ce1f76f304a0b99eadc686e4a3

@ -30,3 +30,81 @@ F:\KHD\230620\shangjian\CentralControl\obj\Debug\CentralControl.csproj.CoreCompi
F:\KHD\230620\shangjian\CentralControl\obj\Debug\CentralControl.csproj.CopyComplete
F:\KHD\230620\shangjian\CentralControl\obj\Debug\CentralControl.exe
F:\KHD\230620\shangjian\CentralControl\obj\Debug\CentralControl.pdb
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\snap7.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\config\ConnectionConfig.Config
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\NLog.config
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\CentralControl.exe.config
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\CentralControl.exe
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\CentralControl.pdb
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\CommonFunc.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\Google.Protobuf.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\MySql.Data.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\NLog.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\Thrift.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Data.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Models.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Thrift.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\NPOI.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\NPOI.OOXML.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\NPOI.OpenXmlFormats.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\NPOI.OpenXml4Net.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\CommonFunc.pdb
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\CommonFunc.dll.config
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Data.pdb
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Data.dll.config
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Models.pdb
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Models.dll.config
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Thrift.pdb
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\bin\Debug\Google.Protobuf.xml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\obj\Debug\CentralControl.csproj.AssemblyReference.cache
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\obj\Debug\CentralControl.csproj.SuggestedBindingRedirects.cache
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\obj\Debug\CentralControl.csproj.CoreCompileInputs.cache
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\obj\Debug\CentralControl.csproj.CopyComplete
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\obj\Debug\CentralControl.exe
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CentralControl\obj\Debug\CentralControl.pdb
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\Config\log4net.config
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\snap7.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\config\ConnectionConfig.Config
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\NLog.config
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\CentralControl.exe.config
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\CentralControl.exe
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\CentralControl.pdb
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\CommonFunc.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\Google.Protobuf.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\MySql.Data.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\NLog.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\Thrift.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Data.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Models.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Thrift.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\NPOI.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\log4net.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\QRCoder.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\NPOI.OOXML.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\Newtonsoft.Json.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\BCrypt.Net-Next.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\NPOI.OpenXmlFormats.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\NPOI.OpenXml4Net.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\System.Memory.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\System.Numerics.Vectors.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\System.Buffers.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\CommonFunc.pdb
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\CommonFunc.dll.config
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Data.pdb
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Data.dll.config
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Models.pdb
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Models.dll.config
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\XGL.Thrift.pdb
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\Google.Protobuf.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\BCrypt.Net-Next.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\System.Memory.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\System.Numerics.Vectors.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\bin\Debug\System.Buffers.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\obj\Debug\CentralControl.csproj.AssemblyReference.cache
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\obj\Debug\CentralControl.csproj.SuggestedBindingRedirects.cache
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\obj\Debug\CentralControl.csproj.CoreCompileInputs.cache
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\obj\Debug\CentralControl.csproj.CopyComplete
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\obj\Debug\CentralControl.exe
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CentralControl\obj\Debug\CentralControl.pdb

@ -6,6 +6,8 @@ using System.Net;
using System.Collections.Generic;
using System.Reflection;
using XGL.Models;
using System.Runtime.InteropServices;
using System.Text;
namespace CommonFunc
{
@ -272,5 +274,153 @@ namespace CommonFunc
}
return dic;
}
/// <summary>
/// 变量管理,用于数据交互
/// </summary>
public static Dictionary<string, object> Variables = new Dictionary<string, object>();
public static string s_config;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
#region 读取配置文件
/// <summary>
/// 读取配置文件
/// </summary>
public static void ReadConfig()
{
try
{
string path = AppDomain.CurrentDomain.BaseDirectory;
s_config = path + "\\System.ini";
SetConfigToContexts(s_config);
}
catch (Exception ex)
{
LogHelper.instance.log.Error(" ReadConfig() 异常(配置文件格式不正确)" + ex.Message);
}
}
/// <summary>
/// 写入INI文件
/// </summary>
/// <param name="Section">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
/// <param name="Value">值</param>
public static void IniWriteValue(string Section, string Key, string Value)
{
try
{
WritePrivateProfileString(Section, Key, Value, s_config);
}
catch (Exception ex)
{
LogHelper.instance.log.Error("==========>变量赋值出错:" + ex.Message);
}
}
/// <summary>
/// 读出INI文件
/// </summary>
/// <param name="Section">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
public static string IniReadValue(string Section, string Key)
{
try
{
StringBuilder temp = new StringBuilder(500);
int i = GetPrivateProfileString(Section, Key, "", temp, 500, s_config);
return temp.ToString();
}
catch (Exception ex)
{
LogHelper.instance.log.Error("==========>变量读取出错:" + ex.Message);
}
return "";
}
/// <summary>
/// 将配置文件中的信息存到Contexts中
/// </summary>
/// <param name="path"></param>
private static void SetConfigToContexts(string path)
{
string[] allLines = File.ReadAllLines(path);
foreach (string str in allLines)
{
string[] config = str.Split('=');
if (config.Length >= 2)
{
if (config[0].Trim() == "" || config[1].Trim() == "") continue;
if (GetValue(config[0].Trim()).ToString() != "")
{
LogHelper.instance.log.Error("在" + path + "中已经存在相同的配置项:" + config[0].Trim());
}
SetValue(config[0].Trim(), str.Substring(config[0].Length + 1));
}
}
}
#endregion
/// <summary>
/// 设置变量
/// </summary>
/// <param name="strVarName">名称</param>
/// <param name="objVarValue">值</param>
public static void SetValue(string strVarName, object objVarValue)
{
try
{
Variables[strVarName] = objVarValue;
}
catch (Exception ex)
{
LogHelper.instance.log.Error("==========>变量赋值出错:" + ex.Message + " [" + strVarName + "]");
}
}
/// <summary>
/// 获取变量值
/// </summary>
/// <param name="strVarName">名称</param>
/// <returns></returns>
public static object GetValue(string strVarName)
{
try
{
return Variables[strVarName];
}
catch (Exception ex)
{
LogHelper.instance.log.Error("==========>变量取值出错:" + ex.Message + " [" + strVarName + "]");
return "";
}
}
/// <summary>
/// 获取变量值
/// </summary>
/// <param name="strVarName">名称</param>
/// <returns></returns>
public static string GetString(string strVarName)
{
try
{
return Variables[strVarName].ToString();
}
catch (Exception ex)
{
LogHelper.instance.log.Error("==========>变量取值出错:" + ex.Message + " [" + strVarName + "]");
return null;
}
}
}
}

@ -24,6 +24,7 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
@ -53,15 +54,25 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="BCrypt.Net-Next, Version=4.0.3.0, Culture=neutral, PublicKeyToken=1e11be04b6288443, processorArchitecture=MSIL">
<HintPath>..\packages\BCrypt.Net-Next.4.0.3\lib\net48\BCrypt.Net-Next.dll</HintPath>
</Reference>
<Reference Include="Google.Protobuf, Version=3.5.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<HintPath>..\packages\Google.Protobuf.3.5.1\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib">
<HintPath>..\packages\NPOI 2.2.0.0\dotnet4\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="log4net">
<HintPath>..\Libs\log4net.dll</HintPath>
</Reference>
<Reference Include="MySql.Data, Version=6.8.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.6.8.8\lib\net40\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Libs\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog">
<HintPath>..\..\..\海尔中一悬挂链\前台\XGL\bin\x86\Debug\NLog.dll</HintPath>
</Reference>
@ -77,7 +88,15 @@
<Reference Include="NPOI.OpenXmlFormats">
<HintPath>..\packages\NPOI.OpenXmlFormats.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="QRCoder">
<HintPath>..\Libs\QRCoder.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
@ -89,15 +108,30 @@
<Reference Include="System.Drawing" />
<Reference Include="System.Drawing.Design" />
<Reference Include="System.Management" />
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http" />
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Transactions" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Windows" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xaml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="Common.cs" />
@ -108,11 +142,21 @@
<Compile Include="DbHelperSQLServer.cs" />
<Compile Include="DbHelperToMES.cs" />
<Compile Include="ExcelHelper.cs" />
<Compile Include="HMessageBox.xaml.cs">
<DependentUpon>HMessageBox.xaml</DependentUpon>
</Compile>
<Compile Include="JsonHelper.cs" />
<Compile Include="Logger.cs" />
<Compile Include="LogHelper.cs" />
<Compile Include="LoginUserInfo.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SecurityHelper\DESProvider.cs" />
<Compile Include="SecurityHelper\MD5Provider.cs" />
<Compile Include="SqlServerDbHelper.cs" />
<Compile Include="Tools\CustomMessageBox.cs" />
<Compile Include="Tools\PlcHelper.cs" />
<Compile Include="Tools\RestHelper.cs" />
<Compile Include="Tools\Utils.cs" />
<Compile Include="UserInfo.cs" />
<Compile Include="WorkPost.cs" />
</ItemGroup>
@ -124,8 +168,17 @@
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="Config\log4net.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Page Include="HMessageBox.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</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,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>

@ -14,7 +14,11 @@ namespace CommonFunc
private string adoConnectionString;
private string mysqlConnectionString;
private string mesConnectionString;
private string cloudConnectionString;
private string clientConnectionString;
private string clientRemotelyConnectionString;
/// <summary>
/// sql数据库连接字符串
/// </summary>
@ -62,7 +66,34 @@ namespace CommonFunc
get { return this.mesConnectionString; }
set { this.mesConnectionString = value; }
}
/// <summary>
/// sql云数据库连接字符串
/// </summary>
[XmlElement]
public string CloudConnectionString
{
get { return this.cloudConnectionString; }
set { this.cloudConnectionString = value; }
}
/// <summary>
/// sql本地业务数据库连接字符串
/// </summary>
[XmlElement]
public string MESClientConnectionString
{
get { return this.clientConnectionString; }
set { this.clientConnectionString = value; }
}
/// <summary>
/// sql远程业务数据库连接字符串
/// </summary>
[XmlElement]
public string MESNetClientConnectionString
{
get { return this.clientRemotelyConnectionString; }
set { this.clientRemotelyConnectionString = value; }
}
}
}

@ -85,6 +85,42 @@ namespace CommonFunc
}
}
/// <summary>
/// 获取云库链接串
/// </summary>
public static string GetCloudSqlConnectionString
{
get
{
ConnectionConfig conSetting = DatabaseConfig.GetSettingsDirectory();
return CommonFunc.DESProvider.DecryptString(conSetting.CloudConnectionString);
}
}
/// <summary>
/// 获取网络业务库
/// </summary>
public static string GetMESNetClientSqlConnectionString
{
get
{
ConnectionConfig conSetting = DatabaseConfig.GetSettingsDirectory();
return CommonFunc.DESProvider.DecryptString(conSetting.MESNetClientConnectionString);
}
}
/// <summary>
/// 获取本地业务库
/// </summary>
public static string GetMESClientSqlConnectionString
{
get
{
ConnectionConfig conSetting = DatabaseConfig.GetSettingsDirectory();
return CommonFunc.DESProvider.DecryptString(conSetting.MESClientConnectionString);
}
}
///// <summary>
///// 返回一oracle连接字符串
///// </summary>

@ -0,0 +1,34 @@
<Window x:Class="CommonFunc.HMessageBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CommonFunc"
mc:Ignorable="d"
Title="HMessageBox" Height="210" Width="420" WindowStartupLocation="CenterScreen" WindowStyle="None" BorderThickness="1,1,1,1" ResizeMode="NoResize" Closed="Window_Closed">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<!--显示图片和文本-->
<StackPanel Grid.Row="0" VerticalAlignment="Center" Orientation="Horizontal">
<Image x:Name="MsgImg" Width="62" Height="62" Margin="40,20,20,20"/>
<TextBlock VerticalAlignment="Center" x:Name="TxtMsg" HorizontalAlignment="Left" Foreground="Black" TextWrapping="WrapWithOverflow" Width="280" TextAlignment="Left"
FontSize="18"/>
</StackPanel>
<Border BorderBrush="#FF34268A" BorderThickness="0,0.8,0,0"></Border>
<!--Button Margin(坐上右下)-->
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right" >
<Button Content="确 定" Background="#216DD3" BorderBrush="Transparent" x:Name="OkButton" Width="80" Height="28" Click="OkButton_Click" Margin="10,0,15,0" IsDefault="True"
/>
<Button Content="是" Background="#216DD3" BorderBrush="Transparent" x:Name="YesButton" Width="80" Height="28" Click="YesButton_Click" Margin="10,0,15,0"
/>
<Button Content="否" Background="#D7D7D7" Foreground="Black" BorderBrush="Transparent" BorderThickness="0.5" x:Name="NoButton" Width="80" Height="28" Click="NoButton_Click" Margin="10,0,15,0"
/>
<Button Content="取消" Background="#D7D7D7" Foreground="Black" BorderBrush="Transparent" BorderThickness="0.5" x:Name="CancelButton" Width="80" Height="28" Click="CancelButton_Click" Margin="10,0,15,0"
/>
</StackPanel>
</Grid>
</Window>

@ -0,0 +1,103 @@
using CommonFunc.Tools;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace CommonFunc
{
/// <summary>
/// HMessageBox.xaml 的交互逻辑
/// </summary>
public partial class HMessageBox : Window
{
#region 变量
/// <summary>
/// 显示的内容
/// </summary>
public string MessageBoxText { get; set; }
/// <summary>
/// 显示的图片
/// </summary>
public string ImagePath { get; set; }
/// <summary>
/// 控制显示 OK 按钮
/// </summary>
public Visibility OkButtonVisibility { get; set; }
/// <summary>
/// 控制显示 Cacncel 按钮
/// </summary>
public Visibility CancelButtonVisibility { get; set; }
/// <summary>
/// 控制显示 Yes 按钮
/// </summary>
public Visibility YesButtonVisibility { get; set; }
/// <summary>
/// 控制显示 No 按钮
/// </summary>
public Visibility NoButtonVisibility { get; set; }
/// <summary>
/// 消息框的返回值
/// </summary>
public CustomMessageBoxResult Result { get; set; }
#endregion
public HMessageBox()
{
InitializeComponent();
}
public void SetControl()
{
OkButton.Visibility = OkButtonVisibility;
YesButton.Visibility = YesButtonVisibility;
NoButton.Visibility = NoButtonVisibility;
CancelButton.Visibility = CancelButtonVisibility;
TxtMsg.Text = MessageBoxText;
if (!string.IsNullOrEmpty(ImagePath))
{
MsgImg.Source = new BitmapImage(new Uri(ImagePath, UriKind.RelativeOrAbsolute));
}
}
private void Window_Closed(object sender, EventArgs e)
{
this.Close();
}
private void OkButton_Click(object sender, RoutedEventArgs e)
{
Result = CustomMessageBoxResult.OK;
this.Close();
}
private void YesButton_Click(object sender, RoutedEventArgs e)
{
Result = CustomMessageBoxResult.Yes;
this.Close();
}
private void NoButton_Click(object sender, RoutedEventArgs e)
{
Result = CustomMessageBoxResult.No;
this.Close();
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
Result = CustomMessageBoxResult.Cancel;
this.Close();
}
}
}

@ -0,0 +1,17 @@
using System.IO;
using System.Reflection;
namespace CommonFunc
{
public class LogHelper
{
public static LogHelper instance = new LogHelper();
public log4net.ILog log = null;
public LogHelper()
{
//那么我就获取log4net的配置文件并将它加载到我们的项目中去
log4net.Config.XmlConfigurator.Configure(new FileInfo(@"Config\log4net.config"));
log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
}
}
}

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CommonFunc
{
/// <summary>
/// 登录用户
/// </summary>
public static class LoginUser
{
/// <summary>
/// 用户Id
/// </summary>
public static int UserId { get; set; }
/// <summary>
/// 员工号
/// </summary>
public static string UserCode { get; set; }
/// <summary>
/// 员工姓名
/// </summary>
public static string UserName { get; set; }
}
}

@ -0,0 +1,271 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace CommonFunc
{
public class SqlServerDBHelper
{
//日志
public static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private string dbConnStr;
private SqlConnection dbConn = new SqlConnection();
SqlCommandBuilder sbBuilder = new SqlCommandBuilder();
//数据库连接
public string getDBConnStr()
{
return dbConnStr;
}
public SqlServerDBHelper(string initDBConnStr)
{
if (initDBConnStr == null || initDBConnStr.Length == 0)
{
log.WarnFormat("传入的数据库连接串为空!");
}
dbConnStr = initDBConnStr;
}
/// <summary>
/// 数据库连接
/// </summary>
/// <returns></returns>
public bool connect()
{
bool bSucc = false;
dbConn.Close();
dbConn.ConnectionString = dbConnStr;
try
{
dbConn.Open();
bSucc = true;
log.InfoFormat("数据库连接已打开!");
}
catch (Exception ex)
{
log.WarnFormat("连接数据库时发生异常:" + ex.Message);
}
return bSucc;
}
public void close()
{
if (dbConn.State != ConnectionState.Closed)
{
dbConn.Close();
log.InfoFormat("数据库连接已关闭!");
}
}
public ConnectionState connectionState
{
get { return dbConn.State; }
}
public void CheckConnection()
{
if (dbConn.State == ConnectionState.Closed || dbConn.State == ConnectionState.Broken)
{
connect();
}
else if (dbConn.State == ConnectionState.Connecting || dbConn.State == ConnectionState.Executing || dbConn.State == ConnectionState.Fetching)
{
//
}
}
/// <summary>
/// 执行SQL命令 返回DataSet
/// </summary>
/// <param name="sql">sql命令</param>
/// <param name="type">执行类型</param>
/// <param name="sqlparams">参数</param>
/// <returns></returns>
public DataSet getDataSet(string sql, params SqlParameter[] sqlparams)
{
CheckConnection();
DataSet ds = new DataSet();
using (SqlDataAdapter da = new SqlDataAdapter(sql, dbConn))
{
try
{
if (sqlparams != null)
{
da.SelectCommand.Parameters.AddRange(sqlparams);
}
da.Fill(ds);
//防止俩个函数使用同一个sqlparams导致的“另一个SqlParameterCollection中已包含SqlParameter”错误
da.SelectCommand.Parameters.Clear();
}
catch (Exception ex)
{
log.WarnFormat("执行查询操作异常:" + ex.Message);
}
}
return ds;
}
/// <summary>
/// 执行sqlinsert、delete、update语句进行非查询操作
/// </summary>
/// <param name="sql">sql命令</param>
/// <returns>返回受影响行数</returns>
public int executeUpdate(string sql)
{
CheckConnection();
int rowCount = 0;
using (SqlCommand cmd = new SqlCommand(sql, dbConn))
{
try
{
rowCount = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
log.WarnFormat("执行更新操作异常:{0}", ex.Message);
}
}
return rowCount;
}
public int executeUpdate(string sql, params SqlParameter[] sqlparams)
{
CheckConnection();
int rowCount = 0;
using (SqlCommand cmd = new SqlCommand(sql, dbConn))
{
try
{
if (sqlparams != null)
{
cmd.Parameters.AddRange(sqlparams);
}
rowCount = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
log.WarnFormat("执行更新操作异常:{0}", ex.Message);
}
}
return rowCount;
}
/// <summary>
/// 使用SqlDataAdapter.Update()更新数据
/// </summary>
/// <param name="str"></param>
public void updateDataTable(DataTable dt, string selectSql, MissingSchemaAction msaOption = MissingSchemaAction.AddWithKey)
{
CheckConnection();
using (SqlDataAdapter da = new SqlDataAdapter())
{
da.MissingSchemaAction = msaOption;
using (SqlCommand cmd = new SqlCommand(selectSql, dbConn))
{
da.SelectCommand = cmd;
sbBuilder.DataAdapter = da;
da.InsertCommand = da.InsertCommand;
da.UpdateCommand = da.UpdateCommand;
da.DeleteCommand = da.DeleteCommand;
try
{
da.Update(dt);
dt.AcceptChanges();
}
catch (Exception ex)
{
log.WarnFormat("数据更新时发生异常{0},SQL:{1}", ex.Message, selectSql);
}
}
}
}
/// <summary>
/// 执行多条SQL语句实现数据库事务。
/// </summary>sql2000数据库
/// <param name="sqlList">多条SQL语句</param>
public bool executeBatchSql(List<string> sqlList)
{
CheckConnection();
bool isCommit = false;
string currSql = string.Empty;
SqlTransaction tx = dbConn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
try
{
cmd.Connection = dbConn;
cmd.Transaction = tx;
for (int iLoop = 0; iLoop < sqlList.Count; iLoop++)
{
isCommit = false;
currSql = sqlList[iLoop].Trim();
if (currSql.Length > 0)
{
cmd.CommandText = currSql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
isCommit = true;
}
catch (System.Data.SqlClient.SqlException E)
{
tx.Rollback();
log.WarnFormat("执行事务过程中出现异常:{0},{1}", E.Message, currSql);
}
finally
{
cmd.Dispose();
}
return isCommit;
}
public object getScalar(string sql, params SqlParameter[] sqlparams)
{
CheckConnection();
Object scaleValue = null;
if (dbConn.State != ConnectionState.Open)
{
return null;
}
DataSet ds = new DataSet();
using (SqlDataAdapter da = new SqlDataAdapter(sql, dbConn))
{
try
{
if (sqlparams != null)
{
da.SelectCommand.Parameters.AddRange(sqlparams);
}
da.Fill(ds);
}
catch (Exception ex)
{
log.WarnFormat("执行查询操作异常{0},SQL{1},{2}", ex.Message, sql, sqlparams);
}
}
try
{
if (ds.Tables[0].Rows.Count > 0)
{
scaleValue = ds.Tables[0].Rows[0][0];
}
}
catch (Exception ex)
{
log.WarnFormat("获取标量值发生异常{0}", ex.Message);
}
return scaleValue;
}
}
}

@ -0,0 +1,163 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace CommonFunc.Tools
{
public class CustomMessageBox
{
public static CustomMessageBoxResult Show(string messageBoxText, CustomMessageBoxButton messageBoxButton, CustomMessageBoxIcon messageBoxImage)
{
HMessageBox window = new HMessageBox();
try
{
//window.Owner = Application.Current.MainWindow;
//window.Topmost = true;
window.MessageBoxText = messageBoxText;
window.OkButtonVisibility = Visibility.Hidden;
window.CancelButtonVisibility = Visibility.Hidden;
window.YesButtonVisibility = Visibility.Hidden;
window.NoButtonVisibility = Visibility.Hidden;
switch (messageBoxImage)
{
case CustomMessageBoxIcon.Question:
window.ImagePath = @"Resources/alert.png";
break;
case CustomMessageBoxIcon.Error:
window.ImagePath = @"Resources/Error.png";
break;
case CustomMessageBoxIcon.Warning:
window.ImagePath = @"Resources/alert.png";
break;
case CustomMessageBoxIcon.Success:
window.ImagePath = @"Resources/Success.png";
break;
}
switch (messageBoxButton)
{
case CustomMessageBoxButton.OK:
window.OkButtonVisibility = Visibility.Visible;
break;
case CustomMessageBoxButton.OKCancel:
window.OkButtonVisibility = Visibility.Visible;
window.CancelButtonVisibility = Visibility.Visible;
break;
case CustomMessageBoxButton.YesNo:
window.YesButtonVisibility = Visibility.Visible;
window.NoButtonVisibility = Visibility.Visible;
break;
case CustomMessageBoxButton.YesNoCancel:
window.YesButtonVisibility = Visibility.Visible;
window.NoButtonVisibility = Visibility.Visible;
window.CancelButtonVisibility = Visibility.Visible;
break;
default:
window.OkButtonVisibility = Visibility.Visible;
break;
}
window.SetControl();
window.ShowDialog();
}
catch (Exception ex)
{
LogHelper.instance.log.Error("调用弹出消息 异常:" + ex.Message);
}
return window.Result;
}
public static CustomMessageBoxResult Show(string messageBoxText)
{
HMessageBox window = new HMessageBox();
window.MessageBoxText = messageBoxText;
window.OkButtonVisibility = Visibility.Hidden;
window.CancelButtonVisibility = Visibility.Hidden;
window.YesButtonVisibility = Visibility.Hidden;
window.NoButtonVisibility = Visibility.Hidden;
window.ImagePath = @"Resources/Success.png";
window.OkButtonVisibility = Visibility.Visible;
window.CancelButtonVisibility = Visibility.Visible;
window.SetControl();
window.ShowDialog();
return window.Result;
}
public static CustomMessageBoxResult Show(string messageBoxText, CustomMessageBoxIcon messageBoxImage)
{
HMessageBox window = new HMessageBox();
window.MessageBoxText = messageBoxText;
window.OkButtonVisibility = Visibility.Hidden;
window.CancelButtonVisibility = Visibility.Hidden;
window.YesButtonVisibility = Visibility.Hidden;
window.NoButtonVisibility = Visibility.Hidden;
switch (messageBoxImage)
{
case CustomMessageBoxIcon.Question:
window.ImagePath = @"Resources/alert.png";
break;
case CustomMessageBoxIcon.Error:
window.ImagePath = @"Resources/Error.png";
break;
case CustomMessageBoxIcon.Warning:
window.ImagePath = @"Resources/alert.png";
break;
case CustomMessageBoxIcon.Success:
window.ImagePath = @"Resources/Success.png";
break;
}
window.OkButtonVisibility = Visibility.Visible;
window.CancelButtonVisibility = Visibility.Visible;
window.SetControl();
window.ShowDialog();
return window.Result;
}
}
#region Enum Class
/// <summary>
/// 显示按钮类型
/// </summary>
public enum CustomMessageBoxButton
{
OK = 0,
OKCancel = 1,
YesNo = 2,
YesNoCancel = 3
}
/// <summary>
/// 消息框的返回值
/// </summary>
public enum CustomMessageBoxResult
{
//用户直接关闭了消息窗口
None = 0,
//用户点击确定按钮
OK = 1,
//用户点击取消按钮
Cancel = 2,
//用户点击是按钮
Yes = 3,
//用户点击否按钮
No = 4
}
/// <summary>
/// 图标类型
/// </summary>
public enum CustomMessageBoxIcon
{
None = 0,
Error = 1,
Question = 2,
Warning = 3,
Success = 4
}
#endregion
}

@ -0,0 +1,273 @@
using CentralControl.BaseData;
using Snap7;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CommonFunc.Tools
{
public class PlcHelper
{
private S7Client Client;
private object plcLock = new object();
public PlcHelper()
{
Client = new S7Client();
}
public bool Connection(string ipaddress)
{
int Result;
int Rack = 0;
int Slot = 0;
Result = Client.ConnectTo(ipaddress, Rack, Slot);
if (Result == 0)
{
return true;
}
else
{
return false;
}
}
public object Read(PlcSetting data)
{
try
{
int DBNumber;
int Size;
int Result;
//寄存器位置
string[] plcaddress = data.PlcAddress.Split('.');
//取数据库DB位置
DBNumber = Convert.ToInt32(plcaddress[0].Replace("DB", ""));
int start = 0;
//判断点位数据类型
if (data.PlcDataType == 1)//字
{
start = Convert.ToInt32(plcaddress[1].Replace("DBW", ""));
Size = Convert.ToInt32(data.PlcValueLength);
//获取偏移量
lock (plcLock)
{
byte[] Buffer = new byte[65536];
//Result = Client.DBRead(DBNumber, start, Size, Buffer);
Result = Client.DBRead(DBNumber, start, Size, Buffer);
if (Result == 0)
return Buffer[0] << 8 | Buffer[1];
else
return null;
}
}
else if (data.PlcDataType == 0)//字符
{
start = Convert.ToInt32(plcaddress[1].Replace("DBB", ""));
//设置长度
Size = System.Convert.ToInt32(data.PlcValueLength);
//获取偏移量
lock (plcLock)
{
byte[] Buffer = new byte[65536];
//Result = Client.DBRead(DBNumber, start, Size, Buffer);
Result = Client.DBRead(DBNumber, start, Size, Buffer);
if (Result == 0)
return HexDump(Buffer, Size);
else
return null;
}
}
else if (data.PlcDataType == 2)//字符
{
start = Convert.ToInt32(plcaddress[1].Replace("DBX", ""));
//设置长度
Size = System.Convert.ToInt32(plcaddress[2]);
//获取偏移量
lock (plcLock)
{
byte[] Buffer = new byte[8];
//Result = Client.DBRead(DBNumber, start, Size, Buffer);
Result = Client.DBRead(DBNumber, start, 1, Buffer);
if (Result == 0)
{
int ret = Convert.ToInt32(Buffer[0]);
string str = Convert.ToString(Convert.ToInt32(ret), 2).PadLeft(8, '0');
if (int.Parse(plcaddress[2]) == 0)
{
return str.Substring(7, 1);
}
else if (int.Parse(plcaddress[2]) == 1)
{
return str.Substring(6, 1);
}
else if (int.Parse(plcaddress[2]) == 2)
{
return str.Substring(5, 1);
}
else if (int.Parse(plcaddress[2]) == 3)
{
return str.Substring(4, 1);
}
else if (int.Parse(plcaddress[2]) == 4)
{
return str.Substring(3, 1);
}
else if (int.Parse(plcaddress[2]) == 5)
{
return str.Substring(2, 1);
}
else if (int.Parse(plcaddress[2]) == 6)
{
return str.Substring(1, 1);
}
else if (int.Parse(plcaddress[2]) == 7)
{
return str.Substring(0, 1);
}
}
else
return null;
}
}
return null;
}
catch (Exception ex)
{
//Logger logger = new Logger();
//logger.Log("plc点位异常:" + ex.Message + ex.StackTrace);
return null;
}
}
public bool Write(PlcSetting data, object value)
{
int writeNumber = 10;
while (writeNumber > 0)
{
writeNumber--;
try
{
int DBNumber;
int Size;
int Result;
//寄存器位置
string[] plcaddress = data.PlcAddress.Split('.');
//取数据库DB位置
DBNumber = Convert.ToInt32(plcaddress[0].Replace("DB", ""));
//判断点位数据类型
if (data.PlcDataType == 1)
{
}
//设置长度
Size = System.Convert.ToInt32(data.PlcValueLength);
lock (plcLock)
{
byte[] Buffer = new byte[65536];
//获取偏移量
S7.SetWordAt(Buffer, 0, Convert.ToUInt16(value));
int start = Convert.ToInt32(plcaddress[1].Replace("DBW", ""));
Result = Client.DBWrite(DBNumber, start, Size, Buffer);
Buffer = null;
if (Result == 0)
{
return true;
}
}
}
catch (Exception ex)
{
Logger logger = new Logger();
logger.Log("plc点位异常:" + ex.Message + ex.StackTrace);
return false;
}
System.Threading.Thread.Sleep((11 - writeNumber) * 6000);
}
Logger logger1 = new Logger();
logger1.Log("plc点位写入10次 没有成功:");
return false;
}
private string HexDump(byte[] bytes, int Size)
{
if (bytes == null)
return null;
int bytesLength = Size;
int bytesPerLine = 16;
char[] HexChars = "0123456789ABCDEF".ToCharArray();
int firstHexColumn =
8 // 8 characters for the address
+ 3; // 3 spaces
int firstCharColumn = firstHexColumn
+ bytesPerLine * 3 // - 2 digit for the hexadecimal value and 1 space
+ (bytesPerLine - 1) / 8 // - 1 extra space every 8 characters from the 9th
+ 2; // 2 spaces
int lineLength = firstCharColumn
+ bytesPerLine // - characters to show the ascii value
+ Environment.NewLine.Length; // Carriage return and line feed (should normally be 2)
char[] line = (new String(' ', lineLength - 2) + Environment.NewLine).ToCharArray();
int expectedLines = (bytesLength + bytesPerLine - 1) / bytesPerLine;
StringBuilder result = new StringBuilder(expectedLines * lineLength);
for (int i = 0; i < bytesLength; i += bytesPerLine)
{
line[0] = HexChars[(i >> 28) & 0xF];
line[1] = HexChars[(i >> 24) & 0xF];
line[2] = HexChars[(i >> 20) & 0xF];
line[3] = HexChars[(i >> 16) & 0xF];
line[4] = HexChars[(i >> 12) & 0xF];
line[5] = HexChars[(i >> 8) & 0xF];
line[6] = HexChars[(i >> 4) & 0xF];
line[7] = HexChars[(i >> 0) & 0xF];
int hexColumn = firstHexColumn;
int charColumn = firstCharColumn;
for (int j = 0; j < bytesPerLine; j++)
{
if (j > 0 && (j & 7) == 0) hexColumn++;
if (i + j >= bytesLength)
{
line[hexColumn] = ' ';
line[hexColumn + 1] = ' ';
line[charColumn] = ' ';
}
else
{
byte b = bytes[i + j];
line[hexColumn] = HexChars[(b >> 4) & 0xF];
line[hexColumn + 1] = HexChars[b & 0xF];
line[charColumn] = (b < 32 ? '·' : (char)b);
}
hexColumn += 3;
charColumn++;
}
result.Append(line);
}
return result.ToString();
}
}
}

@ -0,0 +1,29 @@
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Text;
using System.Threading.Tasks;
namespace CommonFunc.Tools
{
public class RestHelper
{
private readonly HttpClient _httpClient;
public RestHelper()
{
_httpClient = new HttpClient();
}
public async Task<string> PostAsync(string url, string jsonContent)
{
var httpContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");
var response = await _httpClient.PostAsync(url, httpContent);
var responseContent = await response.Content.ReadAsStringAsync();
return responseContent;
}
}
}

@ -0,0 +1,406 @@
using Newtonsoft.Json;
using QRCoder;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media.Imaging;
namespace CommonFunc.Tools
{
/// <summary>
/// 通用方法
/// </summary>
public static class Utils
{
public static SqlServerDBHelper cloudDBHelper = new SqlServerDBHelper(SqlDataObject.GetCloudSqlConnectionString);
public static SqlServerDBHelper clientDBHelper = new SqlServerDBHelper(SqlDataObject.GetMESClientSqlConnectionString);
public static SqlServerDBHelper netClientDBHelper = new SqlServerDBHelper(SqlDataObject.GetMESNetClientSqlConnectionString);
/// <summary>
/// 根据日期查询周天
/// </summary>
/// <param name="day"></param>
/// <returns></returns>
public static string GetWeek(DateTime day)
{
switch ((int)day.DayOfWeek)
{
case 1: return "周一";
case 2: return "周二";
case 3: return "周三";
case 4: return "周四";
case 5: return "周五";
case 6: return "周六";
default: return "周日";
}
}
/// <summary>
/// MD5加密
/// </summary>
/// <param name="val"></param>
/// <param name="upper"></param>
/// <returns></returns>
public static string MD5Encrypt(string val, bool upper = true)
{
System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(val);
bs = md5.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2"));
}
return upper ? s.ToString().ToUpper() : s.ToString();
}
/// <summary>
///生成制定位数的随机码(数字)
/// </summary>
/// <param name="length"></param>
/// <returns></returns>
public static string GenerateRandomCode(int length)
{
var result = new StringBuilder();
for (var i = 0; i < length; i++)
{
var r = new Random(Guid.NewGuid().GetHashCode());
result.Append(r.Next(0, 10));
}
return result.ToString();
}
#region Json序列化与反序列化
/// <summary>
/// 序列化为JSON格式
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="val"></param>
/// <returns></returns>
public static string EnJson<T>(this T val)
{
if (val.IsEmpty())
return "";
if (val.GetType().ToString().Contains("DataTable"))
{
return JsonConvert.SerializeObject(DataTableToDictionary(val as DataTable));
}
if (val.GetType().ToString().Contains("DataRow"))
{
return JsonConvert.SerializeObject(DataRowToDictionary(val as DataRow));
}
var nv = val as NameValueCollection;
if (nv != null)
return JsonConvert.SerializeObject(NvcToDic(nv));
return JsonConvert.SerializeObject(val);
}
/// <summary>
/// 反序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public static T DeJson<T>(this string value)
{
if (!string.IsNullOrEmpty(value))
{
return JsonConvert.DeserializeObject<T>(value);
}
return default(T);
}
private static List<Dictionary<string, object>> DataTableToDictionary(DataTable table)
{
List<Dictionary<string, object>> items = new List<Dictionary<string, object>>();
foreach (DataRow dr in table.Rows)
{
Dictionary<string, object> item = new Dictionary<string, object>();
foreach (DataColumn col in table.Columns)
{
item.Add(col.ColumnName, dr[col.ColumnName]);
}
items.Add(item);
}
return items;
}
private static Dictionary<string, object> DataRowToDictionary(DataRow dr)
{
List<Dictionary<string, object>> items = new List<Dictionary<string, object>>();
Dictionary<string, object> item = new Dictionary<string, object>();
foreach (DataColumn col in dr.Table.Columns)
{
item.Add(col.ColumnName, dr[col.ColumnName]);
}
return item;
}
private static Dictionary<string, string> NvcToDic(NameValueCollection nvc)
{
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach (string key in nvc.Keys)
{
if (!key.IsEmpty())
dic.Add(key, nvc[key]);
}
return dic;
}
#endregion
/// <summary>
/// 值转decimal
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="o"></param>
/// <returns></returns>
public static decimal ToDecimal<T>(this T o)
{
try
{
return decimal.Parse(o.ToString());
}
catch
{
return 0;
}
}
/// <summary>
/// 判断是否为空
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static bool HasValue<T>(this T obj)
{
return obj != null && !string.IsNullOrEmpty(obj.ToString());
}
public static bool IsEmpty<T>(this T val)
{
return val == null || String.IsNullOrEmpty(val.ToString().Trim());
}
/// <summary>
/// string类型转 int
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static int ToInt<T>(this T o)
{
try
{
string a = o == null ? "0" : o.ToString();
return int.Parse(a);
}
catch
{
return 0;
}
}
public static string GetAppSetting(string key)
{
string value = "";
try
{
if (!ConfigurationManager.AppSettings.AllKeys.Contains(key))
{
return "";
}
value = ConfigurationManager.AppSettings[key];
}
catch { }
return value;
}
public static void SetAppSetting(string key, string value)
{
if (!ConfigurationManager.AppSettings.AllKeys.Contains(key))
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings.Add(key, value);
config.Save();
//return;
}
else
{
Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
cfa.AppSettings.Settings[key].Value = value;
cfa.Save();
}
}
/// <summary>
/// DataTable转成List
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="dt"></param>
/// <returns></returns>
public static List<T> ToDataList<T>(this DataTable dt)
{
var list = new List<T>();
var plist = new List<PropertyInfo>(typeof(T).GetProperties());
foreach (DataRow item in dt.Rows)
{
T s = Activator.CreateInstance<T>();
for (int i = 0; i < dt.Columns.Count; i++)
{
PropertyInfo info = plist.Find(p => p.Name == dt.Columns[i].ColumnName);
if (info != null)
{
try
{
if (!Convert.IsDBNull(item[i]))
{
object v = null;
if (info.PropertyType.ToString().Contains("System.Nullable"))
{
v = Convert.ChangeType(item[i], Nullable.GetUnderlyingType(info.PropertyType));
}
else
{
v = Convert.ChangeType(item[i], info.PropertyType);
}
info.SetValue(s, v, null);
}
}
catch (Exception ex)
{
LogHelper.instance.log.Error("字段[" + info.Name + "]转换出错," + ex.Message);
}
}
}
list.Add(s);
}
return list;
}
/// <summary>
/// Convert a List{T} to a DataTable.
/// </summary>
public static DataTable ListToTable<T>(List<T> items)
{
var tb = new DataTable(typeof(T).Name);
PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo prop in props)
{
Type t = GetCoreType(prop.PropertyType);
tb.Columns.Add(prop.Name, t);
}
foreach (T item in items)
{
var values = new object[props.Length];
for (int i = 0; i < props.Length; i++)
{
values[i] = props[i].GetValue(item, null);
}
tb.Rows.Add(values);
}
return tb;
}
/// <summary>
/// Determine of specified type is nullable
/// </summary>
public static bool IsNullable(Type t)
{
return !t.IsValueType || (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Nullable<>));
}
/// <summary>
/// Return underlying type if type is Nullable otherwise return the type
/// </summary>
public static Type GetCoreType(Type t)
{
if (t != null && IsNullable(t))
{
if (!t.IsValueType)
{
return t;
}
else
{
return Nullable.GetUnderlyingType(t);
}
}
else
{
return t;
}
}
/// <summary>
/// 创建二维码
/// </summary>
/// <param name="info">二维码信息</param>
/// <param name="pixelsPerModule">大小 默认20</param>
/// <returns></returns>
public static BitmapImage CreateQR(string info, int pixelsPerModule = 20)
{
System.Drawing.Color qrColor = System.Drawing.Color.Green;
System.Drawing.Color qrBackgroundColor = System.Drawing.Color.White;
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(info, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(pixelsPerModule, qrColor, qrBackgroundColor, true);
return ConvertBitmap(qrCodeImage);
//IntPtr hBitmap = qrCodeImage.GetHbitmap();
//ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
// hBitmap,
// IntPtr.Zero,
// Int32Rect.Empty,
// BitmapSizeOptions.FromEmptyOptions());
//return wpfBitmap;
}
public static BitmapImage ConvertBitmap(Bitmap bitmap)
{
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
BitmapImage image = new BitmapImage();
image.BeginInit();
ms.Seek(0, SeekOrigin.Begin);
image.StreamSource = ms;
image.EndInit();
return image;
}
public static string EncodePassword(string plainPassword)
{
string salt = BCrypt.Net.BCrypt.GenerateSalt(10, 'a');
string hashedPassword = BCrypt.Net.BCrypt.HashPassword(plainPassword, salt);
return hashedPassword;
}
public static bool VerifyPassword(string plainPassword, string hashedPassword)
{
bool passwordMatches = BCrypt.Net.BCrypt.Verify(plainPassword, hashedPassword);
return passwordMatches;
}
}
}

@ -1,9 +0,0 @@
<?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>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,9 +0,0 @@
<?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>

@ -142,3 +142,62 @@ F:\KHD\230620\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.dll
F:\KHD\230620\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.pdb
F:\KHD\230620\shangjian\CommonFunc\bin\x86\Debug\System.Data.SqlClient.dll
F:\KHD\230620\shangjian\CommonFunc\bin\x86\Debug\System.Data.SqlClient.xml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\CommonFunc.dll.config
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\CommonFunc.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\CommonFunc.pdb
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\Google.Protobuf.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\MySql.Data.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\NPOI.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\NPOI.OOXML.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\NPOI.OpenXml4Net.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\NPOI.OpenXmlFormats.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\System.Data.SqlClient.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\XGL.Models.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\XGL.Models.pdb
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\XGL.Models.dll.config
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\Google.Protobuf.xml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\System.Data.SqlClient.xml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.csproj.AssemblyReference.cache
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.csproj.CoreCompileInputs.cache
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.csproj.CopyComplete
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.dll
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.pdb
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\Config\log4net.config
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\CommonFunc.dll.config
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\CommonFunc.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\CommonFunc.pdb
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\BCrypt.Net-Next.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\Google.Protobuf.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\log4net.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\MySql.Data.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\Newtonsoft.Json.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\NPOI.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\NPOI.OOXML.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\NPOI.OpenXml4Net.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\NPOI.OpenXmlFormats.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\QRCoder.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\System.Buffers.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\System.Data.SqlClient.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\System.Memory.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\System.Numerics.Vectors.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\System.Runtime.CompilerServices.Unsafe.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\XGL.Models.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\XGL.Models.pdb
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\XGL.Models.dll.config
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\BCrypt.Net-Next.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\Google.Protobuf.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\System.Buffers.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\System.Data.SqlClient.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\System.Memory.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\System.Numerics.Vectors.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\bin\x86\Debug\System.Runtime.CompilerServices.Unsafe.xml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.csproj.AssemblyReference.cache
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\HMessageBox.g.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc_MarkupCompile.cache
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc_MarkupCompile.lref
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\HMessageBox.baml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.g.resources
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.csproj.CoreCompileInputs.cache
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.csproj.CopyComplete
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.dll
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\CommonFunc.pdb

@ -0,0 +1,20 @@
CommonFunc
library
C#
.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\
CommonFunc
none
false
DEBUG;TRACE
12023204370
231115367844
44-550732465
HMessageBox.xaml;
True

@ -0,0 +1,20 @@
CommonFunc
library
C#
.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\obj\x86\Debug\
CommonFunc
none
false
DEBUG;TRACE
12023204370
11419817861
2582182177
44-550732465
HMessageBox.xaml;
False

@ -0,0 +1,4 @@

FD:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\CommonFunc\HMessageBox.xaml;;

@ -0,0 +1,176 @@
#pragma checksum "..\..\..\HMessageBox.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "9E7620BB079A502B1C3ED525D834319B9FC6090C5498CAFE30DA88CDE63BF283"
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
using CommonFunc;
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;
namespace CommonFunc {
/// <summary>
/// HMessageBox
/// </summary>
public partial class HMessageBox : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 16 "..\..\..\HMessageBox.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image MsgImg;
#line default
#line hidden
#line 17 "..\..\..\HMessageBox.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock TxtMsg;
#line default
#line hidden
#line 24 "..\..\..\HMessageBox.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button OkButton;
#line default
#line hidden
#line 26 "..\..\..\HMessageBox.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button YesButton;
#line default
#line hidden
#line 28 "..\..\..\HMessageBox.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button NoButton;
#line default
#line hidden
#line 30 "..\..\..\HMessageBox.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button CancelButton;
#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) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/CommonFunc;component/hmessagebox.xaml", System.UriKind.Relative);
#line 1 "..\..\..\HMessageBox.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#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) {
switch (connectionId)
{
case 1:
#line 8 "..\..\..\HMessageBox.xaml"
((CommonFunc.HMessageBox)(target)).Closed += new System.EventHandler(this.Window_Closed);
#line default
#line hidden
return;
case 2:
this.MsgImg = ((System.Windows.Controls.Image)(target));
return;
case 3:
this.TxtMsg = ((System.Windows.Controls.TextBlock)(target));
return;
case 4:
this.OkButton = ((System.Windows.Controls.Button)(target));
#line 24 "..\..\..\HMessageBox.xaml"
this.OkButton.Click += new System.Windows.RoutedEventHandler(this.OkButton_Click);
#line default
#line hidden
return;
case 5:
this.YesButton = ((System.Windows.Controls.Button)(target));
#line 26 "..\..\..\HMessageBox.xaml"
this.YesButton.Click += new System.Windows.RoutedEventHandler(this.YesButton_Click);
#line default
#line hidden
return;
case 6:
this.NoButton = ((System.Windows.Controls.Button)(target));
#line 28 "..\..\..\HMessageBox.xaml"
this.NoButton.Click += new System.Windows.RoutedEventHandler(this.NoButton_Click);
#line default
#line hidden
return;
case 7:
this.CancelButton = ((System.Windows.Controls.Button)(target));
#line 30 "..\..\..\HMessageBox.xaml"
this.CancelButton.Click += new System.Windows.RoutedEventHandler(this.CancelButton_Click);
#line default
#line hidden
return;
}
this._contentLoaded = true;
}
}
}

@ -0,0 +1,176 @@
#pragma checksum "..\..\..\HMessageBox.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "9E7620BB079A502B1C3ED525D834319B9FC6090C5498CAFE30DA88CDE63BF283"
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
using CommonFunc;
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;
namespace CommonFunc {
/// <summary>
/// HMessageBox
/// </summary>
public partial class HMessageBox : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 16 "..\..\..\HMessageBox.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image MsgImg;
#line default
#line hidden
#line 17 "..\..\..\HMessageBox.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock TxtMsg;
#line default
#line hidden
#line 24 "..\..\..\HMessageBox.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button OkButton;
#line default
#line hidden
#line 26 "..\..\..\HMessageBox.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button YesButton;
#line default
#line hidden
#line 28 "..\..\..\HMessageBox.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button NoButton;
#line default
#line hidden
#line 30 "..\..\..\HMessageBox.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button CancelButton;
#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) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/CommonFunc;component/hmessagebox.xaml", System.UriKind.Relative);
#line 1 "..\..\..\HMessageBox.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#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) {
switch (connectionId)
{
case 1:
#line 8 "..\..\..\HMessageBox.xaml"
((CommonFunc.HMessageBox)(target)).Closed += new System.EventHandler(this.Window_Closed);
#line default
#line hidden
return;
case 2:
this.MsgImg = ((System.Windows.Controls.Image)(target));
return;
case 3:
this.TxtMsg = ((System.Windows.Controls.TextBlock)(target));
return;
case 4:
this.OkButton = ((System.Windows.Controls.Button)(target));
#line 24 "..\..\..\HMessageBox.xaml"
this.OkButton.Click += new System.Windows.RoutedEventHandler(this.OkButton_Click);
#line default
#line hidden
return;
case 5:
this.YesButton = ((System.Windows.Controls.Button)(target));
#line 26 "..\..\..\HMessageBox.xaml"
this.YesButton.Click += new System.Windows.RoutedEventHandler(this.YesButton_Click);
#line default
#line hidden
return;
case 6:
this.NoButton = ((System.Windows.Controls.Button)(target));
#line 28 "..\..\..\HMessageBox.xaml"
this.NoButton.Click += new System.Windows.RoutedEventHandler(this.NoButton_Click);
#line default
#line hidden
return;
case 7:
this.CancelButton = ((System.Windows.Controls.Button)(target));
#line 30 "..\..\..\HMessageBox.xaml"
this.CancelButton.Click += new System.Windows.RoutedEventHandler(this.CancelButton_Click);
#line default
#line hidden
return;
}
this._contentLoaded = true;
}
}
}

@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="BCrypt.Net-Next" version="4.0.3" targetFramework="net48" />
<package id="MySql.Data" version="6.8.8" targetFramework="net40" requireReinstallation="true" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.Data.SqlClient" version="4.8.5" targetFramework="net48" />
<package id="System.Memory" version="4.5.4" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net48" />
</packages>

Binary file not shown.

File diff suppressed because it is too large Load Diff

@ -19,12 +19,21 @@
<Ellipse
Name="GelBackground"
Stroke="Black"
StrokeThickness="1" />
StrokeThickness="1">
</Ellipse>
<ContentPresenter
Name="GelButtonContent"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Content="{TemplateBinding Content}" />
<Grid.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF2281D1"></GradientStop>
<GradientStop Color="#FF34268A" Offset="1"></GradientStop>
<GradientStop Color="#FF33288B" Offset="0.5"></GradientStop>
</LinearGradientBrush>
</Grid.Background>
</Grid>
</ControlTemplate>
</Setter.Value>
@ -91,14 +100,17 @@
</DataGrid>
<Button
x:Name="btnStartOrders"
Grid.Row="1"
Grid.Column="1"
Width="250"
Height="250"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Content="按钮"
Style="{StaticResource RoundButton}" />
Foreground="White"
FontSize="16"
Content="开始工单"
Style="{StaticResource RoundButton}"/>
<Label
Grid.Row="2"

@ -23,7 +23,8 @@ namespace COSMO.IM.LanJu.Index
public LanJu_Prepare()
{
InitializeComponent();
}
}
}
}

@ -1 +1 @@
5839b53440bd826cf6d24a483df1603e98eb2b62
51790d22c3b0468f4e446c933001b592c3e5c2c3

@ -30,3 +30,67 @@ F:\KHD\230620\shangjian\LanJu\obj\Debug\LanJu.csproj.GenerateResource.cache
F:\KHD\230620\shangjian\LanJu\obj\Debug\LanJu.csproj.CoreCompileInputs.cache
F:\KHD\230620\shangjian\LanJu\obj\Debug\LanJu.exe
F:\KHD\230620\shangjian\LanJu\obj\Debug\LanJu.pdb
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\bin\Debug\LanJu.exe.config
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\bin\Debug\LanJu.exe
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\bin\Debug\LanJu.pdb
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.csproj.AssemblyReference.cache
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.csproj.SuggestedBindingRedirects.cache
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\MainWindow.g.cs
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Complete.g.cs
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_DeviceItems.g.cs
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Flow.g.cs
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Index.g.cs
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Material.g.cs
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Operator.g.cs
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Paused.g.cs
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Prepare.g.cs
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\App.g.cs
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\LanJu_MarkupCompile.cache
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\LanJu_MarkupCompile.lref
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\MainWindow.baml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Complete.baml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_DeviceItems.baml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Flow.baml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Index.baml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Material.baml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Operator.baml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Paused.baml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Prepare.baml
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.g.resources
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.Properties.Resources.resources
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.csproj.GenerateResource.cache
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.csproj.CoreCompileInputs.cache
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.exe
D:\WorkSpace\KHD\Project\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.pdb
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\bin\Debug\LanJu.exe.config
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\bin\Debug\LanJu.exe
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\bin\Debug\LanJu.pdb
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.csproj.AssemblyReference.cache
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.csproj.SuggestedBindingRedirects.cache
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\MainWindow.g.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Complete.g.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_DeviceItems.g.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Flow.g.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Index.g.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Material.g.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Operator.g.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Paused.g.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Prepare.g.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\App.g.cs
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\LanJu_MarkupCompile.cache
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\LanJu_MarkupCompile.lref
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\MainWindow.baml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Complete.baml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_DeviceItems.baml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Flow.baml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Index.baml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Material.baml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Operator.baml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Paused.baml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\Views\LanJu_Prepare.baml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.g.resources
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.Properties.Resources.resources
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.csproj.GenerateResource.cache
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.csproj.CoreCompileInputs.cache
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.exe
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\LanJu.pdb

@ -4,12 +4,12 @@
winexe
C#
.cs
F:\KHD\230620\shangjian\LanJu\obj\Debug\
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\obj\Debug\
LanJu
none
false
DEBUG;TRACE
F:\KHD\230620\shangjian\LanJu\App.xaml
D:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\App.xaml
9-1725419280
131720844138

@ -1,12 +1,12 @@

FF:\KHD\230620\shangjian\LanJu\MainWindow.xaml;;
FF:\KHD\230620\shangjian\LanJu\Views\LanJu_Complete.xaml;;
FF:\KHD\230620\shangjian\LanJu\Views\LanJu_DeviceItems.xaml;;
FF:\KHD\230620\shangjian\LanJu\Views\LanJu_Flow.xaml;;
FF:\KHD\230620\shangjian\LanJu\Views\LanJu_Index.xaml;;
FF:\KHD\230620\shangjian\LanJu\Views\LanJu_Material.xaml;;
FF:\KHD\230620\shangjian\LanJu\Views\LanJu_Operator.xaml;;
FF:\KHD\230620\shangjian\LanJu\Views\LanJu_Paused.xaml;;
FF:\KHD\230620\shangjian\LanJu\Views\LanJu_Prepare.xaml;;
FD:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\MainWindow.xaml;;
FD:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\Views\LanJu_Complete.xaml;;
FD:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\Views\LanJu_DeviceItems.xaml;;
FD:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\Views\LanJu_Flow.xaml;;
FD:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\Views\LanJu_Index.xaml;;
FD:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\Views\LanJu_Material.xaml;;
FD:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\Views\LanJu_Operator.xaml;;
FD:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\Views\LanJu_Paused.xaml;;
FD:\WorkSpace\KHD\Project\Lanju\Lanju-client\shangjian\LanJu\Views\LanJu_Prepare.xaml;;

@ -1,4 +1,5 @@
#pragma checksum "..\..\..\Views\LanJu_Prepare.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "4ED23CEE126987D73089B80D2B02FE50005DC73FC0F8D483F3B398CF05D824ED"
// Updated by XamlIntelliSenseFileGenerator 2023-8-21 11:37:23
#pragma checksum "..\..\..\Views\LanJu_Prepare.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "4ED23CEE126987D73089B80D2B02FE50005DC73FC0F8D483F3B398CF05D824ED"
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
@ -32,58 +33,65 @@ 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 116 "..\..\..\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.WorkOrder = ((System.Windows.Controls.DataGrid)(target));
return;
}
this._contentLoaded = true;
}
internal System.Windows.Controls.Button btnStartOrders;
}
}

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

Loading…
Cancel
Save