初始化

This commit is contained in:
2025-12-11 11:44:54 +08:00
commit ccd2c36afa
719 changed files with 676439 additions and 0 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,36 @@
{
"Version": 1,
"WorkspaceRootPath": "E:\\Sync\\DevModeFirmwareInfo\\DevModeFirmwareInfo\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{9E2AC81D-D711-4219-95A1-9C4FA3FCB393}|DevModeFirmwareInfo.vbproj|e:\\sync\\devmodefirmwareinfo\\devmodefirmwareinfo\\form1.vb||{2C015C70-C72C-11D0-88C3-00A0C9110049}|Form",
"RelativeMoniker": "D:0:0:{9E2AC81D-D711-4219-95A1-9C4FA3FCB393}|DevModeFirmwareInfo.vbproj|solutionrelative:form1.vb||{2C015C70-C72C-11D0-88C3-00A0C9110049}|Form"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Form1.vb [\u8BBE\u8BA1]",
"DocumentMoniker": "E:\\Sync\\DevModeFirmwareInfo\\DevModeFirmwareInfo\\Form1.vb",
"RelativeDocumentMoniker": "Form1.vb",
"ToolTip": "E:\\Sync\\DevModeFirmwareInfo\\DevModeFirmwareInfo\\Form1.vb [\u8BBE\u8BA1]",
"RelativeToolTip": "Form1.vb [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003361|",
"WhenOpened": "2025-10-08T00:57:04.966Z",
"EditorCaption": " [\u8BBE\u8BA1]"
}
]
}
]
}
]
}

View File

@@ -0,0 +1,36 @@
{
"Version": 1,
"WorkspaceRootPath": "E:\\Sync\\DevModeFirmwareInfo\\DevModeFirmwareInfo\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{9E2AC81D-D711-4219-95A1-9C4FA3FCB393}|DevModeFirmwareInfo.vbproj|e:\\sync\\devmodefirmwareinfo\\devmodefirmwareinfo\\form1.vb||{2C015C70-C72C-11D0-88C3-00A0C9110049}|Form",
"RelativeMoniker": "D:0:0:{9E2AC81D-D711-4219-95A1-9C4FA3FCB393}|DevModeFirmwareInfo.vbproj|solutionrelative:form1.vb||{2C015C70-C72C-11D0-88C3-00A0C9110049}|Form"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Form1.vb [\u8BBE\u8BA1]",
"DocumentMoniker": "E:\\Sync\\DevModeFirmwareInfo\\DevModeFirmwareInfo\\Form1.vb",
"RelativeDocumentMoniker": "Form1.vb",
"ToolTip": "E:\\Sync\\DevModeFirmwareInfo\\DevModeFirmwareInfo\\Form1.vb [\u8BBE\u8BA1]",
"RelativeToolTip": "Form1.vb [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003361|",
"WhenOpened": "2025-10-08T00:57:04.966Z",
"EditorCaption": " [\u8BBE\u8BA1]"
}
]
}
]
}
]
}

30
App.config Normal file
View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.5" newVersion="8.0.0.5" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -0,0 +1,15 @@

Namespace Database.Base
''' <summary>
''' Contains the schema of a single DB column.
''' </summary>
Public Class ColumnSchema
Public ColumnName As String
Public ColumnType As String
Public Length As Integer
Public IsNullable As Boolean
Public DefaultValue As String
Public IsIdentity As Boolean
Public IsCaseSensitivity As Boolean? = Nothing
End Class
End NameSpace

View File

@@ -0,0 +1,297 @@
Imports System.Text
Namespace Database.Base
Public MustInherit Class CommandHelpers
Public Overridable Function Search(param As SearchParams) As String
Dim searchString As New StringBuilder
'基础查询
searchString.Append("Select")
searchString.Append(" ")
searchString.Append($"{String.Join(",", param.SearchColNames)}")
searchString.Append(" ")
searchString.Append("From")
searchString.Append(" ")
searchString.Append($"`{param.TableName}`")
'筛选条件
If param.SearchCondition IsNot Nothing Then
If param.SearchCondition.Count > 0 Then
searchString.Append(" ")
searchString.Append("Where")
For i As Integer = 0 To param.SearchCondition.Count - 1
If i > 0 Then
searchString.Append(" ")
searchString.Append(param.SearchCondition(i).LogicPrevious.ToString())
End If
searchString.Append(param.SearchCondition(i).ToString())
Next
End If
End If
'排序与排序方式
If param.OrderType <> SearchParams.OrderTypeEnum.None Then
searchString.Append($" Order By {param.OrderColName} {param.OrderType}")
End If
'返回结果行数
If param.Limit > -1 Then
searchString.Append($" Limit {param.Limit}")
End If
searchString.Append(";")
Return searchString.ToString()
End Function
Public Overridable Function SearchAll(tableName As String) As String
Return $"Select * FROM `{tableName}`;"
End Function
Public Overridable Function SearchAll(tableName As String, condition As String) As String
Return $"Select * FROM `{tableName}` WHERE {condition};"
End Function
Public Overridable Function Search(columnName As List(Of String), tableName As String) As String
Dim colNameString As New StringBuilder
For i As Integer = 0 To columnName.Count - 1
If i = 0 Then
colNameString.Append($"`{columnName(i)}`")
Else
colNameString.Append($",`{columnName(i)}`")
End If
Next
Return $"Select {colNameString} FROM `{tableName}`;"
End Function
Public Overridable Function Search(columnName As String, tableName As String) As String
Return $"Select {columnName} FROM `{tableName}`;"
End Function
Public Overridable Function Search(columnName As String, tableName As String, condition As String) As String
Return $"Select {columnName} FROM `{tableName}` WHERE {condition};"
End Function
Public Overridable Function Search(columnName As String, tableName As String, condition As String, limit As Integer) As String
Return $"Select {columnName} FROM `{tableName}` WHERE {condition} Limit {limit};"
End Function
Public Overridable Function SearchDistinct(columnName As String, tableName As String) As String
Return $"Select Distinct {columnName} FROM `{tableName}`;"
End Function
Public Overridable Function SearchDistinct(columnName As String, tableName As String, condition As String) As String
Return $"Select Distinct {columnName} FROM `{tableName}` WHERE {condition};"
End Function
Public Overridable Function SearchDescOrder(columnName As String, tableName As String, orderCol As String) As String
Return $"Select {columnName} FROM `{tableName}` Order By {orderCol} Desc;"
End Function
Public Overridable Function SearchDescOrder(columnName As String, tableName As String, orderCol As String, limit As Integer) As String
Return $"Select {columnName} FROM `{tableName}` Order By {orderCol} Desc Limit {limit};"
End Function
Public Overridable Function SearchDescOrder(columnName As String, ByVal tableName As String, ByVal condition As String, ByVal orderCol As String) As String
Return $"Select {columnName} FROM `{tableName}` WHERE {condition} Order By `{orderCol}` Desc;"
End Function
Public Overridable Function SearchDescOrder(columnName As String, ByVal tableName As String, ByVal condition As String, ByVal orderCol As String, limit As Integer) As String
Return $"Select {columnName} FROM `{tableName}` WHERE {condition} Order By `{orderCol}` Desc Limit {limit};"
End Function
Public Overridable Function SearchAscOrder(ByVal columnName As String, ByVal tableName As String, ByVal orderCol As String) As String
Return $"Select {columnName} FROM `{tableName}` Order By {orderCol} Asc;"
End Function
Public Overridable Function SearchAscOrder(ByVal columnName As String, ByVal tableName As String, ByVal condition As String, ByVal orderCol As String) As String
Return $"Select {columnName} FROM `{tableName}` WHERE {condition} Order By {orderCol} Asc;"
End Function
Public Overridable Function SearchNullTable(tableName As String) As String
Return $"Select * FROM `{tableName}` Where Limit 0;"
End Function
Public Overridable Function Insert(ByVal tableName As String, ByVal values As String) As String
Return $"Insert into `{tableName}` Values ( {values} );"
End Function
Public Overridable Function Insert(ByVal tableName As String, ByVal colNames As String, ByVal values As String) As String
Return $"Insert into `{tableName}` ({colNames}) Values ( {values} );"
End Function
Public Overridable Function Insert(tableName As String, dicNameValues As Dictionary(Of String, String)) As String
Dim colNames As New StringBuilder
Dim values As New StringBuilder
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
If colNames.Length = 0 Then
colNames.Append($"`{keyValuePair.Key}`")
values.Append($"'{keyValuePair.Value}'")
Else
colNames.Append($",`{keyValuePair.Key}`")
values.Append($",'{keyValuePair.Value}'")
End If
Next
Return Insert(tableName, colNames.ToString(), values.ToString())
End Function
Public Overridable Function InsertByParameters(tableName As String, dicNameValues As Dictionary(Of String, String)) As String
Dim colNames As New StringBuilder
Dim values As New StringBuilder
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
If colNames.Length = 0 Then
colNames.Append($"`{keyValuePair.Key}`")
values.Append($"{keyValuePair.Value}")
Else
colNames.Append($",`{keyValuePair.Key}`")
values.Append($",{keyValuePair.Value}")
End If
Next
Return Insert(tableName, colNames.ToString(), values.ToString())
End Function
Public Overridable Function AddCol(ByVal tableName As String, ByVal colName As String, ByVal colType As String, Optional isNull As Boolean = True) As String
Return $"Alter Table `{tableName}` Add `{colName}` {colType} {IIf(isNull, "Default Null", "Not Null")};"
End Function
Public Overridable Function AddCol(ByVal tableName As String, colParam As DatabaseData) As String
Dim sb As New StringBuilder
sb.Append($"Alter Table `{tableName}` ")
sb.Append("Add ")
sb.Append(colParam.ToAddColString())
Return sb.ToString()
End Function
Public Overridable Function AddCols(tableName As String, colList As List(Of DatabaseData)) As String
Dim sb As New StringBuilder
sb.Append($"Alter Table `{tableName}` ")
sb.Append("Add ")
sb.Append("( ")
sb.Append(colList(0).ToAddColString())
For i As Integer = 1 To colList.Count - 1
sb.Append($",{colList(i).ToAddColString()}")
Next
sb.Append(");")
Return sb.ToString()
End Function
Public Overridable Function Update(ByVal tableName As String, ByVal destStr As String, ByVal condition As String) As String
Return $"Update `{tableName}` Set {destStr} Where {condition};"
End Function
Public Overridable Function Update(ByVal tableName As String, dicNameValues As Dictionary(Of String, String), ByVal condition As String) As String
Dim destStr As New StringBuilder
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
If destStr.Length = 0 Then
destStr.Append($"`{keyValuePair.Key}` = '{keyValuePair.Value}'")
Else
destStr.Append($",`{keyValuePair.Key}` = '{keyValuePair.Value}'")
End If
Next
Return Update(tableName, destStr.ToString(), condition)
End Function
Public Overridable Function Update(ByVal tableName As String, names() As String, values() As String, condition As String) As String
Dim destStr As New StringBuilder
If names.Length <> values.Length Then
Throw New Exception("DBHelpers_Update:names.Length <> values.Length")
End If
For i As Integer = 0 To names.Length - 1
If i = 0 Then
destStr.Append($"{names(i)} = '{values(i)}'")
Else
destStr.Append($",{names(i)} = '{values(i)}'")
End If
Next
Return Update(tableName, destStr.ToString(), condition)
End Function
Public Overridable Function DeleteRows(ByVal tableName As String, ByVal condition As String) As String
Return $"Delete From `{tableName}` Where {condition};"
End Function
''' <summary>
''' 清空数据表
''' </summary>
''' <param name="tableName">数据表名</param>
''' <returns></returns>
Public Overridable Function DeleteTable(ByVal tableName As String) As String
Return $"Delete From `{tableName}`;"
End Function
Public Overridable Function DropCol(ByVal tableName As String, ByVal colName As String) As String
Return $"Alter Table `{tableName}` Drop Column `{colName}`;"
End Function
''' <summary>
''' 删除数据表
''' </summary>
''' <param name="tableName">数据表名</param>
''' <returns></returns>
Public Overridable Function DropTable(ByVal tableName As String) As String
Return $"Drop Table `{tableName}`;"
End Function
Public Overridable Function CreateTable(ByVal tableName As String, ByVal createStr As String) As String
Return $"Create Table `{tableName}` ( {createStr} );"
End Function
Public Overridable Function CreateTableWhenNotExists(tableName As String, createStr As String) As String
Return $"Create Table if not exists `{tableName}` ( {createStr} );"
End Function
Public Overridable Function CreateLikeTable(tableName As String, baseTableName As String) As String
Return $"create table `{tableName}` like `{baseTableName}`;"
End Function
Public Overridable Function CreateLikeTableNotExists(tableName As String, baseTableName As String) As String
Return $"create table if not exists `{tableName}` like `{baseTableName}`;"
End Function
''' <summary>
''' 创建表,同时复制基础表数据(不包含原表索引与主键)
''' 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="baseTableName">基础表名</param>
''' <returns></returns>
Public Overridable Function CreateCopyTable(tableName As String, baseTableName As String) As String
Return $"create table `{tableName}` as select * from `{baseTableName}`;"
End Function
''' <summary>
''' 不存在表时即创建表,同时复制基础表数据(不包含原表索引与主键)
''' 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="baseTableName">基础表名</param>
''' <returns></returns>
Public Overridable Function CreateCopyTableNotExists(tableName As String, baseTableName As String) As String
Return $"create table if not exists `{tableName}` as select * from `{baseTableName}`;"
End Function
''' <summary>
''' 复制基础表数据到新表中
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="baseTableName">基础表名</param>
''' <returns></returns>
Public Overridable Function InsertCopyTable(tableName As String, baseTableName As String) As String
Return $"insert into `{tableName}` select * from `{baseTableName}`;"
End Function
End Class
End Namespace

View File

@@ -0,0 +1,94 @@
Imports System.Text
Namespace Database.Base
Public Class DatabaseData
Enum TypeEnum
[Bit]
[Char]
[Date]
[DateTime]
[Double]
[Enum]
[Float]
[Int]
[IntUnsigned]
[Json]
[Text]
[Time]
Varchar
[Year]
End Enum
''' <summary>
''' 列名
''' </summary>
''' <returns></returns>
Public Property ColumnName() As String
''' <summary>
''' 当前值
''' </summary>
''' <returns></returns>
Public Property Value() As String
''' <summary>
''' 默认值
''' </summary>
''' <returns></returns>
Public Property DefaultValue() As String
''' <summary>
''' 数据类型
''' </summary>
''' <returns></returns>
Public Property DataType() As TypeEnum
''' <summary>
''' 数据类型长度
''' </summary>
''' <returns></returns>
Public Property DataTypeLength() As Integer
''' <summary>
''' 是否允许为空
''' </summary>
''' <returns></returns>
Public Property IsNull() As Boolean = True
''' <summary>
''' 是否自动增长
''' </summary>
''' <returns></returns>
Public Property IsAutoIncrement() As Boolean
''' <summary>
''' 是否为主键
''' </summary>
''' <returns></returns>
Public Property IsPrimaryKey() As Boolean
Public Function ToAddColString() As String
Dim sb As New StringBuilder
sb.Append($"`{ColumnName}`")
Select Case DataType
Case TypeEnum.Char, TypeEnum.Varchar
sb.Append($" {DataType}({DataTypeLength}) ")
Case TypeEnum.Int
sb.Append($" {DataType}")
If IsAutoIncrement Then sb.Append($" AUTO_INCREMENT")
Case Else
sb.Append($" {DataType}")
End Select
sb.Append(IIf(IsNull, " Default Null", " Not Null"))
If IsPrimaryKey Then
sb.Append($" PRIMARY KEY")
End If
Return sb.ToString()
End Function
End Class
End Namespace

View File

@@ -0,0 +1,12 @@
Imports System.Collections.Generic
Namespace Database.Base
''' <summary>
''' Contains the entire database schema
''' </summary>
Public Class DatabaseSchema
Public Tables As List(Of TableSchema) = New List(Of TableSchema)()
Public Views As List(Of ViewSchema) = New List(Of ViewSchema)()
End Class
End NameSpace

View File

@@ -0,0 +1,11 @@

Namespace Database.Base
Public Class ForeignKeySchema
Public TableName As String
Public ColumnName As String
Public ForeignTableName As String
Public ForeignColumnName As String
Public CascadeOnDelete As Boolean
Public IsNullable As Boolean
End Class
End NameSpace

View File

@@ -0,0 +1,16 @@
Imports System.Collections.Generic
Namespace Database.Base
Public Class IndexSchema
Public IndexName As String
Public IsUnique As Boolean
Public Columns As List(Of IndexColumn)
End Class
Public Class IndexColumn
Public ColumnName As String
Public IsAscending As Boolean
End Class
End NameSpace

View File

@@ -0,0 +1,7 @@
Namespace Database.Base
Public Class InsertParams
Public Property TableName() As String
Public Property InsertKeyValue As Dictionary(Of String, String)
End Class
End Namespace

View File

@@ -0,0 +1,71 @@
Imports System.Text
Namespace Database.Base
Public Class SearchCondition
Enum ConditionType
LessThan
GreaterThen
EqualTo
LessThanOrEqualTo
GreaterThenOrEqualTo
End Enum
Enum LogicType
[And]
[Or]
[Not]
End Enum
''' <summary>
''' 判断列名
''' </summary>
''' <returns></returns>
Public Property ColName() As String
''' <summary>
''' 判断条件
''' </summary>
''' <returns></returns>
Public Property Condition() As ConditionType = ConditionType.EqualTo
''' <summary>
''' 判断值
''' </summary>
''' <returns></returns>
Public Property ColValue() As String
''' <summary>
''' 当前条件与上一个条件的逻辑关系
''' </summary>
''' <returns></returns>
Public Property LogicPrevious() As LogicType = LogicType.And
''' <summary>
''' 将当前条件转换为字符串,不支持将条件逻辑关系同时转换
''' </summary>
''' <returns></returns>
Public Overrides Function ToString() As String
Dim stringBuilder As New StringBuilder
stringBuilder.Append(" ")
stringBuilder.Append(ColName)
Select Case Condition
Case ConditionType.EqualTo
stringBuilder.Append("=")
Case ConditionType.LessThan
stringBuilder.Append("<")
Case ConditionType.LessThanOrEqualTo
stringBuilder.Append("<=")
Case ConditionType.GreaterThen
stringBuilder.Append(">")
Case ConditionType.GreaterThenOrEqualTo
stringBuilder.Append(">=")
End Select
stringBuilder.Append($"'{ColValue}'")
Return stringBuilder.ToString()
End Function
End Class
End Namespace

View File

@@ -0,0 +1,46 @@
Namespace Database.Base
Public Class SearchParams
Enum OrderTypeEnum
None
Desc
Asc
End Enum
''' <summary>
''' 查询条件的表名
''' </summary>
''' <returns></returns>
Public Property TableName() As String
''' <summary>
''' 当IsSearchAllCols = False时,查询返回列名集合
''' </summary>
''' <returns></returns>
Public Property SearchColNames() As String()
''' <summary>
''' 查询的条件
''' </summary>
''' <returns></returns>
Public Property SearchCondition() As List(Of SearchCondition)
''' <summary>
''' 排序方式
''' </summary>
''' <returns></returns>
Public Property OrderType As OrderTypeEnum = OrderTypeEnum.None
''' <summary>
''' 但需要排序时排序列名
''' </summary>
''' <returns></returns>
Public Property OrderColName() As String
''' <summary>
''' 从返回结果提取指定行的内容
''' </summary>
''' <returns></returns>
Public Property Limit() As Integer = 0
End Class
End Namespace

View File

@@ -0,0 +1,14 @@
Imports System.Collections.Generic
Namespace Database.Base
Public Class TableSchema
Public TableName As String
Public TableSchemaName As String
Public Columns As List(Of ColumnSchema)
Public PrimaryKey As List(Of String)
Public ForeignKeys As List(Of ForeignKeySchema)
Public Indexes As List(Of IndexSchema)
End Class
End NameSpace

View File

@@ -0,0 +1,71 @@
Imports System.Collections.Generic
Imports System.Text
Namespace Database.Base
Public Module TriggerBuilder
Public Function GetForeignKeyTriggers(ByVal dt As TableSchema) As IList(Of TriggerSchema)
Dim result As IList(Of TriggerSchema) = New List(Of TriggerSchema)()
For Each fks As ForeignKeySchema In dt.ForeignKeys
result.Add(GenerateInsertTrigger(fks))
result.Add(GenerateUpdateTrigger(fks))
result.Add(GenerateDeleteTrigger(fks))
Next
Return result
End Function
Private Function MakeTriggerName(ByVal fks As ForeignKeySchema, ByVal prefix As String) As String
Return prefix & "_" & fks.TableName & "_" & fks.ColumnName & "_" & fks.ForeignTableName & "_" & fks.ForeignColumnName
End Function
Public Function GenerateInsertTrigger(ByVal fks As ForeignKeySchema) As TriggerSchema
Dim trigger As TriggerSchema = New TriggerSchema()
trigger.Name = MakeTriggerName(fks, "fki")
trigger.Type = TriggerType.Before
trigger.Event = TriggerEvent.Insert
trigger.Table = fks.TableName
Dim nullString As String = ""
If fks.IsNullable Then
nullString = " NEW." & fks.ColumnName & " IS NOT NULL AND"
End If
trigger.Body = "SELECT RAISE(ROLLBACK, 'insert on table " & fks.TableName & " violates foreign key constraint " & trigger.Name & "')" & " WHERE" & nullString & " (SELECT " & fks.ForeignColumnName & " FROM " & fks.ForeignTableName & " WHERE " & fks.ForeignColumnName & " = NEW." & fks.ColumnName & ") IS NULL; "
Return trigger
End Function
Public Function GenerateUpdateTrigger(ByVal fks As ForeignKeySchema) As TriggerSchema
Dim trigger As TriggerSchema = New TriggerSchema()
trigger.Name = MakeTriggerName(fks, "fku")
trigger.Type = TriggerType.Before
trigger.Event = TriggerEvent.Update
trigger.Table = fks.TableName
Dim triggerName As String = trigger.Name
Dim nullString As String = ""
If fks.IsNullable Then
nullString = " NEW." & fks.ColumnName & " IS NOT NULL AND"
End If
trigger.Body = "SELECT RAISE(ROLLBACK, 'update on table " & fks.TableName & " violates foreign key constraint " & triggerName & "')" & " WHERE" & nullString & " (SELECT " & fks.ForeignColumnName & " FROM " & fks.ForeignTableName & " WHERE " & fks.ForeignColumnName & " = NEW." & fks.ColumnName & ") IS NULL; "
Return trigger
End Function
Public Function GenerateDeleteTrigger(ByVal fks As ForeignKeySchema) As TriggerSchema
Dim trigger As TriggerSchema = New TriggerSchema()
trigger.Name = MakeTriggerName(fks, "fkd")
trigger.Type = TriggerType.Before
trigger.Event = TriggerEvent.Delete
trigger.Table = fks.ForeignTableName
Dim triggerName as String = trigger.Name
If Not fks.CascadeOnDelete Then
trigger.Body = "SELECT RAISE(ROLLBACK, 'delete on table " & fks.ForeignTableName & " violates foreign key constraint " & triggerName & "')" & " WHERE (SELECT " & fks.ColumnName & " FROM " & fks.TableName & " WHERE " & fks.ColumnName & " = OLD." & fks.ForeignColumnName & ") IS NOT NULL; "
Else
trigger.Body = "DELETE FROM [" & fks.TableName & "] WHERE " & fks.ColumnName & " = OLD." & fks.ForeignColumnName & "; "
End If
Return trigger
End Function
End Module
End NameSpace

View File

@@ -0,0 +1,20 @@
Namespace Database.Base
Public Enum TriggerEvent
Delete
Update
Insert
End Enum
Public Enum TriggerType
After
Before
End Enum
Public Class TriggerSchema
Public Name As String
Public [Event] As TriggerEvent
Public Type As TriggerType
Public Body As String
Public Table As String
End Class
End Namespace

View File

@@ -0,0 +1,17 @@

Namespace Database.Base
''' <summary>
''' Describes a single view schema
''' </summary>
Public Class ViewSchema
''' <summary>
''' Contains the view name
''' </summary>
Public ViewName As String
''' <summary>
''' Contains the view SQL statement
''' </summary>
Public ViewSql As String
End Class
End NameSpace

756
Database/DbCmdHelper.vb Normal file
View File

@@ -0,0 +1,756 @@
Imports System.Text
''' <summary>
''' 数据库语句助手
''' 时间2020-12-21
''' 作者ML
''' 版本1.0
'''
''' 注意:添加一条数据库帮助语句时,需要考虑Mysql/Sqlite/Mssql等数据库是否支持命令,不支持则需要在对应帮助类中重写该帮助语句
''' 注意Sqlite数据库与大多数据库不相同,DB开头数据库语句大多不适用
'''
''' </summary>
Public MustInherit Class DbCmdHelper
Protected FiledSuffix As Char
Protected FiledPrefix As Char
Public Shared Function CreateCmdHelper(type As DbExecutor.DbTypeEnum) As DbCmdHelper
Select Case type
Case DbExecutor.DbTypeEnum.Mysql
Return New MysqlCmdHelper()
Case DbExecutor.DbTypeEnum.Mssql
Return New MssqlCmdHelper()
Case DbExecutor.DbTypeEnum.Sqlite
Return New SqliteCmdHelper()
Case Else
Throw New Exception($"CreateCmdHelper :Unknown Type {type}")
End Select
End Function
#Region "访问单数据库连接"
''' <summary>
''' 查询指定数据表符合条件的所有数据
''' </summary>
''' <param name="tableName">指定表名</param>
''' <param name="condition">查询条件,</param>
''' <returns></returns>
Public Overridable Function SearchAll(tableName As String, Optional condition As String = "") As String
If String.IsNullOrWhiteSpace(condition) Then
Return $"Select * FROM {FiledSuffix}{tableName}{FiledPrefix};"
Else
Return $"Select * FROM {FiledSuffix}{tableName}{FiledPrefix} WHERE {condition};"
End If
End Function
''' <summary>
''' 查询表符合条件的所有指定列的数据
''' </summary>
''' <param name="columnName">列名集合,需要返回多列时用','符号分隔列名</param>
''' <param name="tableName">表名</param>
''' <param name="condition">条件</param>
''' <returns></returns>
Public Overridable Function Search(columnName As String, tableName As String, Optional condition As String = "") As String
If String.IsNullOrWhiteSpace(condition) Then
Return $"Select {columnName} FROM {FiledSuffix}{tableName}{FiledPrefix};"
Else
Return $"Select {columnName} FROM {FiledSuffix}{tableName}{FiledPrefix} WHERE {condition};"
End If
End Function
''' <summary>
''' 查询表符合条件的所有指定列的数据
''' </summary>
''' <param name="columnName">表名</param>
''' <param name="tableName">条件</param>
''' <returns></returns>
Public Overridable Function Search(columnName As List(Of String), tableName As String, Optional condition As String = "") As String
Dim colNameString As New StringBuilder
For i As Integer = 0 To columnName.Count - 1
If i = 0 Then
colNameString.Append($"{FiledSuffix}{columnName(i)}{FiledPrefix}")
Else
colNameString.Append($",{FiledSuffix}{columnName(i)}{FiledPrefix}")
End If
Next
If String.IsNullOrWhiteSpace(condition) Then
Return $"Select {colNameString} FROM {FiledSuffix}{tableName}{FiledPrefix};"
Else
Return $"Select {colNameString} FROM {FiledSuffix}{tableName}{FiledPrefix} Where {condition};"
End If
End Function
Public Overridable Function SearchOrder(columnName As List(Of String), tableName As String, Optional orderString As String = "") As String
Dim colNameString As New StringBuilder
For i As Integer = 0 To columnName.Count - 1
If i = 0 Then
colNameString.Append($"{FiledSuffix}{columnName(i)}{FiledPrefix}")
Else
colNameString.Append($",{FiledSuffix}{columnName(i)}{FiledPrefix}")
End If
Next
If String.IsNullOrWhiteSpace(orderString) Then
Return $"Select {colNameString} FROM {FiledSuffix}{tableName}{FiledPrefix};"
Else
Return $"Select {colNameString} FROM {FiledSuffix}{tableName}{FiledPrefix} {orderString};"
End If
End Function
''' <summary>
''' 查询指定表包含的内容行数
''' </summary>
''' <param name="tableName">数据表名</param>
''' <param name="condition">查询条件</param>
''' <returns></returns>
Public Overridable Function SearchCount(tableName As String, Optional condition As String = "") As String
Return Search("count(*)", tableName, condition)
End Function
''' <summary>
''' 查询指定数据表的信息
''' </summary>
''' <param name="tableName">表名</param>
''' <returns></returns>
Public Overridable Function SearchTableInfo(tableName As String) As String
Return $"Select * from information_schema.tables where table_name = '{tableName}';"
End Function
''' <summary>
''' 查询指定数据表是否存在的信息,返回查询当前表在数据库中存在的数量
''' </summary>
''' <param name="tableName">表名</param>
''' <returns></returns>
Public Overridable Function SearchTableExists(tableName As String) As String
Return $"Select count(*) from information_schema.tables where table_name = '{tableName}';"
End Function
''' <summary>
''' 数据表插入一行数据
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="colNames">列名字符串</param>
''' <param name="values">列值字符串</param>
''' <returns></returns>
Public Overridable Function Insert(tableName As String, colNames As String, values As String) As String
'将返回输出到C盘 log.txt中
'判断文件是否存在,如果不存在则创建
Return $"Insert into {FiledSuffix}{tableName}{FiledPrefix} ({colNames}) Values ( {values} );"
End Function
''' <summary>
''' 数据表插入一行数据
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="dicNameValues">列名与列值键值对</param>
''' <returns></returns>
Public Overridable Function Insert(tableName As String, dicNameValues As Dictionary(Of String, String)) As String
Dim colNames As New StringBuilder
Dim values As New StringBuilder
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
If colNames.Length = 0 Then
colNames.Append($"{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
values.Append($"'{keyValuePair.Value}'")
Else
colNames.Append($",{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
values.Append($",'{keyValuePair.Value}'")
End If
Next
Return Insert(tableName, colNames.ToString(), values.ToString())
End Function
Public Overridable Function Insert2(tableName As String, dicNameValues As Dictionary(Of String, Object )) As String
Dim colNames As New StringBuilder
Dim values As New StringBuilder
For Each keyValuePair As KeyValuePair(Of String, Object) In dicNameValues
If colNames.Length = 0 Then
colNames.Append($"{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
values.Append($"'{keyValuePair.Value}'")
Else
colNames.Append($",{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
values.Append($",'{keyValuePair.Value}'")
End If
Next
Return Insert(tableName, colNames.ToString(), values.ToString())
End Function
''' <summary>
''' 数据表插入一行,通过命令参数方式执行时使用
''' </summary>
''' <param name="tableName"></param>
''' <param name="dicNameValues"></param>
''' <returns></returns>
Public Overridable Function InsertParam(tableName As String, dicNameValues As Dictionary(Of String, String)) As String
Dim colNames As New StringBuilder
Dim values As New StringBuilder
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
If colNames.Length = 0 Then
colNames.Append($"{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
values.Append($"{keyValuePair.Value}")
Else
colNames.Append($",{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
values.Append($",{keyValuePair.Value}")
End If
Next
Return Insert(tableName, colNames.ToString(), values.ToString())
End Function
''' <summary>
''' 数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName}
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="colNames">字段列表</param>
''' <returns></returns>
Public Overridable Function InsertParam(tableName As String, colNames As List(Of String)) As String
Dim colNameString As New StringBuilder
Dim values As New StringBuilder
For Each colName As String In colNames
If colNameString.Length = 0 Then
colNameString.Append($"{FiledSuffix}{colName}{FiledPrefix}")
values.Append($"@{colName}")
Else
colNameString.Append($",{FiledSuffix}{colName}{FiledPrefix}")
values.Append($",@{colName}")
End If
Next
Return Insert(tableName, colNameString.ToString(), values.ToString())
End Function
''' <summary>
''' 更新指定表数据
''' </summary>
''' <param name="tableName">指定表名</param>
''' <param name="destStr">更新字符串</param>
''' <param name="condition"></param>
''' <returns></returns>
Public Overridable Function Update(tableName As String, destStr As String, condition As String) As String
Return $"Update {FiledSuffix}{tableName}{FiledPrefix} Set {destStr} Where {condition};"
End Function
''' <summary>
''' 更新指定表数据
''' </summary>
''' <param name="tableName">指定表名</param>
''' <param name="dicNameValues">更新列名与列值键值对</param>
''' <param name="condition">更新列索引条件</param>
''' <returns></returns>
Public Overridable Function Update(tableName As String, dicNameValues As Dictionary(Of String, String), condition As String) As String
Dim destStr As New StringBuilder
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
If destStr.Length = 0 Then
destStr.Append($"{FiledSuffix}{keyValuePair.Key}{FiledPrefix} = '{keyValuePair.Value}'")
Else
destStr.Append($",{FiledSuffix}{keyValuePair.Key}{FiledPrefix} = '{keyValuePair.Value}'")
End If
Next
Return Update(tableName, destStr.ToString(), condition)
End Function
''' <summary>
''' 更新指定数据库中指定表数据,参数名由@{ColName}
''' </summary>
''' <param name="tableName">指定表名</param>
''' <param name="colNames">更新列名的集合</param>
''' <param name="condition">更新列索引条件</param>
''' <returns></returns>
Public Overridable Function UpdateParam(tableName As String, colNames As List(Of String), condition As String) As String
Dim destStr As New StringBuilder
For Each colName As String In colNames
If destStr.Length = 0 Then
destStr.Append($"{FiledSuffix}{colName}{FiledPrefix} = @{colName}")
Else
destStr.Append($",{FiledSuffix}{colName}{FiledPrefix} = @{colName}")
End If
Next
Return Update(tableName, destStr.ToString(), condition)
End Function
''' <summary>
''' 指定数据表增加一列数据
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="colName">列名</param>
''' <param name="colType">列类型</param>
''' <param name="isNull">是否允许为空</param>
''' <returns></returns>
Public Overridable Function AddCol(tableName As String, colName As String, colType As String, Optional isNull As Boolean = True) As String
Return $"Alter Table {FiledSuffix}{tableName}{FiledPrefix} Add {FiledSuffix}{colName}{FiledPrefix} {colType} {IIf(isNull, "Default Null", "Not Null")};"
End Function
''' <summary>
''' 数据表删除一列数据
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="colName">需要删除的列名,仅一列</param>
''' <returns></returns>
Public Overridable Function DropCol(tableName As String, colName As String) As String
Return $"Alter Table {FiledSuffix}{tableName}{FiledPrefix} Drop Column {FiledSuffix}{colName}{FiledPrefix};"
End Function
''' <summary>
''' 删除指定表多行数据
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="condition">条件</param>
''' <returns></returns>
Public Overridable Function DeleteRows(tableName As String, condition As String) As String
Return $"Delete From {FiledSuffix}{tableName}{FiledPrefix} Where {condition};"
End Function
''' <summary>
''' 创建数据表
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="createStr">创建表的列信息字符串</param>
''' <returns></returns>
Public Overridable Function CreateTable(tableName As String, createStr As String) As String
Return $"Create Table {FiledSuffix}{tableName}{FiledPrefix} ( {createStr} );"
End Function
''' <summary>
''' 创建数据表,如果存在则不创建
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="createStr">创建表的列信息字符串</param>
''' <returns></returns>
Public Overridable Function CreateTableWhenNotExists(tableName As String, createStr As String) As String
Return $"Create Table if not exists {FiledSuffix}{tableName}{FiledPrefix} ( {createStr} );"
End Function
''' <summary>
''' 清空数据表,表依旧存在
''' </summary>
''' <param name="tableName">数据表名</param>
''' <returns></returns>
Public Overridable Function DeleteTable(tableName As String) As String
Return $"Delete From {FiledSuffix}{tableName}{FiledPrefix};"
End Function
''' <summary>
''' 删除数据表
''' </summary>
''' <param name="tableName">数据表名</param>
''' <returns></returns>
Public Overridable Function DropTable(tableName As String) As String
Return $"Drop Table {FiledSuffix}{tableName}{FiledPrefix};"
End Function
''' <summary>
''' 删除数据表
''' </summary>
''' <param name="tableName">数据表名</param>
''' <returns></returns>
Public Overridable Function DropTableWhenExists(tableName As String) As String
Return $"Drop Table If Exists {FiledSuffix}{tableName}{FiledPrefix};"
End Function
#End Region
#Region "访问多数据库连接"
''' <summary>
''' 查询指定数据库中指定数据表符合条件的所有指定列的数据
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="ColsName">列名集合,需要返回多列时用','符号分隔列名</param>
''' <param name="tableName">表名</param>
''' <param name="condition">条件</param>
''' <returns></returns>
Public Overridable Function DbSearch(dbName As String, colsName As String, tableName As String, Optional condition As String = "") As String
Dim cmdText As New StringBuilder
cmdText.Append($"Select {colsName} From ")
If String.IsNullOrEmpty(dbName) = False Then
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
End If
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
If String.IsNullOrWhiteSpace(condition) = False Then
cmdText.Append($" WHERE {condition}")
End If
cmdText.Append($";")
Return cmdText.ToString()
End Function
''' <summary>
''' 查询指定数据库中指定数据表符合条件的所有指定列的去重数据
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="ColsName">列名集合,需要返回多列时用','符号分隔列名</param>
''' <param name="tableName">表名</param>
''' <param name="condition">条件</param>
''' <returns></returns>
Public Overridable Function DbDistinctSearch(dbName As String, colsName As String, tableName As String, Optional condition As String = "") As String
Dim cmdText As New StringBuilder
cmdText.Append($"Select Distinct {colsName} From ")
If String.IsNullOrEmpty(dbName) = False Then
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
End If
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
If String.IsNullOrWhiteSpace(condition) = False Then
cmdText.Append($" WHERE {condition}")
End If
cmdText.Append($";")
Return cmdText.ToString()
End Function
''' <summary>
''' 查询指定数据库中指定数据表符合条件的所有指定列的数据
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="columnName">表名</param>
''' <param name="tableName">条件</param>
''' <returns></returns>
Public Overridable Function DbSearch(dbName As String, columnName As List(Of String), tableName As String, Optional condition As String = "") As String
Dim colNameString As New StringBuilder
For i As Integer = 0 To columnName.Count - 1
If i = 0 Then
colNameString.Append($"{FiledSuffix}{columnName(i)}{FiledPrefix}")
Else
colNameString.Append($",{FiledSuffix}{columnName(i)}{FiledPrefix}")
End If
Next
Return DbSearch(dbName, colNameString.ToString(), tableName, condition)
End Function
''' <summary>
''' 查询指定表包含的内容行数
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">数据表名</param>
''' <param name="condition">查询条件</param>
''' <returns></returns>
Public Overridable Function DbSearchCount(dbName As String, tableName As String, Optional condition As String = "") As String
Return DbSearch(dbName, "count(*)", tableName, condition)
End Function
''' <summary>
''' 查询指定数据库中指定数据表符合条件的所有数据
'''
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">数据表名</param>
''' <param name="condition">查询条件(可选)</param>
''' <returns></returns>
Public Overridable Function DbSearchAll(dbName As String, tableName As String, Optional condition As String = "") As String
Return DbSearch(dbName, "*", tableName, condition)
End Function
''' <summary>
''' 查询指定数据库中指定数据表的信息
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">表名</param>
''' <returns></returns>
Public Overridable Function DbSearchTableInfo(dbName As String, tableName As String) As String
Return DbSearch("", "*", "information_schema.tables", "table_schema = '{dbName}' and table_name = '{tableName}'")
End Function
''' <summary>
''' 查询指定数据表是否存在的信息,返回查询当前表在指定数据库中存在的数量
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">表名</param>
''' <returns></returns>
Public Overridable Function DbSearchTableExists(dbName As String, tableName As String) As String
Return DbSearch("", "count(*)", "information_schema.tables", "table_schema = '{dbName}' and table_name = '{tableName}'")
End Function
''' <summary>
''' 指定数据库中数据表插入一行数据
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">表名</param>
''' <param name="colNames">列名字符串</param>
''' <param name="values">列值字符串</param>
''' <returns></returns>
Public Overridable Function DbInsert(dbName As String, tableName As String, colNames As String, values As String) As String
Dim cmdText As New StringBuilder
cmdText.Append($"Insert into ")
If String.IsNullOrEmpty(dbName) = False Then
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
End If
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
cmdText.Append($" ({colNames}) Values ( {values} );")
Return cmdText.ToString()
End Function
''' <summary>
''' 指定数据库中数据表插入一行数据
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">表名</param>
''' <param name="dicNameValues">列名与列值键值对</param>
''' <returns></returns>
Public Overridable Function DbInsert(dbName As String, tableName As String, dicNameValues As Dictionary(Of String, String)) As String
Dim colNames As New StringBuilder
Dim values As New StringBuilder
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
If colNames.Length = 0 Then
colNames.Append($"{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
values.Append($"'{keyValuePair.Value}'")
Else
colNames.Append($",{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
values.Append($",'{keyValuePair.Value}'")
End If
Next
Return DbInsert(dbName, tableName, colNames.ToString(), values.ToString())
End Function
''' <summary>
''' 指定数据库中数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName}
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName"></param>
''' <param name="colNames">需要插入列名的集合</param>
''' <returns></returns>
Public Overridable Function DbInsertParam(dbName As String, tableName As String, colNames As List(Of String)) As String
Dim colNameBuilder As New StringBuilder
Dim valueBuilder As New StringBuilder
For Each colName As String In colNames
If colNameBuilder.Length = 0 Then
colNameBuilder.Append($"{FiledSuffix}{colName}{FiledPrefix}")
valueBuilder.Append($"@{colName}")
Else
colNameBuilder.Append($",{FiledSuffix}{colName}{FiledPrefix}")
valueBuilder.Append($",@{colName}")
End If
Next
'insert into dbName.tablename (1,2,3) value (@1,@2,@3)
Return DbInsert(dbName, tableName, colNameBuilder.ToString(), valueBuilder.ToString())
End Function
''' <summary>
''' 更新指定数据库中指定表数据
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">指定表名</param>
''' <param name="destStr">更新字符串</param>
''' <param name="condition"></param>
''' <returns></returns>
Public Overridable Function DbUpdate(dbName As String, tableName As String, destStr As String, condition As String) As String
Dim cmdText As New StringBuilder
Dim tmpStrCmdText As String = ""
cmdText.Append($"Update ")
If String.IsNullOrEmpty(dbName) = False Then
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
End If
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
cmdText.Append($" Set {destStr} Where {condition};")
tmpStrCmdText = cmdText.ToString()
'Console.WriteLine("SQL_CMD = " & tmpStrCmdText)
'If Not System.IO.File.Exists("C:\log.txt") Then
' System.IO.File.Create("C:\log.txt").Dispose()
'End If
''将返回写入 Log.txt中
'System.IO.File.AppendAllText("C:\log.txt", $"{tmpStrCmdText}")
Return tmpStrCmdText
End Function
''' <summary>
''' 更新指定数据库中指定表数据,参数名由@{ColName}
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">指定表名</param>
''' <param name="colNames">更新列名的集合</param>
''' <param name="condition">更新列索引条件</param>
''' <returns></returns>
Public Overridable Function DbUpdateParam(dbName As String, tableName As String, colNames As List(Of String), condition As String) As String
Dim destStr As New StringBuilder
For Each colName As String In colNames
If destStr.Length = 0 Then
destStr.Append($"{FiledSuffix}{colName}{FiledPrefix} = @{colName}")
Else
destStr.Append($",{FiledSuffix}{colName}{FiledPrefix} = @{colName}")
End If
Next
Return DbUpdate(dbName, tableName, destStr.ToString(), condition)
End Function
''' <summary>
''' 更新指定数据库中指定表数据
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">指定表名</param>
''' <param name="filedDictionary">更新列名与列值键值对</param>
''' <param name="condition">更新列索引条件</param>
''' <returns></returns>
Public Overridable Function DbUpdate(dbName As String, tableName As String, filedDictionary As Dictionary(Of String, String), condition As String) As String
Dim destStr As New StringBuilder
For Each filed As KeyValuePair(Of String, String) In filedDictionary
If destStr.Length = 0 Then
destStr.Append($"{FiledSuffix}{filed.Key}{FiledPrefix} = '{filed.Value}'")
Else
destStr.Append($",{FiledSuffix}{filed.Key}{FiledPrefix} = '{filed.Value}'")
End If
Next
Return DbUpdate(dbName, tableName, destStr.ToString(), condition)
End Function
''' <summary>
''' 指定数据库中指定数据表增加一列数据
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">表名</param>
''' <param name="colName">列名</param>
''' <param name="colType">列类型</param>
''' <param name="isNull">是否允许为空</param>
''' <returns></returns>
Public Overridable Function DbAddCol(dbName As String, tableName As String, colName As String, colType As String, Optional isNull As Boolean = True) As String
Dim cmdText As New StringBuilder
cmdText.Append($"Alter Table ")
If String.IsNullOrEmpty(dbName) = False Then
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
End If
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
cmdText.Append($" Add {FiledSuffix}{colName}{FiledPrefix} {colType} {IIf(isNull, "Default Null", "Not Null")};")
Return cmdText.ToString()
End Function
''' <summary>
''' 指定数据库中数据表删除一列数据
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">表名</param>
''' <param name="colName">需要删除的列名,仅一列</param>
''' <returns></returns>
Public Overridable Function DbDropCol(dbName As String, tableName As String, colName As String) As String
Dim cmdText As New StringBuilder
cmdText.Append($"Alter Table ")
If String.IsNullOrEmpty(dbName) = False Then
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
End If
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
cmdText.Append($" Drop Column {FiledSuffix}{colName}{FiledPrefix};")
Return cmdText.ToString()
End Function
''' <summary>
''' 指定数据库中指定表删除多行数据
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">表名</param>
''' <param name="condition">条件</param>
''' <returns></returns>
Public Overridable Function DbDeleteRows(dbName As String, tableName As String, condition As String) As String
Dim cmdText As New StringBuilder
cmdText.Append($"Delete From ")
If String.IsNullOrEmpty(dbName) = False Then
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
End If
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
cmdText.Append($" Where {condition};")
Return cmdText.ToString()
End Function
''' <summary>
''' 指定数据库中创建数据表
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">表名</param>
''' <param name="createStr">创建表的列信息字符串</param>
''' <returns></returns>
Public Overridable Function DbCreateTable(dbName As String, tableName As String, createStr As String) As String
Dim cmdText As New StringBuilder
cmdText.Append($"Create Table ")
If String.IsNullOrEmpty(dbName) = False Then
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
End If
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
cmdText.Append($" ( {createStr} );")
Return cmdText.ToString()
End Function
''' <summary>
''' 指定数据库中创建数据表,如果存在则不创建
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">表名</param>
''' <param name="createStr">创建表的列信息字符串</param>
''' <returns></returns>
Public Overridable Function DbCreateTableWhenNotExists(dbName As String, tableName As String, createStr As String) As String
Dim cmdText As New StringBuilder
cmdText.Append($"Create Table if not exists ")
If String.IsNullOrEmpty(dbName) = False Then
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
End If
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
cmdText.Append($" ( {createStr} );")
Return cmdText.ToString()
End Function
''' <summary>
''' 清空指定数据库中数据表,表依旧存在
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">数据表名</param>
''' <returns></returns>
Public Overridable Function DbDeleteTable(dbName As String, tableName As String) As String
Dim cmdText As New StringBuilder
cmdText.Append($"Delete From ")
If String.IsNullOrEmpty(dbName) = False Then
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
End If
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
cmdText.Append($";")
Return cmdText.ToString()
End Function
''' <summary>
''' 删除指定数据库中数据表
''' </summary>
''' <param name="dbName">数据库名</param>
''' <param name="tableName">数据表名</param>
''' <returns></returns>
Public Overridable Function DbDropTable(dbName As String, tableName As String) As String
Dim cmdText As New StringBuilder
cmdText.Append($"Drop Table ")
If String.IsNullOrEmpty(dbName) = False Then
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
End If
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
cmdText.Append($";")
Return cmdText.ToString()
End Function
#End Region
End Class

385
Database/DbExecutor.vb Normal file
View File

@@ -0,0 +1,385 @@
Imports System.Data.Common
Imports System.Data.SqlClient
Imports System.Data.SQLite
Imports MySql.Data.MySqlClient
''' <summary>
''' 数据库通用命令执行器
''' 时间2020-12-21
''' 作者ML
''' 版本1.0
''' </summary>
Public Class DbExecutor
Implements IDisposable
''' <summary>
''' 数据库类型,目前支持Mysql与Sqlite
''' </summary>
Enum DbTypeEnum
Mysql
Sqlite
Mssql
npgsql
End Enum
Private ReadOnly _connectionString As String '数据库连接语句
Private ReadOnly _dbType As DbTypeEnum '数据库类型
Private _connection As DbConnection '数据库连接句柄
Private _command As DbCommand '数据库命令句柄
Private _dataAdapter As DbDataAdapter '数据库查询填充器句柄
Private _transaction As DbTransaction '数据库事务句柄
Private _commandHelper As DbCmdHelper '数据库语句填充助手
Sub New(type As DbTypeEnum, connectionString As String)
_dbType = type
_connectionString = connectionString
InitByDbType(_dbType)
End Sub
Private Sub InitByDbType(type As DbTypeEnum)
Select Case type
Case DbTypeEnum.Mysql
_connection = New MySqlConnection()
_command = _connection.CreateCommand()
_dataAdapter = New MySqlDataAdapter() With {.MissingSchemaAction = MissingSchemaAction.AddWithKey}
_commandHelper = New MysqlCmdHelper()
Case DbTypeEnum.Sqlite
_connection = New SqliteConnection()
_command = _connection.CreateCommand()
_dataAdapter = New SQLiteDataAdapter() With {.MissingSchemaAction = MissingSchemaAction.AddWithKey}
_commandHelper = New SqliteCmdHelper()
Case DbTypeEnum.Mssql
_connection = New SqlConnection()
_command = _connection.CreateCommand()
_dataAdapter = New SqlDataAdapter() With {.MissingSchemaAction = MissingSchemaAction.AddWithKey}
_commandHelper = New MssqlCmdHelper()
Case DbTypeEnum.npgsql
_connection = New Npgsql.NpgsqlConnection()
_command = _connection.CreateCommand()
_dataAdapter = New Npgsql.NpgsqlDataAdapter() With {.MissingSchemaAction = MissingSchemaAction.AddWithKey}
_commandHelper = New MysqlCmdHelper()
End Select
End Sub
Public ReadOnly Property DatabaseType() As DbTypeEnum
Get
Return _dbType
End Get
'Set(value As DbTypeEnum)
' _dbType = value
' '执行上一个数据库的关闭操作
' InitByDbType(_dbType)
'End Set
End Property
Public ReadOnly Property Connection() As DbConnection
Get
Return _connection
End Get
End Property
Public ReadOnly Property Command() As DbCommand
Get
Return _command
End Get
End Property
Public ReadOnly Property CmdHelper() As DbCmdHelper
Get
Return _commandHelper
End Get
End Property
''' <summary>
''' 打开数据库连接
''' </summary>
''' <returns></returns>
Public Function Open() As Boolean
If _connection Is Nothing Then Return False
If String.IsNullOrWhiteSpace(_connectionString) Then Return False
Try
_connection.ConnectionString = _connectionString
_connection.Open()
Catch ex As Exception
Throw
End Try
Return True
End Function
''' <summary>
''' 关闭数据库连接
''' </summary>
Public Sub Close()
If _connection Is Nothing Then Return
If _connection.State = ConnectionState.Closed Then Return
_connection.Close()
End Sub
''' <summary>
''' 创建当前连接的命令执行句柄
''' </summary>
''' <returns></returns>
Public Function CreateCommand() As DbCommand
Return _connection.CreateCommand()
End Function
''' <summary>
''' 运行非查询语句,返回执行该语句受到影响的行数
''' </summary>
''' <param name="commandText">执行的数据库命令文本</param>
''' <returns></returns>
Public Function ExecuteNonQuery(commandText As String) As Integer
Dim result As Integer
Try
_command.CommandText = commandText
result = _command.ExecuteNonQuery()
Catch ex As Exception
Throw
End Try
Return result
End Function
''' <summary>
''' 使用命令参数模式执行非查询语句,返回执行该语句受到影响的行数
''' </summary>
''' <param name="commandText">执行的数据库命令文本</param>
''' <param name="commandParams">执行的数据库命令参数</param>
''' <returns></returns>
Public Function ExecuteNonQuery(commandText As String, commandParams As DbParameterCollection) As Integer
Dim result As Integer
Try
_command.CommandText = commandText
_command.Parameters.Clear()
For Each param As DbParameter In commandParams
_command.Parameters.Add(param)
Next
result = _command.ExecuteNonQuery()
Catch ex As Exception
Throw
End Try
Return result
End Function
''' <summary>
''' 执行数据库语句,返回数据库读取流的句柄
''' </summary>
''' <param name="commandText">执行的数据库命令文本</param>
''' <returns></returns>
Public Function ExecuteReader(commandText As String) As DbDataReader
Dim result As DbDataReader
Try
_command.CommandText = commandText
result = _command.ExecuteReader()
Catch ex As Exception
Throw
End Try
Return result
End Function
''' <summary>
''' 使用命令参数模式执行数据库语句,返回数据库读取流的句柄
''' </summary>
''' <param name="commandText">执行的数据库命令文本</param>
''' <param name="commandParams">执行的数据库命令参数</param>
''' <returns></returns>
Public Function ExecuteReader(commandText As String, commandParams As DbParameterCollection) As DbDataReader
Dim result As DbDataReader
Try
_command.CommandText = commandText
_command.Parameters.Clear()
For Each param As DbParameter In commandParams
_command.Parameters.Add(param)
Next
result = _command.ExecuteReader()
Catch ex As Exception
Throw
End Try
Return result
End Function
''' <summary>
''' 执行数据库语句,返回查询结果的第一行第一列的内容
''' </summary>
''' <param name="commandText">执行的数据库命令文本</param>
''' <returns></returns>
Public Function ExecuteScalar(commandText As String) As Object
Dim result As Object
Try
_command.CommandText = commandText
result = _command.ExecuteScalar()
Catch ex As Exception
Throw
End Try
Return result
End Function
''' <summary>
''' 使用命令参数模式执行数据库语句,返回查询结果的第一行第一列的内容
''' </summary>
''' <param name="commandText">执行的数据库命令文本</param>
''' <param name="commandParams">执行的数据库命令参数</param>
''' <returns></returns>
Public Function ExecuteScalar(commandText As String, commandParams As DbParameterCollection) As Object
Dim result As Object
Try
_command.CommandText = commandText
_command.Parameters.Clear()
For Each param As DbParameter In commandParams
_command.Parameters.Add(param)
Next
result = _command.ExecuteScalar()
Catch ex As Exception
Throw
End Try
Return result
End Function
''' <summary>
''' 执行数据库语句,返回执行结果返回的数据表,常用于查询命令
''' </summary>
''' <param name="commandText">执行的数据库命令文本</param>
''' <returns></returns>
Public Function ExecuteDataTable(commandText As String, Optional withKey As Boolean = True) As DataTable
Dim dataTable As New DataTable
Try
_command.CommandText = commandText
If withKey Then
_dataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
Else
_dataAdapter.MissingSchemaAction = MissingSchemaAction.Add
End If
_dataAdapter.SelectCommand = _command
_dataAdapter.Fill(dataTable)
Catch ex As Exception
Return Nothing
End Try
Return dataTable
End Function
''' <summary>
''' 执行数据库语句,返回执行结果返回的数据表,常用于查询命令
''' </summary>
''' <param name="commandText">执行的数据库命令文本</param>
''' <param name="commandParams">执行的数据库命令参数</param>
''' <returns></returns>
Public Function ExecuteDataTable(commandText As String, commandParams As DbParameterCollection) As DataTable
Dim dataTable As New DataTable
Try
_command.CommandText = commandText
_command.Parameters.Clear()
For Each param As DbParameter In commandParams
_command.Parameters.Add(param)
Next
_dataAdapter.SelectCommand = _command
_dataAdapter.Fill(dataTable)
Catch ex As Exception
Throw
End Try
Return dataTable
End Function
''' <summary>
''' 开启事务
''' </summary>
''' <returns></returns>
Public Function BeginTransaction() As DbTransaction
_transaction = _connection.BeginTransaction()
Return _transaction
End Function
''' <summary>
''' 提交事务
''' </summary>
Public Sub CommitTransaction()
Try
_transaction.Commit()
Catch ex As Exception
Throw
End Try
End Sub
''' <summary>
''' 回滚事务
''' </summary>
Public Sub RollbackTransaction()
Try
_transaction.Rollback()
Catch ex As Exception
Throw
End Try
End Sub
''' <summary>
''' 创建数据参数
''' </summary>
''' <param name="type">参数数据类型</param>
''' <param name="ParameterName">参数名称</param>
''' <param name="value">参数值</param>
''' <returns></returns>
Public Function CreateDbParameter(type As DbType, parameterName As String, value As Object) As DbParameter
Dim dbParam As DbParameter = _command.CreateParameter()
dbParam.DbType = type
dbParam.ParameterName = parameterName
dbParam.Value = value
Return dbParam
End Function
''' <summary>
''' 添加数据参数
''' </summary>
''' <param name="type"></param>
''' <param name="parameterName"></param>
''' <param name="value"></param>
''' <returns></returns>
Public Function AddDbParameter(type As DbType, parameterName As String, value As Object) As DbParameter
Dim dbParam As DbParameter = _command.CreateParameter()
dbParam.DbType = type
dbParam.ParameterName = parameterName
dbParam.Value = value
_command.Parameters.Add(dbParam)
Return dbParam
End Function
''' <summary>
''' 清空数据
''' </summary>
Public Sub ClearDbParameter()
_command.Parameters.Clear()
End Sub
''' <summary>
''' 回收资源
''' </summary>
Public Sub Dispose() Implements IDisposable.Dispose
If _connection IsNot Nothing Then
If _connection.State = ConnectionState.Open Then
_connection.Close()
End If
_connection.Dispose()
End If
If _command IsNot Nothing Then _command.Dispose()
If _dataAdapter IsNot Nothing Then _dataAdapter.Dispose()
GC.Collect() '对所有缓存垃圾进行回收
End Sub
End Class

View File

@@ -0,0 +1,10 @@
Namespace Database.Mssql
Public Class MssqlCmdHelper
Inherits DbCmdHelper
Sub New()
FiledSuffix = "["c
FiledPrefix = "]"c
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,8 @@
Public Class MssqlCmdHelper
Inherits DbCmdHelper
Sub New()
FiledSuffix = "["c
FiledPrefix = "]"c
End Sub
End Class

222
Database/Mysql/DataParam.vb Normal file
View File

@@ -0,0 +1,222 @@
Imports System.Text
Namespace Database.Mysql
Public Class DataParam
Enum DataTypeEnum
'###############################数值类型#############################
''' <summary>
''' 1 byte,小整数值
''' </summary>
Tinyint
''' <summary>
''' 2 bytes,大整数值
''' </summary>
Smallint
''' <summary>
''' 3 bytes,大整数值
''' </summary>
Mediumint
''' <summary>
''' 4 bytes,大整数值
''' </summary>
Int
''' <summary>
''' 4 bytes,大整数值
''' </summary>
[Integer]
''' <summary>
''' 8 bytes,极大整数值
''' </summary>
Bigint
''' <summary>
''' 4 bytes,单精度浮点数值
''' </summary>
Float
''' <summary>
''' 8 bytes,双精度浮点数值
''' </summary>
[Double]
'####################日期类型###############################
''' <summary>
''' 对DECIMAL(M,D) 如果M>D为M+2否则为D+2.小数值
''' </summary>
[Decimal]
''' <summary>
''' 3 bytes,日期值,YYYY-MM-DD
''' </summary>
[Date]
''' <summary>
''' 3 bytes,时间值或持续时间,HH:MM:SS
''' </summary>
Time
''' <summary>
''' 1 bytes,年份值,YYYY
''' </summary>
Year
''' <summary>
''' 8 bytes,混合日期和时间值,YYYY-MM-DD HH:MM:SS
''' </summary>
Datetime
''' <summary>
''' 4 bytes,混合日期和时间值,时间戳,YYYYMMDD HHMMSS
''' </summary>
Timestamp
'####################字符类型###############################
''' <summary>
''' 0-255 bytes,定长字符串
''' </summary>
[Char]
''' <summary>
''' 0-65535 bytes,变长字符串
''' </summary>
Varchar
''' <summary>
''' 0-255 bytes,不超过 255 个字符的二进制字符串
''' </summary>
Tinyblob
''' <summary>
''' 0-255 bytes,短文本字符串
''' </summary>
Tinytext
''' <summary>
''' 0-65 535 bytes,二进制形式的长文本数据
''' </summary>
Blob
''' <summary>
''' 0-65 535 bytes,长文本数据
''' </summary>
Text
''' <summary>
''' 0-16 777 215 bytes,二进制形式的中等长度文本数据
''' </summary>
Mediumblob
''' <summary>
''' 0-16 777 215 bytes,中等长度文本数据
''' </summary>
Mediumtext
''' <summary>
''' 0-4 294 967 295 bytes,二进制形式的极大文本数据
''' </summary>
Longblob
''' <summary>
''' 0-4 294 967 295 bytes,极大文本数据
''' </summary>
Longtext
End Enum
''' <summary>
''' 列名
''' </summary>
''' <returns></returns>
Public Property ColumnName() As String
''' <summary>
''' 当前值
''' </summary>
''' <returns></returns>
Public Property Value() As String
''' <summary>
''' 默认值
''' </summary>
''' <returns></returns>
Public Property DefaultValue() As String
''' <summary>
''' 数据类型
''' </summary>
''' <returns></returns>
Public Property DataType() As DataTypeEnum
''' <summary>
''' 数据类型长度
''' </summary>
''' <returns></returns>
Public Property DataTypeLength() As Integer
''' <summary>
''' 数据类型是否带符号
''' </summary>
''' <returns></returns>
Public Property IsUnsigned() As Boolean
''' <summary>
''' 是否允许为空
''' </summary>
''' <returns></returns>
Public Property IsNull() As Boolean = True
''' <summary>
''' 是否自动增长
''' </summary>
''' <returns></returns>
Public Property IsAutoIncrement() As Boolean
''' <summary>
''' 是否为主键
''' </summary>
''' <returns></returns>
Public Property IsPrimaryKey() As Boolean
Public Function ToAddColString() As String
Dim sb As New StringBuilder
sb.Append($"`{ColumnName}`")
Select Case DataType
Case DataTypeEnum.Varchar,DataTypeEnum.[Char]
sb.Append($" {DataType}({DataTypeLength}) ")
Case DataTypeEnum.Int
sb.Append($" {DataType}")
if IsUnsigned Then sb.Append($" Unsigned")
If IsAutoIncrement Then sb.Append($" AUTO_INCREMENT")
Case Else
sb.Append($" {DataType}")
End Select
sb.Append(IIf(IsNull, " Default Null", " Not Null"))
If IsPrimaryKey Then
sb.Append($" PRIMARY KEY")
End If
Return sb.ToString()
End Function
End Class
End Namespace

View File

@@ -0,0 +1,13 @@
Imports System.Text
Namespace Database.Mysql
Public Class MysqlCmdHelper
Inherits DbCmdHelper
Sub New
FiledSuffix = "`"c
FiledPrefix = "`"c
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,9 @@
Public Class MysqlCmdHelper
Inherits DbCmdHelper
Sub New()
FiledSuffix = "`"c
FiledPrefix = "`"c
End Sub
End Class

220
Database/MysqlDataParam.vb Normal file
View File

@@ -0,0 +1,220 @@
Imports System.Text
Public Class MysqlDataParam
Enum DataTypeEnum
'###############################数值类型#############################
''' <summary>
''' 1 byte,小整数值
''' </summary>
Tinyint
''' <summary>
''' 2 bytes,大整数值
''' </summary>
Smallint
''' <summary>
''' 3 bytes,大整数值
''' </summary>
Mediumint
''' <summary>
''' 4 bytes,大整数值
''' </summary>
Int
''' <summary>
''' 4 bytes,大整数值
''' </summary>
[Integer]
''' <summary>
''' 8 bytes,极大整数值
''' </summary>
Bigint
''' <summary>
''' 4 bytes,单精度浮点数值
''' </summary>
Float
''' <summary>
''' 8 bytes,双精度浮点数值
''' </summary>
[Double]
'####################日期类型###############################
''' <summary>
''' 对DECIMAL(M,D) 如果M>D为M+2否则为D+2.小数值
''' </summary>
[Decimal]
''' <summary>
''' 3 bytes,日期值,YYYY-MM-DD
''' </summary>
[Date]
''' <summary>
''' 3 bytes,时间值或持续时间,HH:MM:SS
''' </summary>
Time
''' <summary>
''' 1 bytes,年份值,YYYY
''' </summary>
Year
''' <summary>
''' 8 bytes,混合日期和时间值,YYYY-MM-DD HH:MM:SS
''' </summary>
Datetime
''' <summary>
''' 4 bytes,混合日期和时间值,时间戳,YYYYMMDD HHMMSS
''' </summary>
Timestamp
'####################字符类型###############################
''' <summary>
''' 0-255 bytes,定长字符串
''' </summary>
[Char]
''' <summary>
''' 0-65535 bytes,变长字符串
''' </summary>
Varchar
''' <summary>
''' 0-255 bytes,不超过 255 个字符的二进制字符串
''' </summary>
Tinyblob
''' <summary>
''' 0-255 bytes,短文本字符串
''' </summary>
Tinytext
''' <summary>
''' 0-65 535 bytes,二进制形式的长文本数据
''' </summary>
Blob
''' <summary>
''' 0-65 535 bytes,长文本数据
''' </summary>
Text
''' <summary>
''' 0-16 777 215 bytes,二进制形式的中等长度文本数据
''' </summary>
Mediumblob
''' <summary>
''' 0-16 777 215 bytes,中等长度文本数据
''' </summary>
Mediumtext
''' <summary>
''' 0-4 294 967 295 bytes,二进制形式的极大文本数据
''' </summary>
Longblob
''' <summary>
''' 0-4 294 967 295 bytes,极大文本数据
''' </summary>
Longtext
End Enum
''' <summary>
''' 列名
''' </summary>
''' <returns></returns>
Public Property ColumnName() As String
''' <summary>
''' 当前值
''' </summary>
''' <returns></returns>
Public Property Value() As String
''' <summary>
''' 默认值
''' </summary>
''' <returns></returns>
Public Property DefaultValue() As String
''' <summary>
''' 数据类型
''' </summary>
''' <returns></returns>
Public Property DataType() As DataTypeEnum
''' <summary>
''' 数据类型长度
''' </summary>
''' <returns></returns>
Public Property DataTypeLength() As Integer
''' <summary>
''' 数据类型是否带符号
''' </summary>
''' <returns></returns>
Public Property IsUnsigned() As Boolean
''' <summary>
''' 是否允许为空
''' </summary>
''' <returns></returns>
Public Property IsNull() As Boolean = True
''' <summary>
''' 是否自动增长
''' </summary>
''' <returns></returns>
Public Property IsAutoIncrement() As Boolean
''' <summary>
''' 是否为主键
''' </summary>
''' <returns></returns>
Public Property IsPrimaryKey() As Boolean
Public Function ToAddColString() As String
Dim sb As New StringBuilder
sb.Append($"`{ColumnName}`")
Select Case DataType
Case DataTypeEnum.Varchar, DataTypeEnum.[Char]
sb.Append($" {DataType}({DataTypeLength}) ")
Case DataTypeEnum.Int
sb.Append($" {DataType}")
If IsUnsigned Then sb.Append($" Unsigned")
If IsAutoIncrement Then sb.Append($" AUTO_INCREMENT")
Case Else
sb.Append($" {DataType}")
End Select
sb.Append(IIf(IsNull, " Default Null", " Not Null"))
If IsPrimaryKey Then
sb.Append($" PRIMARY KEY")
End If
Return sb.ToString()
End Function
End Class

View File

@@ -0,0 +1,106 @@
Imports System.Text
Namespace Database.Sqlite
Public Class DataParam
Enum DataTypeEnum
Varchar
Nchar
Blob
Bit
Datetime
[Decimal]
Real
UniqueIdentifier
Int
[Integer]
TinyInt
[Single]
Nvarchar
SmallInt
SmallUint
Uint
UnsignedInteger
End Enum
''' <summary>
''' 列名
''' </summary>
''' <returns></returns>
Public Property ColumnName() As String
''' <summary>
''' 当前值
''' </summary>
''' <returns></returns>
Public Property Value() As String
''' <summary>
''' 默认值
''' </summary>
''' <returns></returns>
Public Property DefaultValue() As String
''' <summary>
''' 数据类型
''' </summary>
''' <returns></returns>
Public Property DataType() As DataTypeEnum
''' <summary>
''' 数据类型长度
''' </summary>
''' <returns></returns>
Public Property DataTypeLength() As Integer
''' <summary>
''' 是否允许为空
''' </summary>
''' <returns></returns>
Public Property IsNull() As Boolean = True
''' <summary>
''' 是否自动增长
''' </summary>
''' <returns></returns>
Public Property IsAutoIncrement() As Boolean
''' <summary>
''' 是否为主键
''' </summary>
''' <returns></returns>
Public Property IsPrimaryKey() As Boolean
''' <summary>
''' 是否为唯一值
''' </summary>
''' <returns></returns>
Public Property IsUnique() As Boolean
Public Function ToAddColString() As String
Dim sb As New StringBuilder
sb.Append($"`{ColumnName}`")
Select Case DataType
Case DataTypeEnum.Varchar, DataTypeEnum.Nchar, DataTypeEnum.Nvarchar
sb.Append($" {DataType}({DataTypeLength}) ")
Case DataTypeEnum.Int,DataTypeEnum.Integer
sb.Append($" {DataType}")
Case Else
sb.Append($" {DataType}")
End Select
If IsAutoIncrement Then sb.Append($" AUTOINCREMENT")
sb.Append(IIf(IsNull, " Default Null", " Not Null"))
If IsPrimaryKey Then
sb.Append($" PRIMARY KEY")
End If
Return sb.ToString()
End Function
End Class
End Namespace

View File

@@ -0,0 +1,20 @@
Namespace Database.Sqlite
Public Class SqliteCmdHelper
Inherits DbCmdHelper
Sub New()
FiledSuffix = "["c
FiledPrefix = "]"c
End Sub
''' <summary>
''' 查询指定数据表的信息
''' </summary>
''' <param name="tableName"></param>
''' <returns></returns>
Public Overrides Function SearchTableInfo(tableName As String) As String
Return $"select * from sqlite_master where tbl_name = '{tableName}';"
End Function
End Class
End Namespace

View File

@@ -0,0 +1,19 @@

Public Class SqliteCmdHelper
Inherits DbCmdHelper
Sub New()
FiledSuffix = "["c
FiledPrefix = "]"c
End Sub
''' <summary>
''' 查询指定数据表的信息
''' </summary>
''' <param name="tableName"></param>
''' <returns></returns>
Public Overrides Function SearchTableInfo(tableName As String) As String
Return $"select * from sqlite_master where tbl_name = '{tableName}';"
End Function
End Class

105
Database/SqliteDataParam.vb Normal file
View File

@@ -0,0 +1,105 @@
Imports System.Text
Public Class SqliteDataParam
Enum DataTypeEnum
Varchar
Nchar
Blob
Bit
Datetime
[Decimal]
Real
UniqueIdentifier
Int
[Integer]
TinyInt
[Single]
Nvarchar
SmallInt
SmallUint
Uint
UnsignedInteger
End Enum
''' <summary>
''' 列名
''' </summary>
''' <returns></returns>
Public Property ColumnName() As String
''' <summary>
''' 当前值
''' </summary>
''' <returns></returns>
Public Property Value() As String
''' <summary>
''' 默认值
''' </summary>
''' <returns></returns>
Public Property DefaultValue() As String
''' <summary>
''' 数据类型
''' </summary>
''' <returns></returns>
Public Property DataType() As DataTypeEnum
''' <summary>
''' 数据类型长度
''' </summary>
''' <returns></returns>
Public Property DataTypeLength() As Integer
''' <summary>
''' 是否允许为空
''' </summary>
''' <returns></returns>
Public Property IsNull() As Boolean = True
''' <summary>
''' 是否自动增长
''' </summary>
''' <returns></returns>
Public Property IsAutoIncrement() As Boolean
''' <summary>
''' 是否为主键
''' </summary>
''' <returns></returns>
Public Property IsPrimaryKey() As Boolean
''' <summary>
''' 是否为唯一值
''' </summary>
''' <returns></returns>
Public Property IsUnique() As Boolean
Public Function ToAddColString() As String
Dim sb As New StringBuilder
sb.Append($"`{ColumnName}`")
Select Case DataType
Case DataTypeEnum.Varchar, DataTypeEnum.Nchar, DataTypeEnum.Nvarchar
sb.Append($" {DataType}({DataTypeLength}) ")
Case DataTypeEnum.Int, DataTypeEnum.Integer
sb.Append($" {DataType}")
Case Else
sb.Append($" {DataType}")
End Select
If IsAutoIncrement Then sb.Append($" AUTOINCREMENT")
sb.Append(IIf(IsNull, " Default Null", " Not Null"))
If IsPrimaryKey Then
sb.Append($" PRIMARY KEY")
End If
Return sb.ToString()
End Function
End Class

25
DevModeFirmwareInfo.sln Normal file
View File

@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.36422.26
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DevModeFirmwareInfo", "DevModeFirmwareInfo.vbproj", "{9E2AC81D-D711-4219-95A1-9C4FA3FCB393}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9E2AC81D-D711-4219-95A1-9C4FA3FCB393}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9E2AC81D-D711-4219-95A1-9C4FA3FCB393}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9E2AC81D-D711-4219-95A1-9C4FA3FCB393}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9E2AC81D-D711-4219-95A1-9C4FA3FCB393}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5AE8A899-F082-4F80-9531-A3AC9E7A362B}
EndGlobalSection
EndGlobal

238
DevModeFirmwareInfo.vbproj Normal file
View File

@@ -0,0 +1,238 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9E2AC81D-D711-4219-95A1-9C4FA3FCB393}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>DevModeFirmwareInfo.My.MyApplication</StartupObject>
<RootNamespace>DevModeFirmwareInfo</RootNamespace>
<AssemblyName>DevModeFirmwareInfo</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>DevModeFirmwareInfo.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>DevModeFirmwareInfo.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL">
<HintPath>packages\BouncyCastle.Cryptography.2.5.1\lib\net461\BouncyCastle.Cryptography.dll</HintPath>
</Reference>
<Reference Include="FlexCell, Version=4.7.0.0, Culture=neutral, PublicKeyToken=6f86587eb70ee309, processorArchitecture=MSIL" />
<Reference Include="FluentFTP, Version=33.0.3.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">
<HintPath>packages\FluentFTP.33.0.3\lib\net45\FluentFTP.dll</HintPath>
</Reference>
<Reference Include="Google.Protobuf, Version=3.30.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<HintPath>packages\Google.Protobuf.3.30.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="K4os.Compression.LZ4, Version=1.3.8.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
<HintPath>packages\K4os.Compression.LZ4.1.3.8\lib\net462\K4os.Compression.LZ4.dll</HintPath>
</Reference>
<Reference Include="K4os.Compression.LZ4.Streams, Version=1.3.8.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
<HintPath>packages\K4os.Compression.LZ4.Streams.1.3.8\lib\net462\K4os.Compression.LZ4.Streams.dll</HintPath>
</Reference>
<Reference Include="K4os.Hash.xxHash, Version=1.0.8.0, Culture=neutral, PublicKeyToken=32cd54395057cec3, processorArchitecture=MSIL">
<HintPath>packages\K4os.Hash.xxHash.1.0.8\lib\net462\K4os.Hash.xxHash.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.HashCode, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.Bcl.HashCode.1.1.1\lib\net461\Microsoft.Bcl.HashCode.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.Extensions.DependencyInjection.Abstractions.8.0.0\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.Extensions.Logging.Abstractions.8.0.0\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
</Reference>
<Reference Include="MySql.Data, Version=9.4.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>packages\MySql.Data.9.4.0\lib\net48\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="Npgsql, Version=8.0.7.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL">
<HintPath>packages\Npgsql.8.0.7\lib\netstandard2.0\Npgsql.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.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Collections.Immutable.8.0.0\lib\net462\System.Collections.Immutable.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" />
<Reference Include="System.Configuration.ConfigurationManager, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Configuration.ConfigurationManager.8.0.0\lib\net462\System.Configuration.ConfigurationManager.dll</HintPath>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=2.0.2.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>packages\System.Data.SQLite.2.0.2\lib\net471\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Deployment" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=8.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Diagnostics.DiagnosticSource.8.0.1\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.Drawing" />
<Reference Include="System.IO.Pipelines, Version=5.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.IO.Pipelines.5.0.2\lib\net461\System.IO.Pipelines.dll</HintPath>
</Reference>
<Reference Include="System.Management" />
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<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=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Text.Encodings.Web.8.0.0\lib\net462\System.Text.Encodings.Web.dll</HintPath>
</Reference>
<Reference Include="System.Text.Json, Version=8.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Text.Json.8.0.5\lib\net462\System.Text.Json.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Channels, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Threading.Channels.8.0.0\lib\net462\System.Threading.Channels.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
<Reference Include="ZstdSharp, Version=0.8.5.0, Culture=neutral, PublicKeyToken=8d151af33a4ad5cf, processorArchitecture=MSIL">
<HintPath>packages\ZstdSharp.Port.0.8.5\lib\net462\ZstdSharp.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="Database\Base\ColumnSchema.vb" />
<Compile Include="Database\Base\CommandHelpers.vb" />
<Compile Include="Database\Base\DatabaseData.vb" />
<Compile Include="Database\Base\DatabaseSchema.vb" />
<Compile Include="Database\Base\ForeignKeySchema.vb" />
<Compile Include="Database\Base\IndexSchema.vb" />
<Compile Include="Database\Base\InsertParams.vb" />
<Compile Include="Database\Base\SearchCondition.vb" />
<Compile Include="Database\Base\SearchParams.vb" />
<Compile Include="Database\Base\TableSchema.vb" />
<Compile Include="Database\Base\TriggerBuilder.vb" />
<Compile Include="Database\Base\TriggerSchema.vb" />
<Compile Include="Database\Base\ViewSchema.vb" />
<Compile Include="Database\DbCmdHelper.vb" />
<Compile Include="Database\DbExecutor.vb" />
<Compile Include="Database\MssqlCmdHelper.vb" />
<Compile Include="Database\Mssql\MssqlCmdHelper.vb" />
<Compile Include="Database\MysqlCmdHelper.vb" />
<Compile Include="Database\MysqlDataParam.vb" />
<Compile Include="Database\Mysql\DataParam.vb" />
<Compile Include="Database\Mysql\MysqlCmdHelper.vb" />
<Compile Include="Database\SqliteCmdHelper.vb" />
<Compile Include="Database\SqliteDataParam.vb" />
<Compile Include="Database\Sqlite\DataParam.vb" />
<Compile Include="Database\Sqlite\SqliteCmdHelper.vb" />
<Compile Include="Form1.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.vb">
<DependentUpon>Form1.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="FTP\blvFtpServer.vb" />
<Compile Include="FTP\UtsFtp.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
</PropertyGroup>
</Project>

217
FTP/UtsFtp.vb Normal file
View File

@@ -0,0 +1,217 @@
Imports System.Threading
Imports FluentFTP
Namespace UTSModule
Public Class UtsFtp
''' <summary>测试器句柄,全局唯一</summary>
Private Shared _object As UtsFtp
''' <summary>初始化测试器线程锁</summary>
Private Shared ReadOnly InitLock As New Object()
Private Shared FtpPort As Integer
Private Shared FtpUser As String
Private Shared FtpPwd As String
Private _ftpUser As String
Private _ftpPwd As String
Private _ftpPort As Integer
Private _ftpHost As String
Private Default_FTP_Host As String = "blv-oa.com"
''' <summary>
''' 初始化FTP连接参数
''' </summary>
''' <param name="port">端口号</param>
''' <param name="user">用户名</param>
''' <param name="pwd">用户密码</param>
Public Shared Sub InitConnectParams(port As Integer, user As String, pwd As String)
FtpPort = port
FtpUser = user
FtpPwd = pwd
End Sub
''' <summary>
''' 创建类单例对象
''' </summary>
''' <returns></returns>
Public Shared Function CreateObject() As UtsFtp
If _object Is Nothing Then
SyncLock InitLock
'内存护栏
Thread.MemoryBarrier()
If _object Is Nothing Then
_object = New UtsFtp("blv-oa.com", FtpPort, FtpUser, FtpPwd)
End If
End SyncLock
End If
Return _object
End Function
Private Sub New(host As String, port As Integer, user As String, pwd As String)
_ftpHost = host
_ftpPort = port
_ftpUser = user
_ftpPwd = pwd
End Sub
''' <summary>
''' Ftp服务器地址
''' </summary>
''' <returns></returns>
Public Property FtpHost As String
Get
Return _ftpHost
End Get
Set(value As String)
_ftpHost = value
End Set
End Property
Private Sub OnValidateCertificate(control As FtpClient, e As FtpSslValidationEventArgs)
e.Accept = True
End Sub
''' <summary>
''' 判断FTP文件是否存在
''' </summary>
''' <param name="path"></param>
''' <returns></returns>
Public Function FtpFileExists(path As String) As Boolean
Dim result As Boolean
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.Auto
ftpClient.AutoConnect()
result = ftpClient.FileExists(path)
ftpClient.Disconnect()
End Using
Return result
End Function
''' <summary>
''' 创建Ftp文件夹
''' </summary>
''' <param name="remoteDir">Ftp文件夹路径</param>
''' <param name="force">创建所有不存在的文件夹路径</param>
Public Sub CreateDir(remoteDir As String, Optional force As Boolean = False)
Using ftpClient As FtpClient = New FtpClient(FtpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.Auto
ftpClient.AutoConnect()
ftpClient.CreateDirectory(remoteDir, force)
ftpClient.Disconnect()
End Using
End Sub
''' <summary>
''' 上传本地文件至Ftp
''' 将本地指定路径压缩包上传到FTP服务器上manager文件夹下
''' </summary>
Public Function FtpUpload2(remotePath As String, loadPath As String) As FtpStatus
Dim ftpstart As FtpStatus
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.Auto
ftpClient.AutoConnect()
ftpstart = ftpClient.UploadFile(loadPath, remotePath, FtpRemoteExists.Overwrite, True)
ftpClient.Disconnect()
End Using
Return ftpstart
End Function
Public Function FtpUpload(remotePath As String, loadPath As String) As FtpStatus
Dim ftpstart As FtpStatus
Try
Dim datS As String = remotePath.Replace(".xml", ".dat")
Dim datl As String = loadPath.Replace(".xml", ".dat")
Dim ndatS As String = remotePath.Replace(".xml", ".nxml")
Dim ndatS1 As String = remotePath.Replace(".xml", ".ndat")
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.Auto
ftpClient.AutoConnect()
ftpstart = ftpClient.UploadFile(loadPath, ndatS, FtpRemoteExists.Overwrite, True)
ftpClient.Rename(ndatS, remotePath)
ftpstart = ftpClient.UploadFile(datl, ndatS1, FtpRemoteExists.Overwrite, True)
ftpClient.Rename(ndatS1, datS)
ftpClient.Disconnect()
End Using
Catch ex As Exception
MsgBox($"发布错误:{ex.Message }")
ftpstart = FtpStatus.Failed
End Try
Return ftpstart
End Function
Public Function FtpUploadBlv(remotePath As String, loadPath As String) As FtpStatus
Dim ftpstart As FtpStatus
Dim datS As String = remotePath.Replace(".blv", ".dat")
Dim datl As String = loadPath.Replace(".blv", ".dat")
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.Auto
ftpClient.AutoConnect()
ftpstart = ftpClient.UploadFile(loadPath, remotePath, FtpRemoteExists.Overwrite, True)
ftpstart = ftpClient.UploadFile(datl, datS, FtpRemoteExists.Overwrite, True)
ftpClient.Disconnect()
End Using
Return ftpstart
End Function
''' <summary>
''' 从Ftp下载文件至本地
''' 从FTP下载压缩包到本地指定路径
''' </summary>
Public Overloads Function FtpDownload(remotePath As String, loadPath As String, Optional existMode As FtpLocalExists = FtpLocalExists.Overwrite) As FtpStatus
Dim ftpstart As FtpStatus
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.Auto
ftpClient.AutoConnect()
ftpstart = ftpClient.DownloadFile(loadPath, remotePath, existMode)
ftpClient.Disconnect()
End Using
Return ftpstart
End Function
Public Overloads Function FtpDownload(FtpDownloadfile As Dictionary(Of String, String), Optional flag As Boolean = False, Optional existMode As FtpLocalExists = FtpLocalExists.Overwrite) As FtpStatus
Dim ftpstart As FtpStatus = FtpStatus.Success
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.Auto
ftpClient.AutoConnect()
For Each loadfile In FtpDownloadfile
ftpstart = ftpClient.DownloadFile(loadfile.Value, loadfile.Key, existMode)
If flag Then
ftpstart = ftpClient.DownloadFile(loadfile.Value.Replace(".xml", ".dat"), loadfile.Key.Replace(".xml", ".dat"), existMode)
End If
If ftpstart = 1 Then
Continue For
Else
Exit For
End If
Next
ftpClient.Disconnect()
End Using
Return ftpstart
End Function
End Class
End Namespace

510
FTP/blvFtpServer.vb Normal file
View File

@@ -0,0 +1,510 @@
Imports BLV_Studio.UTSModule
Imports MD5Hash
Imports System.IO
Imports System.Security.Cryptography
Imports System.Security.Policy
Imports System.Text
Imports System.Threading
Public Class blvFtpServer
''' <summary>
''' 单独下载控制开关 和 separateMap 一起使用
''' </summary>
Public separateSart As Boolean = False
''' <summary>
''' 单独下载 文件集合 <云文件路径本地文件路径>
''' </summary>
Public separateMap As New Dictionary(Of String, String)
'Public password As String = MD5Hash.Hash.Content("123")
''' <summary>
''' 文件同步线程
''' </summary>
Public _syn_thread As Thread
''' <summary>
''' 本地同步文件夹路径
''' </summary>
Public _SyncLoadDirPath As String
''' <summary>
''' 数据库登录
''' </summary>
Public _dbLoginStr As String
''' <summary>
''' 数据库同步文件集 所在文件夹路径 *文件名
''' </summary>
''' <summary>
''' 需要下载的文件集 相对路径文件名
''' </summary>
''' <summary>
''' FTP同步标志
''' </summary>
Public _startFlag As Integer = 0
''' <summary>
''' FTP同步间隔
''' </summary>
Public num As Integer = 30
Public IsRuning As Boolean
''' <summary>
'''
''' </summary>
''' <param name="loadpath">同步文件夹本地路径</param>
''' <param name="serverpath">同步云文件夹路径</param>
Sub New(loadpath As String, dbLoginStr As String)
_dbLoginStr = dbLoginStr
If loadpath.Substring(loadpath.Length - 1, 1).Equals("\") Then
_SyncLoadDirPath = loadpath
Else
_SyncLoadDirPath = loadpath & "\"
End If
End Sub
Public Sub FtpfileMain()
'开启线程
IsRuning = True
FtpfileThread()
End Sub
Public Sub FtpfileDownload(dirpath As String, filename As String)
Try
UTSModule.UtsFtp.InitConnectParams(FtpPort, FtpUser, FtpPwd)
Dim ftp As UTSModule.UtsFtp = UTSModule.UtsFtp.CreateObject()
ftp.FtpHost = FtpHost
'For Each filepath In _SyncToLoadFile
'ftp.FtpDownload("/Data/Model/485Model/3.txt", _SyncLoadDirPath & "3.txt")
ftp.FtpDownload(dirpath, filename)
' Next
Catch ex As Exception
End Try
End Sub
Public Sub FtpfileThread()
Dim cnt As Integer = 50
Dim _FilePath_li As List(Of String)
Dim loadFilerow As List(Of Dictionary(Of String, String))
Dim FileMysqlRow As List(Of Dictionary(Of String, String))
Dim SyncToLoadFile As Dictionary(Of String, String)
_startFlag = 0
While IsRuning
If cnt > num Then
cnt = 0
_startFlag = 0
RaiseEvent updateIcon(0)
num = 1800
_FilePath_li = Enumerationdirectory(_SyncLoadDirPath)
'本地文件信息储存
loadFilerow = filetosqlfunction(_FilePath_li)
' 获取数据库文件数据
FileMysqlRow = GetMysqlfiledata(_dbLoginStr)
' 文件比对
SyncToLoadFile = Proofreadfile(loadFilerow, FileMysqlRow)
' FTP下载
FTPDownloadFile(SyncToLoadFile, FileMysqlRow)
FileMysqlRow.Clear()
SyncNumber.Clear()
SyncToLoadFile.Clear()
End If
If separateSart Then
_startFlag = 0
RaiseEvent updateIcon(0)
Dim filename As String = separateMap.Keys(0)
filename = filename.Substring(filename.LastIndexOf("\") + 1)
filename = $" `CONFIG_XML` = '{filename}' "
FileMysqlRow = GetMysqlfiledata(_dbLoginStr, filename)
If FileMysqlRow.Count > 0 Then
SyncNumber.Add(0)
End If
FTPDownloadFile(separateMap, FileMysqlRow.Item(0))
FileMysqlRow.Clear()
separateMap.Clear()
SyncNumber.Clear()
separateSart = False
End If
cnt += 1
Thread.Sleep(1000)
End While
End Sub
'''' <summary>
'''' 获取指定文件夹下所有文件
'''' 获取同步文件夹文件
'''' </summary>
'''' <param name="dirpath"></param>
'Public Function Enumerationdirectory(dirpath As String) As List(Of String)
' If IO.Directory.Exists(dirpath) Then
' Dim filebufF() As String = IO.Directory.GetFiles(dirpath)
' If filebufF.Length > 0 Then
' _FilePath_li.AddRange(filebufF)
' End If
' Dim dirbuff As String = IO.Directory.GetDirectories(dirpath)
' _DirPah_li.AddRange(dirbuff)
' For Each partdir In dirbuff
' Enumerationdirectory(partdir)
' Next
' Else
' MessageBox.Show("同步文件夹不存在")
' End If
'End Function
Public Function Enumerationdirectory(dirpath As String) As List(Of String)
Dim filelist As New List(Of String)
Dim dirlist As New List(Of String)
If IO.Directory.Exists(dirpath) Then
Dim filebufF() As String = IO.Directory.GetFiles(dirpath)
If filebufF.Length > 0 Then
filelist.AddRange(filebufF)
End If
Dim dirbuff As String = IO.Directory.GetDirectories(dirpath)
dirlist.AddRange(dirbuff)
For Each partdir In dirbuff
filelist.AddRange(Enumerationdirectory(partdir))
Next
Else
MessageBox.Show("同步文件夹不存在")
End If
Return filelist
End Function
Public Function filetosqlfunction(ByRef _FilePath_li As List(Of String)) As List(Of Dictionary(Of String, String))
Dim loadFilerow As New List(Of Dictionary(Of String, String))
For Each filestr In _FilePath_li
' Dim filedata As New FileToSqlVariable
Dim clunm As New Dictionary(Of String, String)
Dim md5 As String = GetStringMd5(filestr)
Dim filedir As String = filestr.Substring(0, filestr.LastIndexOf"\" + 1)
Dim filename As String = filestr.Substring(filedir.Length, filestr.Length - filedir.Length)
clunm.Add("Directory", filedir)
clunm.Add("Available", 1)
clunm.Add("FileName", filename)
clunm.Add("UploadDateTime", Now.ToString("yyyy-MM-dd HH:mm:ss.fff"))
clunm.Add("MD5", md5)
loadFilerow.Add(clunm)
'filedata_li.Addfiledata
Next
_FilePath_li.Clear()
Return loadFilerow
End Function
''' <summary>
''' 获取数据库文件数据
''' </summary>
''' <param name="DbConnString"></param>
''' <returns></returns>
Public Function GetMysqlfiledata(DbConnString As String) As List(Of Dictionary(Of String, String))
'Dim sqlfile As New Dictionary(Of Integer, List(Of String))
Dim FileMysqlRow As New List(Of Dictionary(Of String, String))
Try
Dim dt As DataTable
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString)
db.Open()
dt = db.ExecuteDataTable(db.CmdHelper.SearchAll("tbl_model_file_data", $"Available = '1'"))
db.Close()
End Using
For Each dtrow As DataRow In dt.Rows
Dim clunm As New Dictionary(Of String, String)
For i As Integer = 0 To dt.Columns.Count - 1
'Console.WriteLine("argRoomTypeNodeIdx = " & dtrow.Item(i))
'If dtrow.Item(i).GetType = "DbNull" Then
' clunm.Add(dt.Columns(i).ColumnName, "")
' Continue For
'End If
clunm.Add(dt.Columns(i).ColumnName, dtrow.Item(i).ToString)
Next
FileMysqlRow.Add(clunm)
Next
Catch ex As Exception
End Try
Return FileMysqlRow
End Function
''' <summary>
'''
''' </summary>
''' <param name="DbConnString"></param>
''' <param name="where"></param>
''' <returns></returns>
Public Function GetMysqlfiledata(DbConnString As String, where As String) As List(Of Dictionary(Of String, String))
'Dim sqlfile As New Dictionary(Of Integer, List(Of String))
Dim FileMysqlRow As New List(Of Dictionary(Of String, String))
Try
Dim dt As DataTable
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString)
db.Open()
dt = db.ExecuteDataTable(db.CmdHelper.SearchAll("tbl_room_type_list", where))
db.Close()
End Using
For Each dtrow As DataRow In dt.Rows
Dim clunm As New Dictionary(Of String, String)
For i As Integer = 0 To dt.Columns.Count - 1
'Console.WriteLine("argRoomTypeNodeIdx = " & dtrow.Item(i))
'If dtrow.Item(i).GetType = "DbNull" Then
' clunm.Add(dt.Columns(i).ColumnName, "")
' Continue For
'End If
clunm.Add(dt.Columns(i).ColumnName, dtrow.Item(i).ToString)
Next
FileMysqlRow.Add(clunm)
Next
Catch ex As Exception
End Try
Return FileMysqlRow
End Function
Public SyncNumber As New List(Of Integer)
''' <summary>
''' 文件比对
''' </summary>
Public Function Proofreadfile(ByRef loadFilerow As List(Of Dictionary(Of String, String)), ByRef FileMysqlRow As List(Of Dictionary(Of String, String)))
'下载标记 False 下载
Dim SyncToLoadFile As New Dictionary(Of String, String)
For i As Integer = 0 To FileMysqlRow.Count - 1
Dim download_flag As Boolean = False
Dim serverRow As Dictionary(Of String, String) = FileMysqlRow.Item(i)
For j As Integer = 0 To loadFilerow.Count - 1
Dim loadRow As Dictionary(Of String, String) = loadFilerow.Item(j)
If FilecomparisonserverRow, loadRow Then
loadFilerow.RemoveAt(j)
download_flag = True
Exit For
Else
download_flag = False
Continue For
End If
Next
If download_flag Then
Continue For
Else
'Dim syncfile As New Dictionary(Of String, String)
''云文件完整路径
'Dim Syncpath = _FileMysqlRow.Item(i).Item("Directory") & "\" & _FileMysqlRow.Item(i).Item("FileName")
'云文件相对路径
Dim filepath = FileMysqlRow.Item(i).Item("Directory") & "\" & FileMysqlRow.Item(i).Item("XML_FileName")
'syncfile.Add(Syncpath, RelativePath)
Dim Loadfilepath As String = filepath.Replace("\Data\Model\", "")
SyncNumber.Add(i) '储存节点便于枚举云MD5值
SyncToLoadFile.Addfilepath, _SyncLoadDirPath & Loadfilepath
End If
Next
loadFilerow.Clear()
Return SyncToLoadFile
End Function
Public Function Filecomparison(sqlfile As Dictionary(Of String, String), loadfile As Dictionary(Of String, String)) As Boolean
Dim loadpath = loadfile.Item("Directory").Replace(_SyncLoadDirPath, "_\") & loadfile.Item("FileName")
Dim serverpath = sqlfile.Item("Directory").Replace("\Data\Model", "_") & "\" & sqlfile.Item("XML_FileName")
If loadpath.Equals(serverpath) AndAlso loadfile.Item("MD5").Equals(sqlfile.Item("XLM_MD5")) Then
Return True
End If
Return False
End Function
Public FtpHost As String = "blv-oa.com"
Public FtpPort As Integer = 50
Public FtpUser As String = "BLV_Studio"
Public FtpPwd As String = "37f5675t6R&5*"
''' <summary>
''' FTP下载
''' </summary>
Public Sub FTPDownloadFile(SyncToLoadFile As Dictionary(Of String, String), dic As Dictionary(Of String, String))
Try
UTSModule.UtsFtp.InitConnectParams(FtpPort, FtpUser, FtpPwd)
Dim ftp As UTSModule.UtsFtp = UTSModule.UtsFtp.CreateObject()
ftp.FtpHost = FtpHost
'For Each filepath In _SyncToLoadFile
'ftp.FtpDownload("/Data/Model/485Model/3.txt", _SyncLoadDirPath & "3.txt")
If ftp.FtpDownload(SyncToLoadFile, True) = 1 Then
If VerifyFileMD5(SyncToLoadFile.Values(0), dic.Item("CONFIG_XML_MD5")) Then
If VerifyFileMD5(SyncToLoadFile.Values(0), dic.Item("CONFIG_BIN_MD5")) Then
Else
_startFlag = 1
num = 600
RaiseEvent updateIcon(1)
Return
End If
Else
_startFlag = 1
num = 600
RaiseEvent updateIcon(1)
Return
End If
Else
_startFlag = 1
num = 600
RaiseEvent updateIcon(1)
Return
End If
'检验文件是否下载到本地,和确保下载的文件是数据库的文件
_startFlag = 2
num = 3600
RaiseEvent updateIcon(2)
Catch ex As Exception
_startFlag = 1
num = 600
RaiseEvent updateIcon(1)
Return
'AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
End Sub
Public Sub FTPDownloadFile(SyncToLoadFile As Dictionary(Of String, String), FileMysqlRow As List(Of Dictionary(Of String, String)))
Try
UTSModule.UtsFtp.InitConnectParams(FtpPort, FtpUser, FtpPwd)
Dim ftp As UTSModule.UtsFtp = UTSModule.UtsFtp.CreateObject()
ftp.FtpHost = FtpHost
'For Each filepath In _SyncToLoadFile
If SyncToLoadFile.Count = 0 Then
_startFlag = 2
num = 3600
RaiseEvent updateIcon(2)
Return
End If
'ftp.FtpDownload("/Data/Model/485Model/3.txt", _SyncLoadDirPath & "3.txt")
If ftp.FtpDownload(SyncToLoadFile) = 1 Then
For i As Integer = 0 To SyncToLoadFile.Count - 1
'检验文件是否下载到本地,和确保下载的文件是数据库的文件
If VerifyFileMD5(SyncToLoadFile.Values(i), FileMysqlRow.Item(SyncNumber.Item(i)).Item("XLM_MD5")) Then
Else
_startFlag = 1
num = 600
RaiseEvent updateIcon(1)
Return
End If
Next
Else
_startFlag = 1
num = 600
RaiseEvent updateIcon(1)
Return
End If
_startFlag = 2
num = 3600
RaiseEvent updateIcon(2)
Catch ex As Exception
_startFlag = 1
num = 600
RaiseEvent updateIcon(1)
Return
'AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
End Sub
Public Function FtpfileDownload(dirpath As String, filename As String, md5 As String) As Boolean
UTSModule.UtsFtp.InitConnectParams(FtpPort, FtpUser, FtpPwd)
Dim ftp As UTSModule.UtsFtp = UTSModule.UtsFtp.CreateObject()
ftp.FtpHost = FtpHost
If ftp.FtpDownload(dirpath, filename) = 1 Then
If VerifyFileMD5filename, md5 Then
Return True
Else
Return False
End If
Else
Return False
End If
End Function
Public Function VerifyFileMD5(filePath As String, fileMd5 As String) As Boolean
If IO.File.Exists(filePath) Then
Dim loadMD5 As String = GetStringMd5(filePath)
fileMd5=fileMd5.ToUpper
loadMD5 = loadMD5.ToUpper
If fileMd5.Equals(loadMD5) Then
Return True
Else
Return False
End If
Else
Return False
End If
End Function
Public Function GetStringMd5(filePath As String) As String
Dim dataFile() As Byte = File.ReadAllBytes(filePath)
Dim databuff As Byte() = MD5.Create().ComputeHash(dataFile)
Dim MD5str As String = BitConverter.ToString(databuff)
Return MD5str.Replace("-", "")
'Console.WriteLine($"md5-1:{MD5str.Replace("-", "")}")
End Function
Public Function Utf8ToGB2312(utf8str As String) As String
Dim temp() As Byte
temp = Text.Encoding.Default.GetBytes(utf8str)
Text.Encoding.Convert(Text.Encoding.GetEncoding("utf-8"), Text.Encoding.GetEncoding("gb2312"), temp)
Return Text.Encoding.Default.GetString(temp)
End Function
Public Event updateIcon(ftpflag As Integer)
End Class

489
Form1.Designer.vb generated Normal file
View File

@@ -0,0 +1,489 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class Form1
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
Me.SplitContainer1 = New System.Windows.Forms.SplitContainer()
Me.GroupBox2 = New System.Windows.Forms.GroupBox()
Me.Button10 = New System.Windows.Forms.Button()
Me.Button11 = New System.Windows.Forms.Button()
Me.Button12 = New System.Windows.Forms.Button()
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
Me.Button6 = New System.Windows.Forms.Button()
Me.Button7 = New System.Windows.Forms.Button()
Me.Button8 = New System.Windows.Forms.Button()
Me.GroupBox3 = New System.Windows.Forms.GroupBox()
Me.Button3 = New System.Windows.Forms.Button()
Me.Button2 = New System.Windows.Forms.Button()
Me.Button1 = New System.Windows.Forms.Button()
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip()
Me.ToolStripLabel1 = New System.Windows.Forms.ToolStripLabel()
Me.ToolStripLabel2 = New System.Windows.Forms.ToolStripLabel()
Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripButton2 = New System.Windows.Forms.ToolStripButton()
Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripButton1 = New System.Windows.Forms.ToolStripButton()
Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator()
Me.GroupBox4 = New System.Windows.Forms.GroupBox()
Me.Grid1 = New FlexCell.Grid()
Me.Label1 = New System.Windows.Forms.Label()
Me.TextBox1 = New System.Windows.Forms.TextBox()
Me.TextBox2 = New System.Windows.Forms.TextBox()
Me.Label2 = New System.Windows.Forms.Label()
Me.GroupBox5 = New System.Windows.Forms.GroupBox()
Me.Button14 = New System.Windows.Forms.Button()
Me.Button15 = New System.Windows.Forms.Button()
Me.Button16 = New System.Windows.Forms.Button()
Me.Button9 = New System.Windows.Forms.Button()
Me.Button5 = New System.Windows.Forms.Button()
Me.Button4 = New System.Windows.Forms.Button()
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainer1.Panel1.SuspendLayout()
Me.SplitContainer1.Panel2.SuspendLayout()
Me.SplitContainer1.SuspendLayout()
Me.GroupBox2.SuspendLayout()
Me.GroupBox1.SuspendLayout()
Me.GroupBox3.SuspendLayout()
Me.ToolStrip1.SuspendLayout()
Me.GroupBox4.SuspendLayout()
Me.GroupBox5.SuspendLayout()
Me.SuspendLayout()
'
'SplitContainer1
'
Me.SplitContainer1.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainer1.Location = New System.Drawing.Point(0, 0)
Me.SplitContainer1.Name = "SplitContainer1"
'
'SplitContainer1.Panel1
'
Me.SplitContainer1.Panel1.Controls.Add(Me.GroupBox5)
Me.SplitContainer1.Panel1.Controls.Add(Me.GroupBox2)
Me.SplitContainer1.Panel1.Controls.Add(Me.GroupBox1)
Me.SplitContainer1.Panel1.Controls.Add(Me.GroupBox3)
Me.SplitContainer1.Panel1.Font = New System.Drawing.Font("宋体", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
'
'SplitContainer1.Panel2
'
Me.SplitContainer1.Panel2.Controls.Add(Me.Grid1)
Me.SplitContainer1.Panel2.Controls.Add(Me.GroupBox4)
Me.SplitContainer1.Panel2.Controls.Add(Me.ToolStrip1)
Me.SplitContainer1.Size = New System.Drawing.Size(1339, 795)
Me.SplitContainer1.SplitterDistance = 422
Me.SplitContainer1.TabIndex = 0
'
'GroupBox2
'
Me.GroupBox2.Controls.Add(Me.Button9)
Me.GroupBox2.Controls.Add(Me.Button10)
Me.GroupBox2.Controls.Add(Me.Button11)
Me.GroupBox2.Controls.Add(Me.Button12)
Me.GroupBox2.Dock = System.Windows.Forms.DockStyle.Top
Me.GroupBox2.Font = New System.Drawing.Font("宋体", 14.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.GroupBox2.Location = New System.Drawing.Point(0, 137)
Me.GroupBox2.Name = "GroupBox2"
Me.GroupBox2.Size = New System.Drawing.Size(422, 73)
Me.GroupBox2.TabIndex = 5
Me.GroupBox2.TabStop = False
Me.GroupBox2.Text = "固件"
'
'Button10
'
Me.Button10.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button10.Location = New System.Drawing.Point(147, 28)
Me.Button10.Name = "Button10"
Me.Button10.Size = New System.Drawing.Size(86, 31)
Me.Button10.TabIndex = 12
Me.Button10.Text = "预览主机列表"
Me.Button10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button10.UseVisualStyleBackColor = True
'
'Button11
'
Me.Button11.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button11.Location = New System.Drawing.Point(239, 28)
Me.Button11.Name = "Button11"
Me.Button11.Size = New System.Drawing.Size(86, 31)
Me.Button11.TabIndex = 11
Me.Button11.Text = "删除主机模型"
Me.Button11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button11.UseVisualStyleBackColor = True
'
'Button12
'
Me.Button12.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button12.Location = New System.Drawing.Point(331, 28)
Me.Button12.Name = "Button12"
Me.Button12.Size = New System.Drawing.Size(86, 31)
Me.Button12.TabIndex = 10
Me.Button12.Text = "选择设备模型"
Me.Button12.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button12.UseVisualStyleBackColor = True
'
'GroupBox1
'
Me.GroupBox1.Controls.Add(Me.Button5)
Me.GroupBox1.Controls.Add(Me.Button6)
Me.GroupBox1.Controls.Add(Me.Button7)
Me.GroupBox1.Controls.Add(Me.Button8)
Me.GroupBox1.Dock = System.Windows.Forms.DockStyle.Top
Me.GroupBox1.Font = New System.Drawing.Font("宋体", 14.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.GroupBox1.Location = New System.Drawing.Point(0, 69)
Me.GroupBox1.Name = "GroupBox1"
Me.GroupBox1.Size = New System.Drawing.Size(422, 68)
Me.GroupBox1.TabIndex = 4
Me.GroupBox1.TabStop = False
Me.GroupBox1.Text = "设备"
'
'Button6
'
Me.Button6.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button6.Location = New System.Drawing.Point(147, 28)
Me.Button6.Name = "Button6"
Me.Button6.Size = New System.Drawing.Size(86, 31)
Me.Button6.TabIndex = 8
Me.Button6.Text = "预览主机列表"
Me.Button6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button6.UseVisualStyleBackColor = True
'
'Button7
'
Me.Button7.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button7.Location = New System.Drawing.Point(239, 28)
Me.Button7.Name = "Button7"
Me.Button7.Size = New System.Drawing.Size(86, 31)
Me.Button7.TabIndex = 7
Me.Button7.Text = "删除主机模型"
Me.Button7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button7.UseVisualStyleBackColor = True
'
'Button8
'
Me.Button8.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button8.Location = New System.Drawing.Point(331, 28)
Me.Button8.Name = "Button8"
Me.Button8.Size = New System.Drawing.Size(86, 31)
Me.Button8.TabIndex = 6
Me.Button8.Text = "选择设备模型"
Me.Button8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button8.UseVisualStyleBackColor = True
'
'GroupBox3
'
Me.GroupBox3.Controls.Add(Me.Button4)
Me.GroupBox3.Controls.Add(Me.Button3)
Me.GroupBox3.Controls.Add(Me.Button2)
Me.GroupBox3.Controls.Add(Me.Button1)
Me.GroupBox3.Dock = System.Windows.Forms.DockStyle.Top
Me.GroupBox3.Font = New System.Drawing.Font("宋体", 14.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.GroupBox3.Location = New System.Drawing.Point(0, 0)
Me.GroupBox3.Name = "GroupBox3"
Me.GroupBox3.Size = New System.Drawing.Size(422, 69)
Me.GroupBox3.TabIndex = 2
Me.GroupBox3.TabStop = False
Me.GroupBox3.Text = "主机"
'
'Button3
'
Me.Button3.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button3.Location = New System.Drawing.Point(147, 28)
Me.Button3.Name = "Button3"
Me.Button3.Size = New System.Drawing.Size(86, 31)
Me.Button3.TabIndex = 3
Me.Button3.Text = "预览主机列表"
Me.Button3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button3.UseVisualStyleBackColor = True
'
'Button2
'
Me.Button2.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button2.Location = New System.Drawing.Point(239, 28)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(86, 31)
Me.Button2.TabIndex = 2
Me.Button2.Text = "删除主机模型"
Me.Button2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button2.UseVisualStyleBackColor = True
'
'Button1
'
Me.Button1.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button1.Location = New System.Drawing.Point(331, 28)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(86, 31)
Me.Button1.TabIndex = 1
Me.Button1.Text = "选择主机模型"
Me.Button1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button1.UseVisualStyleBackColor = True
'
'ToolStrip1
'
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripLabel1, Me.ToolStripLabel2, Me.ToolStripSeparator2, Me.ToolStripButton2, Me.ToolStripSeparator1, Me.ToolStripButton1, Me.ToolStripSeparator3})
Me.ToolStrip1.Location = New System.Drawing.Point(0, 0)
Me.ToolStrip1.Name = "ToolStrip1"
Me.ToolStrip1.Size = New System.Drawing.Size(913, 25)
Me.ToolStrip1.TabIndex = 0
Me.ToolStrip1.Text = "ToolStrip1"
'
'ToolStripLabel1
'
Me.ToolStripLabel1.Name = "ToolStripLabel1"
Me.ToolStripLabel1.Size = New System.Drawing.Size(59, 22)
Me.ToolStripLabel1.Text = "文件名称:"
'
'ToolStripLabel2
'
Me.ToolStripLabel2.AutoSize = False
Me.ToolStripLabel2.Name = "ToolStripLabel2"
Me.ToolStripLabel2.Size = New System.Drawing.Size(500, 22)
'
'ToolStripSeparator2
'
Me.ToolStripSeparator2.Name = "ToolStripSeparator2"
Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 25)
'
'ToolStripButton2
'
Me.ToolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
Me.ToolStripButton2.Image = CType(resources.GetObject("ToolStripButton2.Image"), System.Drawing.Image)
Me.ToolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta
Me.ToolStripButton2.Name = "ToolStripButton2"
Me.ToolStripButton2.Size = New System.Drawing.Size(60, 22)
Me.ToolStripButton2.Text = "删除文件"
'
'ToolStripSeparator1
'
Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25)
'
'ToolStripButton1
'
Me.ToolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text
Me.ToolStripButton1.Image = CType(resources.GetObject("ToolStripButton1.Image"), System.Drawing.Image)
Me.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta
Me.ToolStripButton1.Name = "ToolStripButton1"
Me.ToolStripButton1.Size = New System.Drawing.Size(60, 22)
Me.ToolStripButton1.Text = "上传文件"
'
'ToolStripSeparator3
'
Me.ToolStripSeparator3.Name = "ToolStripSeparator3"
Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 25)
'
'GroupBox4
'
Me.GroupBox4.Controls.Add(Me.TextBox2)
Me.GroupBox4.Controls.Add(Me.Label2)
Me.GroupBox4.Controls.Add(Me.TextBox1)
Me.GroupBox4.Controls.Add(Me.Label1)
Me.GroupBox4.Dock = System.Windows.Forms.DockStyle.Top
Me.GroupBox4.Location = New System.Drawing.Point(0, 25)
Me.GroupBox4.Name = "GroupBox4"
Me.GroupBox4.Size = New System.Drawing.Size(913, 73)
Me.GroupBox4.TabIndex = 6
Me.GroupBox4.TabStop = False
Me.GroupBox4.Text = "上传信息"
'
'Grid1
'
Me.Grid1.DefaultFont = New System.Drawing.Font("宋体", 9.0!)
Me.Grid1.Dock = System.Windows.Forms.DockStyle.Fill
Me.Grid1.Location = New System.Drawing.Point(0, 98)
Me.Grid1.MouseWheelSpeed = CType(3, Short)
Me.Grid1.Name = "Grid1"
Me.Grid1.Size = New System.Drawing.Size(913, 697)
Me.Grid1.TabIndex = 7
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(6, 22)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(53, 12)
Me.Label1.TabIndex = 0
Me.Label1.Text = "上传用户"
'
'TextBox1
'
Me.TextBox1.Location = New System.Drawing.Point(8, 44)
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(116, 21)
Me.TextBox1.TabIndex = 1
'
'TextBox2
'
Me.TextBox2.Location = New System.Drawing.Point(191, 19)
Me.TextBox2.Multiline = True
Me.TextBox2.Name = "TextBox2"
Me.TextBox2.Size = New System.Drawing.Size(714, 48)
Me.TextBox2.TabIndex = 3
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(132, 22)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(53, 12)
Me.Label2.TabIndex = 2
Me.Label2.Text = "上传备注"
'
'GroupBox5
'
Me.GroupBox5.Controls.Add(Me.Button14)
Me.GroupBox5.Controls.Add(Me.Button15)
Me.GroupBox5.Controls.Add(Me.Button16)
Me.GroupBox5.Dock = System.Windows.Forms.DockStyle.Top
Me.GroupBox5.Font = New System.Drawing.Font("宋体", 14.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.GroupBox5.Location = New System.Drawing.Point(0, 210)
Me.GroupBox5.Name = "GroupBox5"
Me.GroupBox5.Size = New System.Drawing.Size(422, 68)
Me.GroupBox5.TabIndex = 6
Me.GroupBox5.TabStop = False
Me.GroupBox5.Text = "基类"
'
'Button14
'
Me.Button14.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button14.Location = New System.Drawing.Point(147, 28)
Me.Button14.Name = "Button14"
Me.Button14.Size = New System.Drawing.Size(86, 31)
Me.Button14.TabIndex = 8
Me.Button14.Text = "预览主机列表"
Me.Button14.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button14.UseVisualStyleBackColor = True
'
'Button15
'
Me.Button15.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button15.Location = New System.Drawing.Point(239, 28)
Me.Button15.Name = "Button15"
Me.Button15.Size = New System.Drawing.Size(86, 31)
Me.Button15.TabIndex = 7
Me.Button15.Text = "删除主机模型"
Me.Button15.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button15.UseVisualStyleBackColor = True
'
'Button16
'
Me.Button16.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button16.Location = New System.Drawing.Point(331, 28)
Me.Button16.Name = "Button16"
Me.Button16.Size = New System.Drawing.Size(86, 31)
Me.Button16.TabIndex = 6
Me.Button16.Text = "选择设备模型"
Me.Button16.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button16.UseVisualStyleBackColor = True
'
'Button9
'
Me.Button9.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button9.Location = New System.Drawing.Point(12, 28)
Me.Button9.Name = "Button9"
Me.Button9.Size = New System.Drawing.Size(129, 31)
Me.Button9.TabIndex = 13
Me.Button9.Text = "预览设备与固件列表"
Me.Button9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button9.UseVisualStyleBackColor = True
'
'Button5
'
Me.Button5.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button5.Location = New System.Drawing.Point(12, 28)
Me.Button5.Name = "Button5"
Me.Button5.Size = New System.Drawing.Size(129, 31)
Me.Button5.TabIndex = 9
Me.Button5.Text = "预览设备与固件列表"
Me.Button5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button5.UseVisualStyleBackColor = True
'
'Button4
'
Me.Button4.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button4.Location = New System.Drawing.Point(12, 28)
Me.Button4.Name = "Button4"
Me.Button4.Size = New System.Drawing.Size(129, 31)
Me.Button4.TabIndex = 4
Me.Button4.Text = "预览设备与固件列表"
Me.Button4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button4.UseVisualStyleBackColor = True
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1339, 795)
Me.Controls.Add(Me.SplitContainer1)
Me.Name = "Form1"
Me.Text = "设备与固件"
Me.SplitContainer1.Panel1.ResumeLayout(False)
Me.SplitContainer1.Panel2.ResumeLayout(False)
Me.SplitContainer1.Panel2.PerformLayout()
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainer1.ResumeLayout(False)
Me.GroupBox2.ResumeLayout(False)
Me.GroupBox1.ResumeLayout(False)
Me.GroupBox3.ResumeLayout(False)
Me.ToolStrip1.ResumeLayout(False)
Me.ToolStrip1.PerformLayout()
Me.GroupBox4.ResumeLayout(False)
Me.GroupBox4.PerformLayout()
Me.GroupBox5.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
Friend WithEvents SplitContainer1 As SplitContainer
Friend WithEvents GroupBox3 As GroupBox
Friend WithEvents GroupBox2 As GroupBox
Friend WithEvents GroupBox1 As GroupBox
Friend WithEvents Button1 As Button
Friend WithEvents Button3 As Button
Friend WithEvents Button2 As Button
Friend WithEvents Button6 As Button
Friend WithEvents Button7 As Button
Friend WithEvents Button8 As Button
Friend WithEvents Button10 As Button
Friend WithEvents Button11 As Button
Friend WithEvents Button12 As Button
Friend WithEvents ToolStrip1 As ToolStrip
Friend WithEvents ToolStripLabel1 As ToolStripLabel
Friend WithEvents ToolStripLabel2 As ToolStripLabel
Friend WithEvents ToolStripSeparator2 As ToolStripSeparator
Friend WithEvents ToolStripButton2 As ToolStripButton
Friend WithEvents ToolStripSeparator1 As ToolStripSeparator
Friend WithEvents ToolStripButton1 As ToolStripButton
Friend WithEvents ToolStripSeparator3 As ToolStripSeparator
Friend WithEvents Grid1 As FlexCell.Grid
Friend WithEvents GroupBox4 As GroupBox
Friend WithEvents TextBox2 As TextBox
Friend WithEvents Label2 As Label
Friend WithEvents TextBox1 As TextBox
Friend WithEvents Label1 As Label
Friend WithEvents GroupBox5 As GroupBox
Friend WithEvents Button14 As Button
Friend WithEvents Button15 As Button
Friend WithEvents Button16 As Button
Friend WithEvents Button9 As Button
Friend WithEvents Button5 As Button
Friend WithEvents Button4 As Button
End Class

157
Form1.resx Normal file
View File

@@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="ToolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="ToolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>37</value>
</metadata>
</root>

687
Form1.vb Normal file
View File

@@ -0,0 +1,687 @@
Imports System.IO
Imports System.Text
Imports System.Xml
Imports DevModeFirmwareInfo.UTSModule
Imports FlexCell
Imports MySql.Data.MySqlClient
Public Class Form1
Public DbConnString As String = "Server=blv-cloud-db.mysql.rds.aliyuncs.com;Port=3307;Database=blv_rcu_db;Uid=blv_rcu;Pwd=fnadiaJDIJ7546;charset=utf8;"
'固件量
Public GFirmwareli As Dictionary(Of String, String)
'主机数量
Public GHostli As Dictionary(Of String, String)
'设备数量
Public GDevli As Dictionary(Of String, String)
Public FtpHost As String = "blv-oa.com"
Public FtpPort As Integer = 50
Public FtpUser As String = "BLV_Studio"
Public FtpPwd As String = "37f5675t6R&5*"
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim xmlFilePath As String = SelectXmlFile()
If String.IsNullOrEmpty(xmlFilePath) Then
Return
End If
Dim strValue As String = XmlFieldExistsf(xmlFilePath, "DEV_NAME")
If strValue.Trim.ToLower.Equals("blv_c12") Then
ToolStripLabel2.Text = xmlFilePath.Substring(xmlFilePath.LastIndexOf("\") + 1)
ToolStripLabel2.Tag = 1
ToolStripLabel1.Tag = xmlFilePath
Dim Hostli = New Dictionary(Of String, String)()
Dim intValue As Integer = XmlFieldExists(xmlFilePath, "DEV_DATA_MODEL_VER")
Hostli.Add(ToolStripLabel2.Text, intValue.ToString())
LoadData(GFirmwareli, Hostli, GDevli)
Else
MessageBox.Show("请选择正确的xml文件")
End If
'将文件路径截取文件名称设置到ToolStripLabel2文本中
End Sub
Public Function XmlFieldExists(xmlFile As String, fieldName As String) As Integer
Try
Dim doc As New XmlDocument()
doc.Load(xmlFile)
' 任意深度查找第一个匹配节点
Dim node As XmlNode = doc.SelectSingleNode($"//{fieldName}")
If node IsNot Nothing Then
'取到该节点的值
Dim value As String = node.InnerText.Trim()
'将其转int
Dim intValue As Integer = 0
Dim d As Double = 0
Double.TryParse(value, d)
Integer.TryParse(d, intValue)
Return intValue
Else
Return 0
End If
Catch ex As Exception
' 文件不存在、XML 格式错误、权限问题等都算“找不到”
Return 0
End Try
End Function
Public Function XmlFieldExistsf(xmlFile As String, fieldName As String) As String
Try
Dim doc As New XmlDocument()
doc.Load(xmlFile)
' 任意深度查找第一个匹配节点
Dim node As XmlNode = doc.SelectSingleNode($"//{fieldName}")
If node IsNot Nothing Then
'取到该节点的值
Dim value As String = node.InnerText
'将其转int
Return value
Else
Return ""
End If
Catch ex As Exception
' 文件不存在、XML 格式错误、权限问题等都算“找不到”
Return ""
End Try
End Function
'加载Grid1数据
Public Sub LoadData(Firmwareli As Dictionary(Of String, String), Hostli As Dictionary(Of String, String), Devli As Dictionary(Of String, String))
'嵌套遍历三个列表
initdevmodefirmware()
For Each Firmware In Firmwareli
For Each Host In Hostli
For Each Dev In Devli
Grid1.AddItem("")
Grid1.Cell(Grid1.Rows - 1, 0).Text = Grid1.Rows - 1
Grid1.Cell(Grid1.Rows - 1, 1).Text = Host.Value
Grid1.Cell(Grid1.Rows - 1, 2).Text = Host.Key
Grid1.Cell(Grid1.Rows - 1, 3).Text = Firmware.Value
Grid1.Cell(Grid1.Rows - 1, 4).Text = Firmware.Key
Grid1.Cell(Grid1.Rows - 1, 5).Text = Dev.Value
Grid1.Cell(Grid1.Rows - 1, 6).Text = Dev.Key
Grid1.Cell(Grid1.Rows - 1, 7).Text = "1"
Next
Next
Next
End Sub
Public Sub initdevmodefirmware()
With Grid1
.NewFile()
.ExtendLastCol = True
.DisplayRowNumber = True
.Rows = 1
.Cols = 8
For i As Integer = 0 To .Cols - 1
.Column(i).Alignment = AlignmentEnum.CenterCenter
.Column(i).Locked = True
Next
.Cell(0, 0).Text = "序号"
.Column(0).Width = 30
.Cell(0, 1).Text = "主机版本"
.Column(1).Width = 30
.Cell(0, 2).Text = "主机"
.Column(2).Width = 200
.Cell(0, 3).Text = "固件版本"
.Column(3).Width = 30
.Cell(0, 4).Text = "固件"
.Column(4).Width = 200
.Cell(0, 5).Text = "设备版本"
.Column(5).Width = 30
.Cell(0, 6).Text = "设备"
.Column(6).Width = 200
.Cell(0, 7).Text = "是否有效"
.Column(7).CellType = CellTypeEnum.CheckBox
.Column(7).Locked = False
End With
End Sub
''' <summary>
''' 弹出文件选择对话框,只允许选择 .xml 文件。
''' </summary>
''' <returns>选中的 .xml 文件的完整路径;如果用户取消,则返回 Nothing。</returns>
Public Function SelectXmlFile() As String
Using ofd As New OpenFileDialog()
ofd.Title = "请选择 XML 文件"
ofd.Filter = "XML 文件 (*.xml)|*.xml"
ofd.Multiselect = False
ofd.CheckFileExists = True
ofd.CheckPathExists = True
If ofd.ShowDialog() = DialogResult.OK Then
Return ofd.FileName
Else
Return Nothing
End If
End Using
End Function
Public Function SelecthexFile() As String
'C1F_A_L4_42_251110_NM
Using ofd As New OpenFileDialog()
ofd.Title = "请选择 XML 文件"
ofd.Filter = "XML 文件 (*.hex)|*.HEX"
ofd.Multiselect = False
ofd.CheckFileExists = True
ofd.CheckPathExists = True
If ofd.ShowDialog() = DialogResult.OK Then
Return ofd.FileName
Else
Return Nothing
End If
End Using
End Function
'查询主机、固件、设备 数量函数
Public Sub QueryCount()
GFirmwareli = New Dictionary(Of String, String)()
GHostli = New Dictionary(Of String, String)()
GDevli = New Dictionary(Of String, String)()
Dim ExecText As String = "SELECT HostVersion, HostName
FROM (
SELECT HostVersion,
HostName,
ROW_NUMBER() OVER (PARTITION BY HostName ORDER BY ID) AS rn
FROM tbl_devmode_firmware_info
) t
WHERE rn = 1;"
Dim dt As DataTable
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString)
Try
db.Open()
dt = db.ExecuteDataTable(ExecText)
'将查询到的值赋给全局变量
For Each row As DataRow In dt.Rows
GHostli.Add(row("HostName").ToString(), row("HostVersion").ToString())
Next
ExecText = "SELECT FirmwareVersion, FirmwareName
FROM (
SELECT FirmwareVersion,
FirmwareName,
ROW_NUMBER() OVER (PARTITION BY FirmwareName ORDER BY ID) AS rn
FROM tbl_devmode_firmware_info
) t
WHERE rn = 1;"
dt = db.ExecuteDataTable(ExecText)
For Each row As DataRow In dt.Rows
GFirmwareli.Add(row("FirmwareName").ToString(), row("FirmwareVersion").ToString())
Next
ExecText = "SELECT DevVersion, DevName
FROM (
SELECT DevVersion,
DevName,
ROW_NUMBER() OVER (PARTITION BY DevName ORDER BY ID) AS rn
FROM tbl_devmode_firmware_info
) t
WHERE rn = 1;;"
dt = db.ExecuteDataTable(ExecText)
For Each row As DataRow In dt.Rows
GDevli.Add(row("DevName").ToString(), row("DevVersion").ToString())
Next
db.Close()
Catch ex As Exception
db.Close()
End Try
End Using
End Sub
'查询tbl_devmode_firmware_info 表中的数据并显示在FlexCell控件中
Public Sub QueryData(tablename)
Dim ExecText As String = $"SELECT * FROM {tablename} ORDER BY ID DESC;"
Dim dt As DataTable
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString)
Try
db.Open()
dt = db.ExecuteDataTable(ExecText)
db.Close()
Grid1.DataSource = dt
Grid1.Locked = True
Catch ex As Exception
db.Close()
End Try
End Using
End Sub
Public Sub QueryData2(tablename)
Dim ExecText As String = $"SELECT * FROM {tablename} ORDER BY MFD_ID DESC;"
Dim dt As DataTable
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString)
Try
db.Open()
dt = db.ExecuteDataTable(ExecText)
db.Close()
Grid1.DataSource = dt
Grid1.Locked = True
Catch ex As Exception
db.Close()
End Try
End Using
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
UtsFtp.InitConnectParams(FtpPort, FtpUser, FtpPwd)
QueryCount()
QueryData("tbl_devmode_firmware_info")
End Sub
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
Dim xmlFilePath As String = SelectXmlFile()
If String.IsNullOrEmpty(xmlFilePath) Then
Return
End If
Dim strValue As String = XmlFieldExistsf(xmlFilePath, "DEV_INTERFACE")
If strValue.Trim.ToLower.Equals("RS485Active".ToLower) OrElse strValue.Trim.ToLower.Equals("VirtualObject".ToLower) OrElse strValue.Trim.ToLower.Equals("RS485Polling".ToLower) Then
ToolStripLabel2.Text = xmlFilePath.Substring(xmlFilePath.LastIndexOf("\") + 1)
ToolStripLabel2.Tag = 2
ToolStripLabel1.Tag = xmlFilePath
Dim Devli = New Dictionary(Of String, String)()
Dim intValue As Integer = XmlFieldExists(xmlFilePath, "DEV_DATA_MODEL_VER")
Devli.Add(ToolStripLabel2.Text, intValue.ToString())
LoadData(GFirmwareli, GHostli, Devli)
Else
MessageBox.Show("请选择正确的xml文件")
End If
End Sub
Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
Dim xmlFilePath As String = SelecthexFile()
If String.IsNullOrEmpty(xmlFilePath) Then
Return
End If
Dim strValue As String = xmlFilePath.Substring(xmlFilePath.LastIndexOf("\") + 1)
If IsFirmwareNameValid(strValue) Then
Dim buff1 As String() = strValue.Split("_")
ToolStripLabel2.Text = strValue
ToolStripLabel2.Tag = 3
ToolStripLabel1.Tag = xmlFilePath
Dim Firmwareli = New Dictionary(Of String, String)()
Dim intValue As Integer = Hex2ToInt(buff1(3).ToString)
Firmwareli.Add(ToolStripLabel2.Text, intValue.ToString())
LoadData(Firmwareli, GHostli, GDevli)
Else
MessageBox.Show("请选择正确的固件文件")
End If
'C1F_A_L4_42_251110_NM
'判断文件名称是否合法
End Sub
'判断固件文件名称是否合法函数
Private Function IsFirmwareNameValid(ByVal FirmwareName As String) As Boolean
Dim buff1 As String() = FirmwareName.ToLower.Replace(".hex", "").Split("_")
If buff1.Length = 6 AndAlso buff1(1).ToLower.Equals("a") AndAlso buff1(0).ToLower.Equals("c1f") Then
If buff1(5).ToLower.Equals("m") Or buff1(5).ToLower.Equals("nm") Then
If buff1(2).ToLower.Equals("l2") Or buff1(2).ToLower.Equals("l4") Then
If IsNumeric(Hex2ToInt(buff1(3).ToString)) AndAlso IsNumeric(buff1(4)) Then
Return True
Else
Return False
End If
Else
Return False
End If
Else
Return False
End If
Else
Return False
End If
End Function
Public Function Hex2ToInt(ByVal hex2 As String) As Integer
If hex2 Is Nothing OrElse hex2.Length <> 2 Then Return -1
Dim v As Byte
If Byte.TryParse(hex2, Globalization.NumberStyles.HexNumber, Nothing, v) Then
Return CInt(v)
End If
Return -1
End Function
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
Dim intag As Integer = ToolStripLabel2.Tag
Select Case intag
Case 1
UploadHostFile()
Case 2
UploadDEvFile()
Case 3
UploadFirmwareFile()
Case > 3
MsgBox("发布失败,未设置设备有效固件")
End Select
QueryCount()
QueryData("tbl_devmode_firmware_info")
End Sub
'上传固件文件函数
Private Sub UploadFirmwareFile()
''弹出提示询问是否填写完设备有效固件
If MsgBox("是否填写完设备有效固件", MsgBoxStyle.YesNo, "提示") = MsgBoxResult.Yes Then
Dim loadFilePath As String = ToolStripLabel1.Tag
Dim hostFilePath As String = $"\Data\Firmware\{ToolStripLabel2.Text}" '485Model \Data\Firmware\
'判断上传者是否为空
If String.IsNullOrEmpty(TextBox1.Text) Then
MsgBox("请填写上传者")
Return
End If
If String.IsNullOrEmpty(TextBox2.Text) Then
MsgBox("备注不能为空!请填写备注!")
Return
End If
'判断文件是否已在服务器
If UtsFtp.CreateObject.FtpFileExists(hostFilePath) Then
MsgBox($"服务器已存在文件<{ToolStripLabel2.Text}>")
Return
End If
Try
If UtsFtp.CreateObject.FtpUpload2(hostFilePath, loadFilePath) Then
'遍历表格
' Dim li As List(Of String) = New List(Of String)()
Dim rowstr As String = ""
Dim UserName = TextBox1.Text.Trim
Dim UpTime = Now.ToString("yyyy-MM-dd HH:mm:ss.fff")
Dim FirmwareEnable As Integer = 0
Dim HostVersion FirmwareVersion DevVersion As String
Dim HostName FirmwareName DevName As String
Dim md5 As String = GetStringMd5(loadFilePath)
Dim colNames As New StringBuilder
Dim buf As String() = ToolStripLabel2.Text.Split("_")
Dim mac As String = GetMACaddress()
Dim filepazth = $"\Data\Firmware\"
filepazth = filepazth.Replace("\", "\\")
For i As Integer = 1 To Grid1.Rows - 1
HostVersion = Grid1.Cell(i, 1).Text
HostName = Grid1.Cell(i, 2).Text
FirmwareVersion = Grid1.Cell(i, 3).Text
FirmwareName = Grid1.Cell(i, 4).Text
DevVersion = Grid1.Cell(i, 5).Text
DevName = Grid1.Cell(i, 6).Text
If Grid1.Cell(i, 7).Text.Equals("true") Or Grid1.Cell(i, 7).Text.Equals("1") Then
FirmwareEnable = 1
Else
FirmwareEnable = 0
End If
rowstr = $"INSERT INTO `blv_rcu_db`.`tbl_devmode_firmware_info` (`UserName`,`UpTime`,`FirmwareEnable`,`HostVersion`,`HostName`,`FirmwareVersion`,`FirmwareName`,`DevName`,`DevVersion`) VALUES ('{UserName}','{UpTime}',{FirmwareEnable},{HostVersion},'{HostName}',{FirmwareVersion},'{FirmwareName}','{DevName}',{DevVersion} );{vbCrLf}"
'li.Add(rowstr)
colNames.Append(rowstr)
Next
rowstr = $"INSERT INTO `blv_rcu_db`.`tbl_firmware_upload_logs` (`DateTime`,`AppType`,`FilePath`,`FileName`,`Ver`,`MD5Val`,`Handler`,`Remark`,`PC_MAC`,`PC_NAME`,`IsValid`,`Luncher_Ver`,`HOTEL_ID`,`ROOM_TYPE_ID`) VALUES ('{UpTime}','{"App_Cfg"}','{filepazth}','{ToolStripLabel2.Text}','{FirmwareVersion}','{md5}','{UserName}','{TextBox2.Text.Trim}','{mac}','{System.Environment.UserName}',1,'C1_L4',0,0)"
colNames.Append(rowstr)
Add_room_type_circuit_powers(colNames.ToString)
MsgBox("上传成功")
Else
MsgBox("文件上传失败!")
Return
End If
Catch ex As Exception
MsgBox($"文件上传失败!{vbCrLf}{ex.Message}")
End Try
End If
End Sub
''上传主机文件函数
Private Sub UploadHostFile()
''弹出提示询问是否填写完设备有效固件
If MsgBox("是否填写完设备有效固件", MsgBoxStyle.YesNo, "提示") = MsgBoxResult.Yes Then
Dim loadFilePath As String = ToolStripLabel1.Tag
Dim hostFilePath As String = $"\Data\Model\RCUModel\{ToolStripLabel2.Text}" '485Model \Data\Firmware\
'判断上传者是否为空
If String.IsNullOrEmpty(TextBox1.Text) Then
MsgBox("请填写上传者")
Return
End If
If String.IsNullOrEmpty(TextBox2.Text) Then
MsgBox("备注不能为空!请填写备注!")
Return
End If
'判断文件是否已在服务器
If UtsFtp.CreateObject.FtpFileExists(hostFilePath) Then
MsgBox($"服务器已存在文件<{ToolStripLabel2.Text}>")
Return
End If
Try
If UtsFtp.CreateObject.FtpUpload2(hostFilePath, loadFilePath) Then
'遍历表格
' Dim li As List(Of String) = New List(Of String)()
Dim rowstr As String = ""
Dim UserName = TextBox1.Text.Trim
Dim UpTime = Now.ToString("yyyy-MM-dd HH:mm:ss.fff")
Dim FirmwareEnable As Integer = 0
Dim HostVersion FirmwareVersion DevVersion As String
Dim HostName FirmwareName DevName As String
Dim md5 As String = GetStringMd5(loadFilePath)
Dim colNames As New StringBuilder
For i As Integer = 1 To Grid1.Rows - 1
HostVersion = Grid1.Cell(i, 1).Text
HostName = Grid1.Cell(i, 2).Text
FirmwareVersion = Grid1.Cell(i, 3).Text
FirmwareName = Grid1.Cell(i, 4).Text
DevVersion = Grid1.Cell(i, 5).Text
DevName = Grid1.Cell(i, 6).Text
If Grid1.Cell(i, 7).Text.Equals("true") Or Grid1.Cell(i, 7).Text.Equals("1") Then
FirmwareEnable = 1
Else
FirmwareEnable = 0
End If
rowstr = $"INSERT INTO `blv_rcu_db`.`tbl_devmode_firmware_info` (`UserName`,`UpTime`,`FirmwareEnable`,`HostVersion`,`HostName`,`FirmwareVersion`,`FirmwareName`,`DevName`,`DevVersion`) VALUES ('{UserName}','{UpTime}',{FirmwareEnable},{HostVersion},'{HostName}',{FirmwareVersion},'{FirmwareName}','{DevName}',{DevVersion} );{vbCrLf}"
'li.Add(rowstr)
colNames.Append(rowstr)
Next
rowstr = $"INSERT INTO `blv_rcu_db`.`tbl_model_file_data` (`Available`,`Directory`,`XML_FileName`,`UploadDateTime`,`Author`,`XLM_MD5`,`Remark`,`Brand`,`ModelNo`,`ModelName`,`Description`,`Image`,`DAT_FileName`,`Version`,`DAT_MD5`,`PartNumber`) VALUES (1,'{"\Data\Model\RCUModel".Replace("\", "\\")}','{ToolStripLabel2.Text}','{UpTime}','{UserName}','{md5}','{TextBox2.Text.Trim}','','','','','','','','','');"
colNames.Append(rowstr)
Add_room_type_circuit_powers(colNames.ToString)
MsgBox("上传成功")
Else
MsgBox("文件上传失败!")
Return
End If
Catch ex As Exception
MsgBox($"文件上传失败!{vbCrLf}{ex.Message}")
End Try
End If
End Sub
Public Function GetMACaddress() As String
Dim netAddress As String = ""
Dim netName As String = ""
Dim searcher As New Management.ManagementObjectSearcher("select * from win32_NetworkAdapterConfiguration")
Dim moc2 As Management.ManagementObjectCollection = searcher.Get()
For Each mo As Management.ManagementObject In moc2
If CBool(mo("IPEnabled")) Then '判断是否是网卡
netName = mo.Properties("caption").Value.ToString '网卡名称
netAddress = mo.Properties("MACAddress").Value.ToString 'mac地址
End If
Next
Return netAddress
End Function
Private Sub UploadDEvFile()
''弹出提示询问是否填写完设备有效固件
If MsgBox("是否填写完设备有效固件", MsgBoxStyle.YesNo, "提示") = MsgBoxResult.Yes Then
Dim loadFilePath As String = ToolStripLabel1.Tag
Dim hostFilePath As String = $"\Data\Model\485Model\{ToolStripLabel2.Text}" '485Model \Data\Firmware\
'判断上传者是否为空
If String.IsNullOrEmpty(TextBox1.Text) Then
MsgBox("请填写上传者")
Return
End If
If String.IsNullOrEmpty(TextBox2.Text) Then
MsgBox("备注不能为空!请填写备注!")
Return
End If
'判断文件是否已在服务器
If UtsFtp.CreateObject.FtpFileExists(hostFilePath) Then
MsgBox($"服务器已存在文件<{ToolStripLabel2.Text}>")
Return
End If
Try
If UtsFtp.CreateObject.FtpUpload2(hostFilePath, loadFilePath) Then
'遍历表格
' Dim li As List(Of String) = New List(Of String)()
Dim rowstr As String = ""
Dim UserName = TextBox1.Text.Trim
Dim UpTime = Now.ToString("yyyy-MM-dd HH:mm:ss.fff")
Dim FirmwareEnable As Integer = 0
Dim HostVersion FirmwareVersion DevVersion As String
Dim HostName FirmwareName DevName As String
Dim md5 As String = GetStringMd5(loadFilePath)
Dim colNames As New StringBuilder
For i As Integer = 1 To Grid1.Rows - 1
HostVersion = Grid1.Cell(i, 1).Text
HostName = Grid1.Cell(i, 2).Text
FirmwareVersion = Grid1.Cell(i, 3).Text
FirmwareName = Grid1.Cell(i, 4).Text
DevVersion = Grid1.Cell(i, 5).Text
DevName = Grid1.Cell(i, 6).Text
If Grid1.Cell(i, 7).Text.Equals("true") Or Grid1.Cell(i, 7).Text.Equals("1") Then
FirmwareEnable = 1
Else
FirmwareEnable = 0
End If
rowstr = $"INSERT INTO `blv_rcu_db`.`tbl_devmode_firmware_info` (`UserName`,`UpTime`,`FirmwareEnable`,`HostVersion`,`HostName`,`FirmwareVersion`,`FirmwareName`,`DevName`,`DevVersion`) VALUES ('{UserName}','{UpTime}',{FirmwareEnable},{HostVersion},'{HostName}',{FirmwareVersion},'{FirmwareName}','{DevName}',{DevVersion} );{vbCrLf}"
'li.Add(rowstr)
colNames.Append(rowstr)
Next
rowstr = $"INSERT INTO `blv_rcu_db`.`tbl_model_file_data` (`Available`,`Directory`,`XML_FileName`,`UploadDateTime`,`Author`,`XLM_MD5`,`Remark`,`Brand`,`ModelNo`,`ModelName`,`Description`,`Image`,`DAT_FileName`,`Version`,`DAT_MD5`,`PartNumber`) VALUES (1,'{"\Data\Model\485Model".Replace("\", "\\")}','{ToolStripLabel2.Text}','{UpTime}','{UserName}','{md5}','{TextBox2.Text.Trim}','','','','','','','','','');"
colNames.Append(rowstr)
Add_room_type_circuit_powers(colNames.ToString)
MsgBox("上传成功")
Else
MsgBox("文件上传失败!")
Return
End If
Catch ex As Exception
MsgBox($"文件上传失败!{vbCrLf}{ex.Message}")
End Try
End If
End Sub
Public Function GetStringMd5(filePath As String) As String
Dim dataFile() As Byte = File.ReadAllBytes(filePath)
Dim databuff As Byte() = Security.Cryptography.MD5.Create().ComputeHash(dataFile)
Dim MD5str As String = BitConverter.ToString(databuff)
' Console.WriteLine($"md5-1:{MD5str}")
Return MD5str.Replace("-", "").ToUpper
End Function
Public Function Add_room_type_circuit_powers(insertClunm As String) As Boolean
If String.IsNullOrEmpty(insertClunm) Then Return False
Dim dt As DataTable
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString)
db.Open()
Try
db.BeginTransaction()
dt = db.ExecuteDataTable(insertClunm)
db.CommitTransaction()
Catch ex As Exception
db.RollbackTransaction()
db.Close()
Return False
End Try
db.Close()
End Using
Return True
End Function
Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click
Dim xmlFilePath As String = SelectXmlFile()
If String.IsNullOrEmpty(xmlFilePath) Then
MsgBox("请选择正确的xml文件")
Return
End If
If String.IsNullOrEmpty(TextBox1.Text) Then
MsgBox("请填写上传者")
Return
End If
If String.IsNullOrEmpty(TextBox2.Text) Then
MsgBox("备注不能为空!请填写备注!")
Return
End If
Dim strValue As String = xmlFilePath.Substring(xmlFilePath.LastIndexOf("\") + 1)
Dim UpTime = Now.ToString("yyyy-MM-dd HH:mm:ss.fff")
Dim md5 As String = GetStringMd5(xmlFilePath)
Dim UserName = TextBox1.Text.Trim
Dim colNames As New StringBuilder
Dim hostFilePath As String = $"\Data\Model\BaseModel\{strValue}"
'判断文件是否已在服务器
If UtsFtp.CreateObject.FtpFileExists(hostFilePath) Then
MsgBox($"服务器已存在文件<{strValue}>")
Return
End If
Try
If UtsFtp.CreateObject.FtpUpload2(hostFilePath, xmlFilePath) Then
Dim rowstr As String = $"INSERT INTO `blv_rcu_db`.`tbl_model_file_data` (`Available`,`Directory`,`XML_FileName`,`UploadDateTime`,`Author`,`XLM_MD5`,`Remark`,`Brand`,`ModelNo`,`ModelName`,`Description`,`Image`,`DAT_FileName`,`Version`,`DAT_MD5`,`PartNumber`) VALUES (1,'{"\Data\Model\BaseModel".Replace("\", "\\")}','{strValue}','{UpTime}','{UserName}','{md5}','{TextBox2.Text.Trim}','','','','','','','','','');"
colNames.Append(rowstr)
Add_room_type_circuit_powers(colNames.ToString)
MsgBox("上传成功")
End If
Catch ex As Exception
MsgBox($"文件上传失败!{vbCrLf}{ex.Message}")
End Try
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button9.Click, Button5.Click, Button4.Click
QueryCount()
QueryData("tbl_devmode_firmware_info")
End Sub
Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button6.Click, Button3.Click, Button10.Click
QueryData2("tbl_model_file_data")
End Sub
End Class

38
My Project/Application.Designer.vb generated Normal file
View File

@@ -0,0 +1,38 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
'NOTE: This file is auto-generated; do not modify it directly. To make changes,
' or if you encounter build errors in this file, go to the Project Designer
' (go to Project Properties or double-click the My Project node in
' Solution Explorer), and make changes on the Application tab.
'
Partial Friend Class MyApplication
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = false
Me.EnableVisualStyles = true
Me.SaveMySettingsOnExit = true
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.DevModeFirmwareInfo.Form1
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>true</MySubMain>
<MainForm>Form1</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>0</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' 有关程序集的一般信息由以下
' 控制。更改这些特性值可修改
' 与程序集关联的信息。
'查看程序集特性的值
<Assembly: AssemblyTitle("DevModeFirmwareInfo")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("DevModeFirmwareInfo")>
<Assembly: AssemblyCopyright("Copyright © 2025")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'如果此项目向 COM 公开,则下列 GUID 用于 typelib 的 ID
<Assembly: Guid("2b3bdf7e-745b-46b5-8548-2668c21a44c9")>
' 程序集的版本信息由下列四个值组成:
'
' 主版本
' 次版本
' 生成号
' 修订号
'
'可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
'通过使用 "*",如下所示:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

62
My Project/Resources.Designer.vb generated Normal file
View File

@@ -0,0 +1,62 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("DevModeFirmwareInfo.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set(ByVal value As Global.System.Globalization.CultureInfo)
resourceCulture = value
End Set
End Property
End Module
End Namespace

117
My Project/Resources.resx Normal file
View File

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

73
My Project/Settings.Designer.vb generated Normal file
View File

@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.DevModeFirmwareInfo.My.MySettings
Get
Return Global.DevModeFirmwareInfo.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.5" newVersion="8.0.0.5" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

Binary file not shown.

File diff suppressed because it is too large Load Diff

BIN
bin/Debug/FlexCell.dll Normal file

Binary file not shown.

BIN
bin/Debug/FluentFTP.dll Normal file

Binary file not shown.

6755
bin/Debug/FluentFTP.xml Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

11896
bin/Debug/Google.Protobuf.xml Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,245 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>K4os.Hash.xxHash</name>
</assembly>
<members>
<member name="T:K4os.Hash.xxHash.HashAlgorithmAdapter">
<summary>
Adapter implementing <see cref="T:System.Security.Cryptography.HashAlgorithm"/>
</summary>
</member>
<member name="M:K4os.Hash.xxHash.HashAlgorithmAdapter.#ctor(System.Int32,System.Action,System.Action{System.Byte[],System.Int32,System.Int32},System.Func{System.Byte[]})">
<summary>
Creates new <see cref="T:K4os.Hash.xxHash.HashAlgorithmAdapter"/>.
</summary>
<param name="hashSize">Hash size (in bytes)</param>
<param name="reset">Reset function.</param>
<param name="update">Update function.</param>
<param name="digest">Digest function.</param>
</member>
<member name="P:K4os.Hash.xxHash.HashAlgorithmAdapter.HashSize">
<inheritdoc />
</member>
<member name="P:K4os.Hash.xxHash.HashAlgorithmAdapter.Hash">
<inheritdoc />
</member>
<member name="M:K4os.Hash.xxHash.HashAlgorithmAdapter.HashCore(System.Byte[],System.Int32,System.Int32)">
<inheritdoc />
</member>
<member name="M:K4os.Hash.xxHash.HashAlgorithmAdapter.HashFinal">
<inheritdoc />
</member>
<member name="M:K4os.Hash.xxHash.HashAlgorithmAdapter.Initialize">
<inheritdoc />
</member>
<member name="T:K4os.Hash.xxHash.XXH">
<summary>
Base class for both <see cref="T:K4os.Hash.xxHash.XXH32"/> and <see cref="T:K4os.Hash.xxHash.XXH64"/>. Do not use directly.
</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH.#ctor">
<summary>Protected constructor to prevent instantiation.</summary>
</member>
<member name="T:K4os.Hash.xxHash.XXH32">
<summary>
xxHash 32-bit.
</summary>
</member>
<member name="T:K4os.Hash.xxHash.XXH32.State">
<summary>Internal state of the algorithm.</summary>
</member>
<member name="F:K4os.Hash.xxHash.XXH32.EmptyHash">
<summary>Hash of empty buffer.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestOf(System.Void*,System.Int32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestOf(System.Void*,System.Int32,System.UInt32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
<param name="seed">Seed.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestOf(System.ReadOnlySpan{System.Byte})">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestOf(System.Byte[],System.Int32,System.Int32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="offset">Starting offset.</param>
<param name="length">Length of buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.#ctor">
<summary>Creates xxHash instance.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.#ctor(System.UInt32)">
<summary>Creates xxHash instance.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Reset">
<summary>Resets hash calculation.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Reset(System.UInt32)">
<summary>Resets hash calculation.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(System.Void*,System.Int32)">
<summary>Updates the hash using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(System.Byte*,System.Int32)">
<summary>Updates the hash using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(System.ReadOnlySpan{System.Byte})">
<summary>Updates the has using given buffer.</summary>
<param name="bytes">Buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(System.Byte[],System.Int32,System.Int32)">
<summary>Updates the has using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="offset">Starting offset.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Digest">
<summary>Hash so far.</summary>
<returns>Hash so far.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestBytes">
<summary>Hash so far, as byte array.</summary>
<returns>Hash so far.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.AsHashAlgorithm">
<summary>Converts this class to <see cref="T:System.Security.Cryptography.HashAlgorithm"/></summary>
<returns><see cref="T:System.Security.Cryptography.HashAlgorithm"/></returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Reset(K4os.Hash.xxHash.XXH32.State@,System.UInt32)">
<summary>Resets hash calculation.</summary>
<param name="state">Hash state.</param>
<param name="seed">Hash seed.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(K4os.Hash.xxHash.XXH32.State@,System.Void*,System.Int32)">
<summary>Updates the has using given buffer.</summary>
<param name="state">Hash state.</param>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(K4os.Hash.xxHash.XXH32.State@,System.ReadOnlySpan{System.Byte})">
<summary>Updates the has using given buffer.</summary>
<param name="state">Hash state.</param>
<param name="bytes">Buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Digest(K4os.Hash.xxHash.XXH32.State@)">
<summary>Hash so far.</summary>
<returns>Hash so far.</returns>
</member>
<member name="T:K4os.Hash.xxHash.XXH64">
<summary>
xxHash 64-bit.
</summary>
</member>
<member name="T:K4os.Hash.xxHash.XXH64.State">
<summary>Internal state of the algorithm.</summary>
</member>
<member name="F:K4os.Hash.xxHash.XXH64.EmptyHash">
<summary>Hash of empty buffer.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestOf(System.Void*,System.Int32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestOf(System.Void*,System.Int32,System.UInt64)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
<param name="seed">Seed.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestOf(System.ReadOnlySpan{System.Byte})">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestOf(System.Byte[],System.Int32,System.Int32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="offset">Starting offset.</param>
<param name="length">Length of buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.#ctor">
<summary>Creates xxHash instance.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.#ctor(System.UInt64)">
<summary>Creates xxHash instance.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Reset">
<summary>Resets hash calculation.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Reset(System.UInt64)">
<summary>Resets hash calculation.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(System.Void*,System.Int32)">
<summary>Updates the hash using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(System.Byte*,System.Int32)">
<summary>Updates the hash using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(System.ReadOnlySpan{System.Byte})">
<summary>Updates the has using given buffer.</summary>
<param name="bytes">Buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(System.Byte[],System.Int32,System.Int32)">
<summary>Updates the has using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="offset">Starting offset.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Digest">
<summary>Hash so far.</summary>
<returns>Hash so far.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestBytes">
<summary>Hash so far, as byte array.</summary>
<returns>Hash so far.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.AsHashAlgorithm">
<summary>Converts this class to <see cref="T:System.Security.Cryptography.HashAlgorithm"/></summary>
<returns><see cref="T:System.Security.Cryptography.HashAlgorithm"/></returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Reset(K4os.Hash.xxHash.XXH64.State@,System.UInt64)">
<summary>Resets hash calculation.</summary>
<param name="state">Hash state.</param>
<param name="seed">Hash seed.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(K4os.Hash.xxHash.XXH64.State@,System.Void*,System.Int32)">
<summary>Updates the has using given buffer.</summary>
<param name="state">Hash state.</param>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(K4os.Hash.xxHash.XXH64.State@,System.ReadOnlySpan{System.Byte})">
<summary>Updates the has using given buffer.</summary>
<param name="state">Hash state.</param>
<param name="bytes">Buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Digest(K4os.Hash.xxHash.XXH64.State@)">
<summary>Hash so far.</summary>
<returns>Hash so far.</returns>
</member>
</members>
</doc>

Binary file not shown.

View File

@@ -0,0 +1,417 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Bcl.AsyncInterfaces</name>
</assembly>
<members>
<member name="T:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1">
<summary>Provides the core logic for implementing a manual-reset <see cref="T:System.Threading.Tasks.Sources.IValueTaskSource"/> or <see cref="T:System.Threading.Tasks.Sources.IValueTaskSource`1"/>.</summary>
<typeparam name="TResult"></typeparam>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._continuation">
<summary>
The callback to invoke when the operation completes if <see cref="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.OnCompleted(System.Action{System.Object},System.Object,System.Int16,System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags)"/> was called before the operation completed,
or <see cref="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCoreShared.s_sentinel"/> if the operation completed before a callback was supplied,
or null if a callback hasn't yet been provided and the operation hasn't yet completed.
</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._continuationState">
<summary>State to pass to <see cref="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._continuation"/>.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._executionContext">
<summary><see cref="T:System.Threading.ExecutionContext"/> to flow to the callback, or null if no flowing is required.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._capturedContext">
<summary>
A "captured" <see cref="T:System.Threading.SynchronizationContext"/> or <see cref="T:System.Threading.Tasks.TaskScheduler"/> with which to invoke the callback,
or null if no special context is required.
</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._completed">
<summary>Whether the current operation has completed.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._result">
<summary>The result with which the operation succeeded, or the default value if it hasn't yet completed or failed.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._error">
<summary>The exception with which the operation failed, or null if it hasn't yet completed or completed successfully.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._version">
<summary>The current version of this value, used to help prevent misuse.</summary>
</member>
<member name="P:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.RunContinuationsAsynchronously">
<summary>Gets or sets whether to force continuations to run asynchronously.</summary>
<remarks>Continuations may run asynchronously if this is false, but they'll never run synchronously if this is true.</remarks>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.Reset">
<summary>Resets to prepare for the next operation.</summary>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.SetResult(`0)">
<summary>Completes with a successful result.</summary>
<param name="result">The result.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.SetException(System.Exception)">
<summary>Complets with an error.</summary>
<param name="error"></param>
</member>
<member name="P:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.Version">
<summary>Gets the operation version.</summary>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.GetStatus(System.Int16)">
<summary>Gets the status of the operation.</summary>
<param name="token">Opaque value that was provided to the <see cref="T:System.Threading.Tasks.ValueTask"/>'s constructor.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.GetResult(System.Int16)">
<summary>Gets the result of the operation.</summary>
<param name="token">Opaque value that was provided to the <see cref="T:System.Threading.Tasks.ValueTask"/>'s constructor.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.OnCompleted(System.Action{System.Object},System.Object,System.Int16,System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags)">
<summary>Schedules the continuation action for this operation.</summary>
<param name="continuation">The continuation to invoke when the operation has completed.</param>
<param name="state">The state object to pass to <paramref name="continuation"/> when it's invoked.</param>
<param name="token">Opaque value that was provided to the <see cref="T:System.Threading.Tasks.ValueTask"/>'s constructor.</param>
<param name="flags">The flags describing the behavior of the continuation.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.ValidateToken(System.Int16)">
<summary>Ensures that the specified token matches the current version.</summary>
<param name="token">The token supplied by <see cref="T:System.Threading.Tasks.ValueTask"/>.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.SignalCompletion">
<summary>Signals that the operation has completed. Invoked after the result or error has been set.</summary>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.InvokeContinuation">
<summary>
Invokes the continuation with the appropriate captured context / scheduler.
This assumes that if <see cref="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._executionContext"/> is not null we're already
running within that <see cref="T:System.Threading.ExecutionContext"/>.
</summary>
</member>
<member name="T:System.Threading.Tasks.TaskAsyncEnumerableExtensions">
<summary>Provides a set of static methods for configuring <see cref="T:System.Threading.Tasks.Task"/>-related behaviors on asynchronous enumerables and disposables.</summary>
</member>
<member name="M:System.Threading.Tasks.TaskAsyncEnumerableExtensions.ConfigureAwait(System.IAsyncDisposable,System.Boolean)">
<summary>Configures how awaits on the tasks returned from an async disposable will be performed.</summary>
<param name="source">The source async disposable.</param>
<param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
<returns>The configured async disposable.</returns>
</member>
<member name="M:System.Threading.Tasks.TaskAsyncEnumerableExtensions.ConfigureAwait``1(System.Collections.Generic.IAsyncEnumerable{``0},System.Boolean)">
<summary>Configures how awaits on the tasks returned from an async iteration will be performed.</summary>
<typeparam name="T">The type of the objects being iterated.</typeparam>
<param name="source">The source enumerable being iterated.</param>
<param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
<returns>The configured enumerable.</returns>
</member>
<member name="M:System.Threading.Tasks.TaskAsyncEnumerableExtensions.WithCancellation``1(System.Collections.Generic.IAsyncEnumerable{``0},System.Threading.CancellationToken)">
<summary>Sets the <see cref="T:System.Threading.CancellationToken"/> to be passed to <see cref="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)"/> when iterating.</summary>
<typeparam name="T">The type of the objects being iterated.</typeparam>
<param name="source">The source enumerable being iterated.</param>
<param name="cancellationToken">The <see cref="T:System.Threading.CancellationToken"/> to use.</param>
<returns>The configured enumerable.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder">
<summary>Represents a builder for asynchronous iterators.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.Create">
<summary>Creates an instance of the <see cref="T:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder"/> struct.</summary>
<returns>The initialized instance.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.MoveNext``1(``0@)">
<summary>Invokes <see cref="M:System.Runtime.CompilerServices.IAsyncStateMachine.MoveNext"/> on the state machine while guarding the <see cref="T:System.Threading.ExecutionContext"/>.</summary>
<typeparam name="TStateMachine">The type of the state machine.</typeparam>
<param name="stateMachine">The state machine instance, passed by reference.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.AwaitOnCompleted``2(``0@,``1@)">
<summary>Schedules the state machine to proceed to the next action when the specified awaiter completes.</summary>
<typeparam name="TAwaiter">The type of the awaiter.</typeparam>
<typeparam name="TStateMachine">The type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.AwaitUnsafeOnCompleted``2(``0@,``1@)">
<summary>Schedules the state machine to proceed to the next action when the specified awaiter completes.</summary>
<typeparam name="TAwaiter">The type of the awaiter.</typeparam>
<typeparam name="TStateMachine">The type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.Complete">
<summary>Marks iteration as being completed, whether successfully or otherwise.</summary>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.ObjectIdForDebugger">
<summary>Gets an object that may be used to uniquely identify this builder to the debugger.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute">
<summary>Indicates whether a method is an asynchronous iterator.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute"/> class.</summary>
<param name="stateMachineType">The type object for the underlying state machine type that's used to implement a state machine method.</param>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredAsyncDisposable">
<summary>Provides a type that can be used to configure how awaits on an <see cref="T:System.IAsyncDisposable"/> are performed.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredAsyncDisposable.DisposeAsync">
<summary>Asynchronously releases the unmanaged resources used by the <see cref="T:System.Runtime.CompilerServices.ConfiguredAsyncDisposable" />.</summary>
<returns>A task that represents the asynchronous dispose operation.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1">
<summary>Provides an awaitable async enumerable that enables cancelable iteration and configured awaits.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.ConfigureAwait(System.Boolean)">
<summary>Configures how awaits on the tasks returned from an async iteration will be performed.</summary>
<param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
<returns>The configured enumerable.</returns>
<remarks>This will replace any previous value set by <see cref="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.ConfigureAwait(System.Boolean)"/> for this iteration.</remarks>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.WithCancellation(System.Threading.CancellationToken)">
<summary>Sets the <see cref="T:System.Threading.CancellationToken"/> to be passed to <see cref="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)"/> when iterating.</summary>
<param name="cancellationToken">The <see cref="T:System.Threading.CancellationToken"/> to use.</param>
<returns>The configured enumerable.</returns>
<remarks>This will replace any previous <see cref="T:System.Threading.CancellationToken"/> set by <see cref="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.WithCancellation(System.Threading.CancellationToken)"/> for this iteration.</remarks>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.GetAsyncEnumerator">
<summary>Returns an enumerator that iterates asynchronously through collections that enables cancelable iteration and configured awaits.</summary>
<returns>An enumerator for the <see cref="T:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1" /> class.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator">
<summary>Provides an awaitable async enumerator that enables cancelable iteration and configured awaits.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.MoveNextAsync">
<summary>Advances the enumerator asynchronously to the next element of the collection.</summary>
<returns>
A <see cref="T:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1"/> that will complete with a result of <c>true</c>
if the enumerator was successfully advanced to the next element, or <c>false</c> if the enumerator has
passed the end of the collection.
</returns>
</member>
<member name="P:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.Current">
<summary>Gets the element in the collection at the current position of the enumerator.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.DisposeAsync">
<summary>
Performs application-defined tasks associated with freeing, releasing, or
resetting unmanaged resources asynchronously.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.EnumeratorCancellationAttribute">
<summary>Allows users of async-enumerable methods to mark the parameter that should receive the cancellation token value from <see cref="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)" />.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.EnumeratorCancellationAttribute.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.EnumeratorCancellationAttribute" /> class.</summary>
</member>
<member name="T:System.Runtime.InteropServices.LibraryImportAttribute">
<summary>
Attribute used to indicate a source generator should create a function for marshalling
arguments instead of relying on the runtime to generate an equivalent marshalling function at run-time.
</summary>
<remarks>
This attribute is meaningless if the source generator associated with it is not enabled.
The current built-in source generator only supports C# and only supplies an implementation when
applied to static, partial, non-generic methods.
</remarks>
</member>
<member name="M:System.Runtime.InteropServices.LibraryImportAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Runtime.InteropServices.LibraryImportAttribute"/>.
</summary>
<param name="libraryName">Name of the library containing the import.</param>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.LibraryName">
<summary>
Gets the name of the library containing the import.
</summary>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.EntryPoint">
<summary>
Gets or sets the name of the entry point to be called.
</summary>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshalling">
<summary>
Gets or sets how to marshal string arguments to the method.
</summary>
<remarks>
If this field is set to a value other than <see cref="F:System.Runtime.InteropServices.StringMarshalling.Custom" />,
<see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType" /> must not be specified.
</remarks>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType">
<summary>
Gets or sets the <see cref="T:System.Type"/> used to control how string arguments to the method are marshalled.
</summary>
<remarks>
If this field is specified, <see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshalling" /> must not be specified
or must be set to <see cref="F:System.Runtime.InteropServices.StringMarshalling.Custom" />.
</remarks>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.SetLastError">
<summary>
Gets or sets whether the callee sets an error (SetLastError on Windows or errno
on other platforms) before returning from the attributed method.
</summary>
</member>
<member name="T:System.Runtime.InteropServices.StringMarshalling">
<summary>
Specifies how strings should be marshalled for generated p/invokes
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Custom">
<summary>
Indicates the user is suppling a specific marshaller in <see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType"/>.
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Utf8">
<summary>
Use the platform-provided UTF-8 marshaller.
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Utf16">
<summary>
Use the platform-provided UTF-16 marshaller.
</summary>
</member>
<member name="T:System.Collections.Generic.IAsyncEnumerable`1">
<summary>Exposes an enumerator that provides asynchronous iteration over values of a specified type.</summary>
<typeparam name="T">The type of values to enumerate.</typeparam>
</member>
<member name="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)">
<summary>Returns an enumerator that iterates asynchronously through the collection.</summary>
<param name="cancellationToken">A <see cref="T:System.Threading.CancellationToken"/> that may be used to cancel the asynchronous iteration.</param>
<returns>An enumerator that can be used to iterate asynchronously through the collection.</returns>
</member>
<member name="T:System.Collections.Generic.IAsyncEnumerator`1">
<summary>Supports a simple asynchronous iteration over a generic collection.</summary>
<typeparam name="T">The type of objects to enumerate.</typeparam>
</member>
<member name="M:System.Collections.Generic.IAsyncEnumerator`1.MoveNextAsync">
<summary>Advances the enumerator asynchronously to the next element of the collection.</summary>
<returns>
A <see cref="T:System.Threading.Tasks.ValueTask`1"/> that will complete with a result of <c>true</c> if the enumerator
was successfully advanced to the next element, or <c>false</c> if the enumerator has passed the end
of the collection.
</returns>
</member>
<member name="P:System.Collections.Generic.IAsyncEnumerator`1.Current">
<summary>Gets the element in the collection at the current position of the enumerator.</summary>
</member>
<member name="T:System.IAsyncDisposable">
<summary>Provides a mechanism for releasing unmanaged resources asynchronously.</summary>
</member>
<member name="M:System.IAsyncDisposable.DisposeAsync">
<summary>
Performs application-defined tasks associated with freeing, releasing, or
resetting unmanaged resources asynchronously.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.AllowNullAttribute">
<summary>Specifies that null is allowed as an input even if the corresponding type disallows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DisallowNullAttribute">
<summary>Specifies that null is disallowed as an input even if the corresponding type allows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MaybeNullAttribute">
<summary>Specifies that an output may be null even if the corresponding type disallows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullAttribute">
<summary>Specifies that an output will not be null even if the corresponding type allows it. Specifies that an input argument was not null when the call returns.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute">
<summary>Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue"/>, the parameter may be null even if the corresponding type disallows it.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified return value condition.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter may be null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute">
<summary>Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue"/>, the parameter will not be null even if the corresponding type allows it.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified return value condition.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute">
<summary>Specifies that the output will be non-null if the named parameter is non-null.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.#ctor(System.String)">
<summary>Initializes the attribute with the associated parameter name.</summary>
<param name="parameterName">
The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.ParameterName">
<summary>Gets the associated parameter name.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute">
<summary>Applied to a method that will never return under any circumstance.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute">
<summary>Specifies that the method will not return if the associated Boolean parameter is passed the specified value.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified parameter value.</summary>
<param name="parameterValue">
The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to
the associated parameter matches this value.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.ParameterValue">
<summary>Gets the condition parameter value.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute">
<summary>Specifies that the method or property will ensure that the listed field and property members have not-null values.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String)">
<summary>Initializes the attribute with a field or property member.</summary>
<param name="member">
The field or property member that is promised to be not-null.
</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String[])">
<summary>Initializes the attribute with the list of field and property members.</summary>
<param name="members">
The list of field and property members that are promised to be not-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.Members">
<summary>Gets field or property member names.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute">
<summary>Specifies that the method or property will ensure that the listed field and property members have not-null values when returning with the specified return value condition.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String)">
<summary>Initializes the attribute with the specified return value condition and a field or property member.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
<param name="member">
The field or property member that is promised to be not-null.
</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String[])">
<summary>Initializes the attribute with the specified return value condition and list of field and property members.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
<param name="members">
The list of field and property members that are promised to be not-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.Members">
<summary>Gets field or property member names.</summary>
</member>
</members>
</doc>

Binary file not shown.

View File

@@ -0,0 +1,34 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Bcl.HashCode</name>
</assembly>
<members>
<member name="M:System.Numerics.BitOperations.RotateLeft(System.UInt32,System.Int32)">
<summary>
Rotates the specified value left by the specified number of bits.
Similar in behavior to the x86 instruction ROL.
</summary>
<param name="value">The value to rotate.</param>
<param name="offset">The number of bits to rotate by.
Any value outside the range [0..31] is treated as congruent mod 32.</param>
<returns>The rotated value.</returns>
</member>
<member name="M:System.Numerics.BitOperations.RotateLeft(System.UInt64,System.Int32)">
<summary>
Rotates the specified value left by the specified number of bits.
Similar in behavior to the x86 instruction ROL.
</summary>
<param name="value">The value to rotate.</param>
<param name="offset">The number of bits to rotate by.
Any value outside the range [0..63] is treated as congruent mod 64.</param>
<returns>The rotated value.</returns>
</member>
<member name="P:System.SR.HashCode_EqualityNotSupported">
<summary>HashCode is a mutable struct and should not be compared with other HashCodes.</summary>
</member>
<member name="P:System.SR.HashCode_HashCodeNotSupported">
<summary>HashCode is a mutable struct and should not be compared with other HashCodes. Use ToHashCode to retrieve the computed hash code.</summary>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

BIN
bin/Debug/MySql.Data.dll Normal file

Binary file not shown.

18618
bin/Debug/MySql.Data.xml Normal file

File diff suppressed because it is too large Load Diff

BIN
bin/Debug/Npgsql.dll Normal file

Binary file not shown.

11587
bin/Debug/Npgsql.xml Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

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

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,341 @@
<?xml version="1.0" encoding="utf-8"?>
<doc>
<assembly>
<name>System.IO.Pipelines</name>
</assembly>
<members>
<member name="T:System.IO.Pipelines.FlushResult">
<summary>Result returned by <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> call.</summary>
</member>
<member name="M:System.IO.Pipelines.FlushResult.#ctor(System.Boolean,System.Boolean)">
<summary>Initializes a new instance of <see cref="T:System.IO.Pipelines.FlushResult" /> struct setting the <see cref="P:System.IO.Pipelines.FlushResult.IsCanceled" /> and <see cref="P:System.IO.Pipelines.FlushResult.IsCompleted" /> flags.</summary>
<param name="isCanceled">
<see langword="true" /> to indicate the current <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation that produced this <see cref="T:System.IO.Pipelines.FlushResult" /> was canceled by <see cref="M:System.IO.Pipelines.PipeWriter.CancelPendingFlush" />; otherwise, <see langword="false" />.</param>
<param name="isCompleted">
<see langword="true" /> to indicate the reader is no longer reading data written to the <see cref="T:System.IO.Pipelines.PipeWriter" />.</param>
</member>
<member name="P:System.IO.Pipelines.FlushResult.IsCanceled">
<summary>Gets a value that indicates whether the current <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation was canceled.</summary>
<returns>
<see langword="true" /> if the current <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation was canceled; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.FlushResult.IsCompleted">
<summary>Gets a value that indicates the reader is no longer reading data written to the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
<returns>
<see langword="true" /> if the reader is no longer reading data written to the <see cref="T:System.IO.Pipelines.PipeWriter" />; otherwise, <see langword="false" />.</returns>
</member>
<member name="T:System.IO.Pipelines.IDuplexPipe">
<summary>Defines a class that provides a duplex pipe from which data can be read from and written to.</summary>
</member>
<member name="P:System.IO.Pipelines.IDuplexPipe.Input">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeReader" /> half of the duplex pipe.</summary>
</member>
<member name="P:System.IO.Pipelines.IDuplexPipe.Output">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeWriter" /> half of the duplex pipe.</summary>
</member>
<member name="T:System.IO.Pipelines.Pipe">
<summary>The default <see cref="T:System.IO.Pipelines.PipeWriter" /> and <see cref="T:System.IO.Pipelines.PipeReader" /> implementation.</summary>
</member>
<member name="M:System.IO.Pipelines.Pipe.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.IO.Pipelines.Pipe" /> class using <see cref="P:System.IO.Pipelines.PipeOptions.Default" /> as options.</summary>
</member>
<member name="M:System.IO.Pipelines.Pipe.#ctor(System.IO.Pipelines.PipeOptions)">
<summary>Initializes a new instance of the <see cref="T:System.IO.Pipelines.Pipe" /> class with the specified options.</summary>
<param name="options">The set of options for this pipe.</param>
</member>
<member name="M:System.IO.Pipelines.Pipe.Reset">
<summary>Resets the pipe.</summary>
</member>
<member name="P:System.IO.Pipelines.Pipe.Reader">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeReader" /> for this pipe.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeReader" /> instance for this pipe.</returns>
</member>
<member name="P:System.IO.Pipelines.Pipe.Writer">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeWriter" /> for this pipe.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeWriter" /> instance for this pipe.</returns>
</member>
<member name="T:System.IO.Pipelines.PipeOptions">
<summary>Represents a set of <see cref="T:System.IO.Pipelines.Pipe" /> options.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeOptions.#ctor(System.Buffers.MemoryPool{System.Byte},System.IO.Pipelines.PipeScheduler,System.IO.Pipelines.PipeScheduler,System.Int64,System.Int64,System.Int32,System.Boolean)">
<summary>Initializes a new instance of the <see cref="T:System.IO.Pipelines.PipeOptions" /> class with the specified parameters.</summary>
<param name="pool">The pool of memory blocks to be used for buffer management.</param>
<param name="readerScheduler">The <see cref="T:System.IO.Pipelines.PipeScheduler" /> to be used to execute <see cref="T:System.IO.Pipelines.PipeReader" /> callbacks and async continuations.</param>
<param name="writerScheduler">The <see cref="T:System.IO.Pipelines.PipeScheduler" /> used to execute <see cref="T:System.IO.Pipelines.PipeWriter" /> callbacks and async continuations.</param>
<param name="pauseWriterThreshold">The number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> before <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> starts blocking. A value of zero prevents <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> from ever blocking, effectively making the number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> unlimited.</param>
<param name="resumeWriterThreshold">The number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> stops blocking.</param>
<param name="minimumSegmentSize">The minimum size of the segment requested from <paramref name="pool" />.</param>
<param name="useSynchronizationContext">
<see langword="true" /> if asynchronous continuations should be executed on the <see cref="T:System.Threading.SynchronizationContext" /> they were captured on; <see langword="false" /> otherwise. This takes precedence over the schedulers specified in <see cref="P:System.IO.Pipelines.PipeOptions.ReaderScheduler" /> and <see cref="P:System.IO.Pipelines.PipeOptions.WriterScheduler" />.</param>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.Default">
<summary>Gets the default instance of <see cref="T:System.IO.Pipelines.PipeOptions" />.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeOptions" /> object initialized with default parameters.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.MinimumSegmentSize">
<summary>Gets the minimum size of the segment requested from the <see cref="P:System.IO.Pipelines.PipeOptions.Pool" />.</summary>
<returns>The minimum size of the segment requested from the <see cref="P:System.IO.Pipelines.PipeOptions.Pool" />.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.PauseWriterThreshold">
<summary>Gets the number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> starts blocking.</summary>
<returns>The number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> starts blocking.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.Pool">
<summary>Gets the <see cref="T:System.Buffers.MemoryPool`1" /> object used for buffer management.</summary>
<returns>A pool of memory blocks used for buffer management.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.ReaderScheduler">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeScheduler" /> used to execute <see cref="T:System.IO.Pipelines.PipeReader" /> callbacks and async continuations.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeScheduler" /> that is used to execute <see cref="T:System.IO.Pipelines.PipeReader" /> callbacks and async continuations.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.ResumeWriterThreshold">
<summary>Gets the number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> stops blocking.</summary>
<returns>The number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> stops blocking.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.UseSynchronizationContext">
<summary>Gets a value that determines if asynchronous callbacks and continuations should be executed on the <see cref="T:System.Threading.SynchronizationContext" /> they were captured on. This takes precedence over the schedulers specified in <see cref="P:System.IO.Pipelines.PipeOptions.ReaderScheduler" /> and <see cref="P:System.IO.Pipelines.PipeOptions.WriterScheduler" />.</summary>
<returns>
<see langword="true" /> if asynchronous callbacks and continuations should be executed on the <see cref="T:System.Threading.SynchronizationContext" /> they were captured on; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.WriterScheduler">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeScheduler" /> used to execute <see cref="T:System.IO.Pipelines.PipeWriter" /> callbacks and async continuations.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeScheduler" /> object used to execute <see cref="T:System.IO.Pipelines.PipeWriter" /> callbacks and async continuations.</returns>
</member>
<member name="T:System.IO.Pipelines.PipeReader">
<summary>Defines a class that provides access to a read side of pipe.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeReader.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.IO.Pipelines.PipeReader" /> class.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeReader.AdvanceTo(System.SequencePosition)">
<summary>Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed.</summary>
<param name="consumed">Marks the extent of the data that has been successfully processed.</param>
</member>
<member name="M:System.IO.Pipelines.PipeReader.AdvanceTo(System.SequencePosition,System.SequencePosition)">
<summary>Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed, read and examined.</summary>
<param name="consumed">Marks the extent of the data that has been successfully processed.</param>
<param name="examined">Marks the extent of the data that has been read and examined.</param>
</member>
<member name="M:System.IO.Pipelines.PipeReader.AsStream(System.Boolean)">
<summary>Returns a <see cref="T:System.IO.Stream" /> representation of the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
<param name="leaveOpen">An optional flag that indicates whether disposing the returned <see cref="T:System.IO.Stream" /> leaves <see cref="T:System.IO.Pipelines.PipeReader" /> open (<see langword="true" />) or completes <see cref="T:System.IO.Pipelines.PipeReader" /> (<see langword="false" />).</param>
<returns>A stream that represents the <see cref="T:System.IO.Pipelines.PipeReader" />.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.CancelPendingRead">
<summary>Cancels to currently pending or if none is pending next call to <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" />, without completing the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeReader.Complete(System.Exception)">
<summary>Signals to the producer that the consumer is done reading.</summary>
<param name="exception">Optional <see cref="T:System.Exception" /> indicating a failure that's causing the pipeline to complete.</param>
</member>
<member name="M:System.IO.Pipelines.PipeReader.CompleteAsync(System.Exception)">
<summary>Marks the current pipe reader instance as being complete, meaning no more data will be read from it.</summary>
<param name="exception">An optional exception that indicates the failure that caused the reader to complete.</param>
<returns>A value task that represents the asynchronous complete operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.CopyToAsync(System.IO.Pipelines.PipeWriter,System.Threading.CancellationToken)">
<summary>Asynchronously reads the bytes from the <see cref="T:System.IO.Pipelines.PipeReader" /> and writes them to the specified <see cref="T:System.IO.Pipelines.PipeWriter" />, using a specified buffer size and cancellation token.</summary>
<param name="destination">The pipe writer to which the contents of the current stream will be copied.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous copy operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.CopyToAsync(System.IO.Stream,System.Threading.CancellationToken)">
<summary>Asynchronously reads the bytes from the <see cref="T:System.IO.Pipelines.PipeReader" /> and writes them to the specified stream, using a specified cancellation token.</summary>
<param name="destination">The stream to which the contents of the current stream will be copied.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous copy operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.Create(System.IO.Stream,System.IO.Pipelines.StreamPipeReaderOptions)">
<summary>Creates a <see cref="T:System.IO.Pipelines.PipeReader" /> wrapping the specified <see cref="T:System.IO.Stream" />.</summary>
<param name="stream">The stream that the pipe reader will wrap.</param>
<param name="readerOptions">The options to configure the pipe reader.</param>
<returns>A <see cref="T:System.IO.Pipelines.PipeReader" /> that wraps the <see cref="T:System.IO.Stream" />.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.OnWriterCompleted(System.Action{System.Exception,System.Object},System.Object)">
<summary>Registers a callback that executes when the <see cref="T:System.IO.Pipelines.PipeWriter" /> side of the pipe is completed.</summary>
<param name="callback">The callback to register.</param>
<param name="state">The state object to pass to <paramref name="callback" /> when it's invoked.</param>
</member>
<member name="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)">
<summary>Asynchronously reads a sequence of bytes from the current <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see langword="default" />.</param>
<returns>A <see cref="T:System.Threading.Tasks.ValueTask`1" /> representing the asynchronous read operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.TryRead(System.IO.Pipelines.ReadResult@)">
<summary>Attempts to synchronously read data the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
<param name="result">When this method returns <see langword="true" />, this value is set to a <see cref="T:System.IO.Pipelines.ReadResult" /> instance that represents the result of the read call; otherwise, this value is set to <see langword="default" />.</param>
<returns>
<see langword="true" /> if data was available, or if the call was canceled or the writer was completed; otherwise, <see langword="false" />.</returns>
</member>
<member name="T:System.IO.Pipelines.PipeScheduler">
<summary>Abstraction for running <see cref="T:System.IO.Pipelines.PipeReader" /> and <see cref="T:System.IO.Pipelines.PipeWriter" /> callbacks and continuations.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeScheduler.#ctor">
<summary>Initializes new a <see cref="T:System.IO.Pipelines.PipeScheduler" /> instance.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeScheduler.Schedule(System.Action{System.Object},System.Object)">
<summary>Requests <paramref name="action" /> to be run on scheduler with <paramref name="state" /> being passed in.</summary>
<param name="action">The single-parameter action delegate to schedule.</param>
<param name="state">The parameter to pass to the <paramref name="action" /> delegate.</param>
</member>
<member name="P:System.IO.Pipelines.PipeScheduler.Inline">
<summary>The <see cref="T:System.IO.Pipelines.PipeScheduler" /> implementation that runs callbacks inline.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeScheduler" /> instance that runs callbacks inline.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeScheduler.ThreadPool">
<summary>The <see cref="T:System.IO.Pipelines.PipeScheduler" /> implementation that queues callbacks to the thread pool.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeScheduler" /> instance that queues callbacks to the thread pool.</returns>
</member>
<member name="T:System.IO.Pipelines.PipeWriter">
<summary>Defines a class that provides a pipeline to which data can be written.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.#ctor">
<summary>Initializes a new instance of the class.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.Advance(System.Int32)">
<summary>Notifies the <see cref="T:System.IO.Pipelines.PipeWriter" /> that <paramref name="bytes" /> bytes were written to the output <see cref="T:System.Span`1" /> or <see cref="T:System.Memory`1" />. You must request a new buffer after calling <see cref="M:System.IO.Pipelines.PipeWriter.Advance(System.Int32)" /> to continue writing more data; you cannot write to a previously acquired buffer.</summary>
<param name="bytes">The number of bytes written to the <see cref="T:System.Span`1" /> or <see cref="T:System.Memory`1" />.</param>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.AsStream(System.Boolean)">
<summary>Returns a <see cref="T:System.IO.Stream" /> representation of the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
<param name="leaveOpen">An optional flag that indicates whether disposing the returned <see cref="T:System.IO.Stream" /> leaves <see cref="T:System.IO.Pipelines.PipeReader" /> open (<see langword="true" />) or completes <see cref="T:System.IO.Pipelines.PipeReader" /> (<see langword="false" />).</param>
<returns>A stream that represents the <see cref="T:System.IO.Pipelines.PipeWriter" />.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.CancelPendingFlush">
<summary>Cancels the pending <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation. If there is none, cancels next <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation, without completing the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.Complete(System.Exception)">
<summary>Marks the <see cref="T:System.IO.Pipelines.PipeWriter" /> as being complete, meaning no more items will be written to it.</summary>
<param name="exception">Optional <see cref="T:System.Exception" /> indicating a failure that's causing the pipeline to complete.</param>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.CompleteAsync(System.Exception)">
<summary>Marks the current pipe writer instance as being complete, meaning no more data will be written to it.</summary>
<param name="exception">An optional exception that indicates the failure that caused the pipeline to complete.</param>
<returns>A value task that represents the asynchronous complete operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.CopyFromAsync(System.IO.Stream,System.Threading.CancellationToken)">
<summary>Asynchronously reads the bytes from the specified stream and writes them to the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
<param name="source">The stream from which the contents will be copied.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous copy operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.Create(System.IO.Stream,System.IO.Pipelines.StreamPipeWriterOptions)">
<summary>Creates a <see cref="T:System.IO.Pipelines.PipeWriter" /> wrapping the specified <see cref="T:System.IO.Stream" />.</summary>
<param name="stream">The stream that the pipe writer will wrap.</param>
<param name="writerOptions">The options to configure the pipe writer.</param>
<returns>A <see cref="T:System.IO.Pipelines.PipeWriter" /> that wraps the <see cref="T:System.IO.Stream" />.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)">
<summary>Makes bytes written available to <see cref="T:System.IO.Pipelines.PipeReader" /> and runs <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> continuation.</summary>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents and wraps the asynchronous flush operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.GetMemory(System.Int32)">
<summary>Returns a <see cref="T:System.Memory`1" /> to write to that is at least the requested size, as specified by the <paramref name="sizeHint" /> parameter.</summary>
<param name="sizeHint">The minimum length of the returned <see cref="T:System.Memory`1" />. If 0, a non-empty memory buffer of arbitrary size is returned.</param>
<exception cref="T:System.OutOfMemoryException">The requested buffer size is not available.</exception>
<returns>A memory buffer of at least <paramref name="sizeHint" /> bytes. If <paramref name="sizeHint" /> is 0, returns a non-empty buffer of arbitrary size.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.GetSpan(System.Int32)">
<summary>Returns a <see cref="T:System.Span`1" /> to write to that is at least the requested size, as specified by the <paramref name="sizeHint" /> parameter.</summary>
<param name="sizeHint">The minimum length of the returned <see cref="T:System.Span`1" />. If 0, a non-empty buffer of arbitrary size is returned.</param>
<exception cref="T:System.OutOfMemoryException">The requested buffer size is not available.</exception>
<returns>A buffer of at least <paramref name="sizeHint" /> bytes. If <paramref name="sizeHint" /> is 0, returns a non-empty buffer of arbitrary size.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.OnReaderCompleted(System.Action{System.Exception,System.Object},System.Object)">
<summary>Registers a callback that executes when the <see cref="T:System.IO.Pipelines.PipeReader" /> side of the pipe is completed.</summary>
<param name="callback">The callback to register.</param>
<param name="state">The state object to pass to <paramref name="callback" /> when it's invoked.</param>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.WriteAsync(System.ReadOnlyMemory{System.Byte},System.Threading.CancellationToken)">
<summary>Writes the specified byte memory range to the pipe and makes data accessible to the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
<param name="source">The read-only byte memory region to write.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous write operation, and wraps the flush asynchronous operation.</returns>
</member>
<member name="T:System.IO.Pipelines.ReadResult">
<summary>Represents the result of a <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> call.</summary>
</member>
<member name="M:System.IO.Pipelines.ReadResult.#ctor(System.Buffers.ReadOnlySequence{System.Byte},System.Boolean,System.Boolean)">
<summary>Creates a new instance of <see cref="T:System.IO.Pipelines.ReadResult" /> setting <see cref="P:System.IO.Pipelines.ReadResult.IsCanceled" /> and <see cref="P:System.IO.Pipelines.ReadResult.IsCompleted" /> flags.</summary>
<param name="buffer">The read-only sequence containing the bytes of data that were read in the <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> call.</param>
<param name="isCanceled">A flag that indicates if the <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> operation that produced this <see cref="T:System.IO.Pipelines.ReadResult" /> was canceled by <see cref="M:System.IO.Pipelines.PipeReader.CancelPendingRead" />.</param>
<param name="isCompleted">A flag that indicates whether the end of the data stream has been reached.</param>
</member>
<member name="P:System.IO.Pipelines.ReadResult.Buffer">
<summary>Gets the <see cref="T:System.Buffers.ReadOnlySequence`1" /> that was read.</summary>
<returns>A read-only sequence containing the bytes of data that were read in the <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> call.</returns>
</member>
<member name="P:System.IO.Pipelines.ReadResult.IsCanceled">
<summary>Gets a value that indicates whether the current <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> operation was canceled.</summary>
<returns>
<see langword="true" /> if the <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> operation that produced this <see cref="T:System.IO.Pipelines.ReadResult" /> was canceled by <see cref="M:System.IO.Pipelines.PipeReader.CancelPendingRead" />; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.ReadResult.IsCompleted">
<summary>Gets a value that indicates whether the end of the data stream has been reached.</summary>
<returns>
<see langword="true" /> if the end of the data stream has been reached; otherwise, <see langword="false" />.</returns>
</member>
<member name="T:System.IO.Pipelines.StreamPipeExtensions">
<summary>Provides extension methods for <see cref="T:System.IO.Stream" /> that support read and write operations directly into pipes.</summary>
</member>
<member name="M:System.IO.Pipelines.StreamPipeExtensions.CopyToAsync(System.IO.Stream,System.IO.Pipelines.PipeWriter,System.Threading.CancellationToken)">
<summary>Asynchronously reads the bytes from the <see cref="T:System.IO.Stream" /> and writes them to the specified <see cref="T:System.IO.Pipelines.PipeWriter" />, using a cancellation token.</summary>
<param name="source">The stream from which the contents of the current stream will be copied.</param>
<param name="destination">The writer to which the contents of the source stream will be copied.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous copy operation.</returns>
</member>
<member name="T:System.IO.Pipelines.StreamPipeReaderOptions">
<summary>Represents a set of options for controlling the creation of the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
</member>
<member name="M:System.IO.Pipelines.StreamPipeReaderOptions.#ctor(System.Buffers.MemoryPool{System.Byte},System.Int32,System.Int32,System.Boolean)">
<summary>Initializes a <see cref="T:System.IO.Pipelines.StreamPipeReaderOptions" /> instance, optionally specifying a memory pool, a minimum buffer size, a minimum read size, and whether the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeReader" /> completes.</summary>
<param name="pool">The memory pool to use when allocating memory. The default value is <see langword="null" />.</param>
<param name="bufferSize">The minimum buffer size to use when renting memory from the <paramref name="pool" />. The default value is 4096.</param>
<param name="minimumReadSize">The threshold of remaining bytes in the buffer before a new buffer is allocated. The default value is 1024.</param>
<param name="leaveOpen">
<see langword="true" /> to leave the underlying stream open after the <see cref="T:System.IO.Pipelines.PipeReader" /> completes; <see langword="false" /> to close it. The default is <see langword="false" />.</param>
</member>
<member name="P:System.IO.Pipelines.StreamPipeReaderOptions.BufferSize">
<summary>Gets the minimum buffer size to use when renting memory from the <see cref="P:System.IO.Pipelines.StreamPipeReaderOptions.Pool" />.</summary>
<returns>The buffer size.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeReaderOptions.LeaveOpen">
<summary>Gets the value that indicates if the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeReader" /> completes.</summary>
<returns>
<see langword="true" /> if the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeReader" /> completes; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeReaderOptions.MinimumReadSize">
<summary>Gets the threshold of remaining bytes in the buffer before a new buffer is allocated.</summary>
<returns>The minimum read size.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeReaderOptions.Pool">
<summary>Gets the <see cref="T:System.Buffers.MemoryPool`1" /> to use when allocating memory.</summary>
<returns>A memory pool instance.</returns>
</member>
<member name="T:System.IO.Pipelines.StreamPipeWriterOptions">
<summary>Represents a set of options for controlling the creation of the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
</member>
<member name="M:System.IO.Pipelines.StreamPipeWriterOptions.#ctor(System.Buffers.MemoryPool{System.Byte},System.Int32,System.Boolean)">
<summary>Initializes a <see cref="T:System.IO.Pipelines.StreamPipeWriterOptions" /> instance, optionally specifying a memory pool, a minimum buffer size, and whether the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeWriter" /> completes.</summary>
<param name="pool">The memory pool to use when allocating memory. The default value is <see langword="null" />.</param>
<param name="minimumBufferSize">The minimum buffer size to use when renting memory from the <paramref name="pool" />. The default value is 4096.</param>
<param name="leaveOpen">
<see langword="true" /> to leave the underlying stream open after the <see cref="T:System.IO.Pipelines.PipeWriter" /> completes; <see langword="false" /> to close it. The default is <see langword="false" />.</param>
</member>
<member name="P:System.IO.Pipelines.StreamPipeWriterOptions.LeaveOpen">
<summary>Gets the value that indicates if the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeWriter" /> completes.</summary>
<returns>
<see langword="true" /> if the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeWriter" /> completes; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeWriterOptions.MinimumBufferSize">
<summary>Gets the minimum buffer size to use when renting memory from the <see cref="P:System.IO.Pipelines.StreamPipeWriterOptions.Pool" />.</summary>
<returns>An integer representing the minimum buffer size.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeWriterOptions.Pool">
<summary>Gets the <see cref="T:System.Buffers.MemoryPool`1" /> to use when allocating memory.</summary>
<returns>A memory pool instance.</returns>
</member>
</members>
</doc>

BIN
bin/Debug/System.Memory.dll Normal file

Binary file not shown.

355
bin/Debug/System.Memory.xml Normal file
View File

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

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,291 @@
<?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.Add``1(``0@,System.UIntPtr)">
<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(System.Void*,System.Int32)">
<summary>Adds an element offset to the given void pointer.</summary>
<param name="source">The void pointer to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of void pointer.</typeparam>
<returns>A new void pointer that reflects the addition of offset to the specified 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.AddByteOffset``1(``0@,System.UIntPtr)">
<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>
<see langword="true" /> if <paramref name="left" /> and <paramref name="right" /> point to the same location; otherwise, <see langword="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" />.</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" />.</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(``0@)">
<summary>Reinterprets the given read-only reference as a reference.</summary>
<param name="source">The read-only reference to reinterpret.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A reference to a value of type <typeparamref name="T" />.</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" />.</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" />.</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" /> - <paramref name="origin" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(``0@,System.Void*)">
<summary>Copies a value of type <typeparamref name="T" /> 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.Copy``1(System.Void*,``0@)">
<summary>Copies a value of type <typeparamref name="T" /> 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.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.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.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.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.IsAddressGreaterThan``1(``0@,``0@)">
<summary>Returns a value that indicates whether a specified reference is greater than another specified reference.</summary>
<param name="left">The first value to compare.</param>
<param name="right">The second value to compare.</param>
<typeparam name="T">The type of the reference.</typeparam>
<returns>
<see langword="true" /> if <paramref name="left" /> is greater than <paramref name="right" />; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.IsAddressLessThan``1(``0@,``0@)">
<summary>Returns a value that indicates whether a specified reference is less than another specified reference.</summary>
<param name="left">The first value to compare.</param>
<param name="right">The second value to compare.</param>
<typeparam name="T">The type of the reference.</typeparam>
<returns>
<see langword="true" /> if <paramref name="left" /> is less than <paramref name="right" />; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.IsNullRef``1(``0@)">
<summary>Determines if a given reference to a value of type <typeparamref name="T" /> is a null reference.</summary>
<param name="source">The reference to check.</param>
<typeparam name="T">The type of the reference.</typeparam>
<returns>
<see langword="true" /> if <paramref name="source" /> is a null reference; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.NullRef``1">
<summary>Returns a reference to a value of type <typeparamref name="T" /> that is a null reference.</summary>
<typeparam name="T">The type of the reference.</typeparam>
<returns>A reference to a value of type <typeparamref name="T" /> that is a null reference.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Read``1(System.Void*)">
<summary>Reads a value of type <typeparamref name="T" /> 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" /> 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" /> 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" /> 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" /> 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" /> 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" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SkipInit``1(``0@)">
<summary>Bypasses definite assignment rules for a given value.</summary>
<param name="value">The uninitialized object.</param>
<typeparam name="T">The type of the uninitialized object.</typeparam>
</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 subtraction 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 subtraction of offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.UIntPtr)">
<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(System.Void*,System.Int32)">
<summary>Subtracts an element offset from the given void pointer.</summary>
<param name="source">The void pointer to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of the void pointer.</typeparam>
<returns>A new void pointer that reflects the subtraction of offset from the specified 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">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subtraction of byte offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SubtractByteOffset``1(``0@,System.UIntPtr)">
<summary>Subtracts a byte offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="byteOffset">The offset to subtract.</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.Unbox``1(System.Object)">
<summary>Returns a <see langword="mutable ref" /> to a boxed value.</summary>
<param name="box">The value to unbox.</param>
<typeparam name="T">The type to be unboxed.</typeparam>
<exception cref="T:System.NullReferenceException">
<paramref name="box" /> is <see langword="null" />, and <typeparamref name="T" /> is a non-nullable value type.</exception>
<exception cref="T:System.InvalidCastException">
<paramref name="box" /> is not a boxed value type.
-or-
<paramref name="box" /> is not a boxed <typeparamref name="T" />.</exception>
<exception cref="T:System.TypeLoadException">
<typeparamref name="T" /> cannot be found.</exception>
<returns>A <see langword="mutable ref" /> to the boxed value <paramref name="box" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Write``1(System.Void*,``0)">
<summary>Writes a value of type <typeparamref name="T" /> 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" /> 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" /> 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>

Binary file not shown.

View File

@@ -0,0 +1,939 @@
<?xml version="1.0" encoding="utf-8"?>
<doc>
<assembly>
<name>System.Text.Encodings.Web</name>
</assembly>
<members>
<member name="T:System.Text.Encodings.Web.HtmlEncoder">
<summary>Represents an HTML character encoding.</summary>
</member>
<member name="M:System.Text.Encodings.Web.HtmlEncoder.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Text.Encodings.Web.HtmlEncoder" /> class.</summary>
</member>
<member name="M:System.Text.Encodings.Web.HtmlEncoder.Create(System.Text.Encodings.Web.TextEncoderSettings)">
<summary>Creates a new instance of the HtmlEncoder class with the specified settings.</summary>
<param name="settings">Settings that control how the <see cref="T:System.Text.Encodings.Web.HtmlEncoder" /> instance encodes, primarily which characters to encode.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="settings" /> is <see langword="null" />.</exception>
<returns>A new instance of the <see cref="T:System.Text.Encodings.Web.HtmlEncoder" /> class.</returns>
</member>
<member name="M:System.Text.Encodings.Web.HtmlEncoder.Create(System.Text.Unicode.UnicodeRange[])">
<summary>Creates a new instance of the HtmlEncoder class that specifies characters the encoder is allowed to not encode.</summary>
<param name="allowedRanges">The set of characters that the encoder is allowed to not encode.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="allowedRanges" /> is <see langword="null" />.</exception>
<returns>A new instance of the <see cref="T:System.Text.Encodings.Web.HtmlEncoder" /> class.</returns>
</member>
<member name="P:System.Text.Encodings.Web.HtmlEncoder.Default">
<summary>Gets a built-in instance of the <see cref="T:System.Text.Encodings.Web.HtmlEncoder" /> class.</summary>
<returns>A built-in instance of the <see cref="T:System.Text.Encodings.Web.HtmlEncoder" /> class.</returns>
</member>
<member name="T:System.Text.Encodings.Web.JavaScriptEncoder">
<summary>Represents a JavaScript character encoding.</summary>
</member>
<member name="M:System.Text.Encodings.Web.JavaScriptEncoder.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Text.Encodings.Web.JavaScriptEncoder" /> class.</summary>
</member>
<member name="M:System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Encodings.Web.TextEncoderSettings)">
<summary>Creates a new instance of JavaScriptEncoder class with the specified settings.</summary>
<param name="settings">Settings that control how the <see cref="T:System.Text.Encodings.Web.JavaScriptEncoder" /> instance encodes, primarily which characters to encode.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="settings" /> is <see langword="null" />.</exception>
<returns>A new instance of the <see cref="T:System.Text.Encodings.Web.JavaScriptEncoder" /> class.</returns>
</member>
<member name="M:System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRange[])">
<summary>Creates a new instance of the JavaScriptEncoder class that specifies characters the encoder is allowed to not encode.</summary>
<param name="allowedRanges">The set of characters that the encoder is allowed to not encode.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="allowedRanges" /> is <see langword="null" />.</exception>
<returns>A new instance of the <see cref="T:System.Text.Encodings.Web.JavaScriptEncoder" /> class.</returns>
</member>
<member name="P:System.Text.Encodings.Web.JavaScriptEncoder.Default">
<summary>Gets a built-in instance of the <see cref="T:System.Text.Encodings.Web.JavaScriptEncoder" /> class.</summary>
<returns>A built-in instance of the <see cref="T:System.Text.Encodings.Web.JavaScriptEncoder" /> class.</returns>
</member>
<member name="P:System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping">
<summary>Gets a built-in JavaScript encoder instance that is less strict about what is encoded.</summary>
<returns>A JavaScript encoder instance.</returns>
</member>
<member name="T:System.Text.Encodings.Web.TextEncoder">
<summary>The base class of web encoders.</summary>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoder.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Text.Encodings.Web.TextEncoder" /> class.</summary>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoder.Encode(System.IO.TextWriter,System.Char[],System.Int32,System.Int32)">
<summary>Encodes characters from an array and writes them to a <see cref="T:System.IO.TextWriter" /> object.</summary>
<param name="output">The stream to which to write the encoded text.</param>
<param name="value">The array of characters to encode.</param>
<param name="startIndex">The array index of the first character to encode.</param>
<param name="characterCount">The number of characters in the array to encode.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="output" /> is <see langword="null" />.</exception>
<exception cref="T:System.ArgumentException">The <see cref="M:System.Text.Encodings.Web.TextEncoder.TryEncodeUnicodeScalar(System.Int32,System.Char*,System.Int32,System.Int32@)" /> method failed. The encoder does not implement <see cref="P:System.Text.Encodings.Web.TextEncoder.MaxOutputCharactersPerInputCharacter" /> correctly.</exception>
<exception cref="T:System.ArgumentNullException">
<paramref name="value" /> is <see langword="null" />.</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="startIndex" /> is out of range.</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="characterCount" /> is out of range.</exception>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoder.Encode(System.IO.TextWriter,System.String)">
<summary>Encodes the specified string to a <see cref="T:System.IO.TextWriter" /> object.</summary>
<param name="output">The stream to which to write the encoded text.</param>
<param name="value">The string to encode.</param>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoder.Encode(System.IO.TextWriter,System.String,System.Int32,System.Int32)">
<summary>Encodes a substring and writes it to a <see cref="T:System.IO.TextWriter" /> object.</summary>
<param name="output">The stream to which to write the encoded text.</param>
<param name="value">The string whose substring is to be encoded.</param>
<param name="startIndex">The index where the substring starts.</param>
<param name="characterCount">The number of characters in the substring.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="output" /> is <see langword="null" />.</exception>
<exception cref="T:System.ArgumentException">The <see cref="M:System.Text.Encodings.Web.TextEncoder.TryEncodeUnicodeScalar(System.Int32,System.Char*,System.Int32,System.Int32@)" /> method failed. The encoder does not implement <see cref="P:System.Text.Encodings.Web.TextEncoder.MaxOutputCharactersPerInputCharacter" /> correctly.</exception>
<exception cref="T:System.ArgumentNullException">
<paramref name="value" /> is <see langword="null" />.</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="startIndex" /> is out of range.</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="characterCount" /> is out of range.</exception>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoder.Encode(System.ReadOnlySpan{System.Char},System.Span{System.Char},System.Int32@,System.Int32@,System.Boolean)">
<summary>Encodes the supplied characters.</summary>
<param name="source">A source buffer containing the characters to encode.</param>
<param name="destination">The destination buffer to which the encoded form of <paramref name="source" /> will be written.</param>
<param name="charsConsumed">The number of characters consumed from the <paramref name="source" /> buffer.</param>
<param name="charsWritten">The number of characters written to the <paramref name="destination" /> buffer.</param>
<param name="isFinalBlock">
<see langword="true" /> to indicate there is no further source data that needs to be encoded; otherwise, <see langword="false" />.</param>
<returns>An enumeration value that describes the result of the encoding operation.</returns>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoder.Encode(System.String)">
<summary>Encodes the supplied string and returns the encoded text as a new string.</summary>
<param name="value">The string to encode.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="value" /> is <see langword="null" />.</exception>
<exception cref="T:System.ArgumentException">The <see cref="M:System.Text.Encodings.Web.TextEncoder.TryEncodeUnicodeScalar(System.Int32,System.Char*,System.Int32,System.Int32@)" /> method failed. The encoder does not implement <see cref="P:System.Text.Encodings.Web.TextEncoder.MaxOutputCharactersPerInputCharacter" /> correctly.</exception>
<returns>The encoded string.</returns>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoder.EncodeUtf8(System.ReadOnlySpan{System.Byte},System.Span{System.Byte},System.Int32@,System.Int32@,System.Boolean)">
<summary>Encodes the supplied UTF-8 text.</summary>
<param name="utf8Source">A source buffer containing the UTF-8 text to encode.</param>
<param name="utf8Destination">The destination buffer to which the encoded form of <paramref name="utf8Source" /> will be written.</param>
<param name="bytesConsumed">The number of bytes consumed from the <paramref name="utf8Source" /> buffer.</param>
<param name="bytesWritten">The number of bytes written to the <paramref name="utf8Destination" /> buffer.</param>
<param name="isFinalBlock">
<see langword="true" /> to indicate there is no further source data that needs to be encoded; otherwise, <see langword="false" />.</param>
<returns>A status code that describes the result of the encoding operation.</returns>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoder.FindFirstCharacterToEncode(System.Char*,System.Int32)">
<summary>Finds the index of the first character to encode.</summary>
<param name="text">The text buffer to search.</param>
<param name="textLength">The number of characters in <paramref name="text" />.</param>
<returns>The index of the first character to encode.</returns>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoder.FindFirstCharacterToEncodeUtf8(System.ReadOnlySpan{System.Byte})">
<summary>Finds the first element in a UTF-8 text input buffer that would be escaped by the current encoder instance.</summary>
<param name="utf8Text">The UTF-8 text input buffer to search.</param>
<returns>The index of the first element in <paramref name="utf8Text" /> that would be escaped by the current encoder instance, or -1 if no data in <paramref name="utf8Text" /> requires escaping.</returns>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoder.TryEncodeUnicodeScalar(System.Int32,System.Char*,System.Int32,System.Int32@)">
<summary>Encodes a Unicode scalar value and writes it to a buffer.</summary>
<param name="unicodeScalar">A Unicode scalar value.</param>
<param name="buffer">A pointer to the buffer to which to write the encoded text.</param>
<param name="bufferLength">The length of the destination <paramref name="buffer" /> in characters.</param>
<param name="numberOfCharactersWritten">When the method returns, indicates the number of characters written to the <paramref name="buffer" />.</param>
<returns>
<see langword="false" /> if <paramref name="bufferLength" /> is too small to fit the encoded text; otherwise, returns <see langword="true" />.</returns>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoder.WillEncode(System.Int32)">
<summary>Determines if a given Unicode scalar value will be encoded.</summary>
<param name="unicodeScalar">A Unicode scalar value.</param>
<returns>
<see langword="true" /> if the <paramref name="unicodeScalar" /> value will be encoded by this encoder; otherwise, returns <see langword="false" />.</returns>
</member>
<member name="P:System.Text.Encodings.Web.TextEncoder.MaxOutputCharactersPerInputCharacter">
<summary>Gets the maximum number of characters that this encoder can generate for each input code point.</summary>
<returns>The maximum number of characters.</returns>
</member>
<member name="T:System.Text.Encodings.Web.TextEncoderSettings">
<summary>Represents a filter that allows only certain Unicode code points.</summary>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.#ctor">
<summary>Instantiates an empty filter (allows no code points through by default).</summary>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.#ctor(System.Text.Encodings.Web.TextEncoderSettings)">
<summary>Instantiates a filter by cloning the allowed list of another <see cref="T:System.Text.Encodings.Web.TextEncoderSettings" /> object.</summary>
<param name="other">The other <see cref="T:System.Text.Encodings.Web.TextEncoderSettings" /> object to be cloned.</param>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.#ctor(System.Text.Unicode.UnicodeRange[])">
<summary>Instantiates a filter where only the character ranges specified by <paramref name="allowedRanges" /> are allowed by the filter.</summary>
<param name="allowedRanges">The allowed character ranges.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="allowedRanges" /> is <see langword="null" />.</exception>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.AllowCharacter(System.Char)">
<summary>Allows the character specified by <paramref name="character" /> through the filter.</summary>
<param name="character">The allowed character.</param>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.AllowCharacters(System.Char[])">
<summary>Allows all characters specified by <paramref name="characters" /> through the filter.</summary>
<param name="characters">The allowed characters.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="characters" /> is <see langword="null" />.</exception>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.AllowCodePoints(System.Collections.Generic.IEnumerable{System.Int32})">
<summary>Allows all code points specified by <paramref name="codePoints" />.</summary>
<param name="codePoints">The allowed code points.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="codePoints" /> is <see langword="null" />.</exception>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.AllowRange(System.Text.Unicode.UnicodeRange)">
<summary>Allows all characters specified by <paramref name="range" /> through the filter.</summary>
<param name="range">The range of characters to be allowed.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="range" /> is <see langword="null" />.</exception>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.AllowRanges(System.Text.Unicode.UnicodeRange[])">
<summary>Allows all characters specified by <paramref name="ranges" /> through the filter.</summary>
<param name="ranges">The ranges of characters to be allowed.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="ranges" /> is <see langword="null" />.</exception>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.Clear">
<summary>Resets this object by disallowing all characters.</summary>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.ForbidCharacter(System.Char)">
<summary>Disallows the character <paramref name="character" /> through the filter.</summary>
<param name="character">The disallowed character.</param>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.ForbidCharacters(System.Char[])">
<summary>Disallows all characters specified by <paramref name="characters" /> through the filter.</summary>
<param name="characters">The disallowed characters.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="characters" /> is <see langword="null" />.</exception>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.ForbidRange(System.Text.Unicode.UnicodeRange)">
<summary>Disallows all characters specified by <paramref name="range" /> through the filter.</summary>
<param name="range">The range of characters to be disallowed.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="range" /> is <see langword="null" />.</exception>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.ForbidRanges(System.Text.Unicode.UnicodeRange[])">
<summary>Disallows all characters specified by <paramref name="ranges" /> through the filter.</summary>
<param name="ranges">The ranges of characters to be disallowed.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="ranges" /> is <see langword="null" />.</exception>
</member>
<member name="M:System.Text.Encodings.Web.TextEncoderSettings.GetAllowedCodePoints">
<summary>Gets an enumerator of all allowed code points.</summary>
<returns>The enumerator of allowed code points.</returns>
</member>
<member name="T:System.Text.Encodings.Web.UrlEncoder">
<summary>Represents a URL character encoding.</summary>
</member>
<member name="M:System.Text.Encodings.Web.UrlEncoder.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Text.Encodings.Web.UrlEncoder" /> class.</summary>
</member>
<member name="M:System.Text.Encodings.Web.UrlEncoder.Create(System.Text.Encodings.Web.TextEncoderSettings)">
<summary>Creates a new instance of UrlEncoder class with the specified settings.</summary>
<param name="settings">Settings that control how the <see cref="T:System.Text.Encodings.Web.UrlEncoder" /> instance encodes, primarily which characters to encode.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="settings" /> is <see langword="null" />.</exception>
<returns>A new instance of the <see cref="T:System.Text.Encodings.Web.UrlEncoder" /> class.</returns>
</member>
<member name="M:System.Text.Encodings.Web.UrlEncoder.Create(System.Text.Unicode.UnicodeRange[])">
<summary>Creates a new instance of the UrlEncoder class that specifies characters the encoder is allowed to not encode.</summary>
<param name="allowedRanges">The set of characters that the encoder is allowed to not encode.</param>
<exception cref="T:System.ArgumentNullException">
<paramref name="allowedRanges" /> is <see langword="null" />.</exception>
<returns>A new instance of the <see cref="T:System.Text.Encodings.Web.UrlEncoder" /> class.</returns>
</member>
<member name="P:System.Text.Encodings.Web.UrlEncoder.Default">
<summary>Gets a built-in instance of the <see cref="T:System.Text.Encodings.Web.UrlEncoder" /> class.</summary>
<returns>A built-in instance of the <see cref="T:System.Text.Encodings.Web.UrlEncoder" /> class.</returns>
</member>
<member name="T:System.Text.Unicode.UnicodeRange">
<summary>Represents a contiguous range of Unicode code points.</summary>
</member>
<member name="M:System.Text.Unicode.UnicodeRange.#ctor(System.Int32,System.Int32)">
<summary>Creates a new <see cref="T:System.Text.Unicode.UnicodeRange" /> that includes a specified number of characters starting at a specified Unicode code point.</summary>
<param name="firstCodePoint">The first code point in the range.</param>
<param name="length">The number of code points in the range.</param>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="firstCodePoint" /> is less than zero or greater than 0xFFFF.
-or-
<paramref name="length" /> is less than zero.
-or-
<paramref name="firstCodePoint" /> plus <paramref name="length" /> is greater than 0xFFFF.</exception>
</member>
<member name="M:System.Text.Unicode.UnicodeRange.Create(System.Char,System.Char)">
<summary>Creates a new <see cref="T:System.Text.Unicode.UnicodeRange" /> instance from a span of characters.</summary>
<param name="firstCharacter">The first character in the range.</param>
<param name="lastCharacter">The last character in the range.</param>
<exception cref="T:System.ArgumentOutOfRangeException">
<paramref name="lastCharacter" /> precedes <paramref name="firstCharacter" />.</exception>
<returns>A range that includes all characters between <paramref name="firstCharacter" /> and <paramref name="lastCharacter" />.</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRange.FirstCodePoint">
<summary>Gets the first code point in the range represented by this <see cref="T:System.Text.Unicode.UnicodeRange" /> instance.</summary>
<returns>The first code point in the range.</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRange.Length">
<summary>Gets the number of code points in the range represented by this <see cref="T:System.Text.Unicode.UnicodeRange" /> instance.</summary>
<returns>The number of code points in the range.</returns>
</member>
<member name="T:System.Text.Unicode.UnicodeRanges">
<summary>Provides static properties that return predefined <see cref="T:System.Text.Unicode.UnicodeRange" /> instances that correspond to blocks from the Unicode specification.</summary>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.All">
<summary>Gets a range that consists of the entire Basic Multilingual Plane (BMP), from U+0000 to U+FFFF).</summary>
<returns>A range that consists of the entire BMP.</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.AlphabeticPresentationForms">
<summary>Gets the Alphabetic Presentation Forms Unicode block (U+FB00-U+FB4F).</summary>
<returns>The Alphabetic Presentation Forms Unicode block (U+FB00-U+FB4F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Arabic">
<summary>Gets the Arabic Unicode block (U+0600-U+06FF).</summary>
<returns>The Arabic Unicode block (U+0600-U+06FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.ArabicExtendedA">
<summary>Gets the Arabic Extended-A Unicode block (U+08A0-U+08FF).</summary>
<returns>The Arabic Extended-A Unicode block (U+08A0-U+08FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.ArabicExtendedB">
<summary>A <see cref="T:System.Text.Unicode.UnicodeRange" /> corresponding to the 'Arabic Extended-B' Unicode block (U+0870..U+089F).</summary>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.ArabicPresentationFormsA">
<summary>Gets the Arabic Presentation Forms-A Unicode block (U+FB50-U+FDFF).</summary>
<returns>The Arabic Presentation Forms-A Unicode block (U+FB50-U+FDFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.ArabicPresentationFormsB">
<summary>Gets the Arabic Presentation Forms-B Unicode block (U+FE70-U+FEFF).</summary>
<returns>The Arabic Presentation Forms-B Unicode block (U+FE70-U+FEFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.ArabicSupplement">
<summary>Gets the Arabic Supplement Unicode block (U+0750-U+077F).</summary>
<returns>The Arabic Supplement Unicode block (U+0750-U+077F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Armenian">
<summary>Gets the Armenian Unicode block (U+0530-U+058F).</summary>
<returns>The Armenian Unicode block (U+0530-U+058F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Arrows">
<summary>Gets the Arrows Unicode block (U+2190-U+21FF).</summary>
<returns>The Arrows Unicode block (U+2190-U+21FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Balinese">
<summary>Gets the Balinese Unicode block (U+1B00-U+1B7F).</summary>
<returns>The Balinese Unicode block (U+1B00-U+1B7F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Bamum">
<summary>Gets the Bamum Unicode block (U+A6A0-U+A6FF).</summary>
<returns>The Bamum Unicode block (U+A6A0-U+A6FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.BasicLatin">
<summary>Gets the Basic Latin Unicode block (U+0021-U+007F).</summary>
<returns>The Basic Latin Unicode block (U+0021-U+007F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Batak">
<summary>Gets the Batak Unicode block (U+1BC0-U+1BFF).</summary>
<returns>The Batak Unicode block (U+1BC0-U+1BFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Bengali">
<summary>Gets the Bengali Unicode block (U+0980-U+09FF).</summary>
<returns>The Bengali Unicode block (U+0980-U+09FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.BlockElements">
<summary>Gets the Block Elements Unicode block (U+2580-U+259F).</summary>
<returns>The Block Elements Unicode block (U+2580-U+259F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Bopomofo">
<summary>Gets the Bopomofo Unicode block (U+3100-U+312F).</summary>
<returns>The Bopomofo Unicode block (U+3105-U+312F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.BopomofoExtended">
<summary>Gets the Bopomofo Extended Unicode block (U+31A0-U+31BF).</summary>
<returns>The Bopomofo Extended Unicode block (U+31A0-U+31BF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.BoxDrawing">
<summary>Gets the Box Drawing Unicode block (U+2500-U+257F).</summary>
<returns>The Box Drawing Unicode block (U+2500-U+257F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.BraillePatterns">
<summary>Gets the Braille Patterns Unicode block (U+2800-U+28FF).</summary>
<returns>The Braille Patterns Unicode block (U+2800-U+28FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Buginese">
<summary>Gets the Buginese Unicode block (U+1A00-U+1A1F).</summary>
<returns>The Buginese Unicode block (U+1A00-U+1A1F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Buhid">
<summary>Gets the Buhid Unicode block (U+1740-U+175F).</summary>
<returns>The Buhid Unicode block (U+1740-U+175F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Cham">
<summary>Gets the Cham Unicode block (U+AA00-U+AA5F).</summary>
<returns>The Cham Unicode block (U+AA00-U+AA5F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Cherokee">
<summary>Gets the Cherokee Unicode block (U+13A0-U+13FF).</summary>
<returns>The Cherokee Unicode block (U+13A0-U+13FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CherokeeSupplement">
<summary>Gets the Cherokee Supplement Unicode block (U+AB70-U+ABBF).</summary>
<returns>The Cherokee Supplement Unicode block (U+AB70-U+ABBF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CjkCompatibility">
<summary>Gets the CJK Compatibility Unicode block (U+3300-U+33FF).</summary>
<returns>The CJK Compatibility Unicode block (U+3300-U+33FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CjkCompatibilityForms">
<summary>Gets the CJK Compatibility Forms Unicode block (U+FE30-U+FE4F).</summary>
<returns>The CJK Compatibility Forms Unicode block (U+FE30-U+FE4F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CjkCompatibilityIdeographs">
<summary>Gets the CJK Compatibility Ideographs Unicode block (U+F900-U+FAD9).</summary>
<returns>The CJK Compatibility Ideographs Unicode block (U+F900-U+FAD9).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CjkRadicalsSupplement">
<summary>Gets the CJK Radicals Supplement Unicode block (U+2E80-U+2EFF).</summary>
<returns>The CJK Radicals Supplement Unicode block (U+2E80-U+2EFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CjkStrokes">
<summary>Gets the CJK Strokes Unicode block (U+31C0-U+31EF).</summary>
<returns>The CJK Strokes Unicode block (U+31C0-U+31EF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CjkSymbolsandPunctuation">
<summary>Gets the CJK Symbols and Punctuation Unicode block (U+3000-U+303F).</summary>
<returns>The CJK Symbols and Punctuation Unicode block (U+3000-U+303F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CjkUnifiedIdeographs">
<summary>Gets the CJK Unified Ideographs Unicode block (U+4E00-U+9FCC).</summary>
<returns>The CJK Unified Ideographs Unicode block (U+4E00-U+9FCC).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CjkUnifiedIdeographsExtensionA">
<summary>Gets the CJK Unitied Ideographs Extension A Unicode block (U+3400-U+4DB5).</summary>
<returns>The CJK Unitied Ideographs Extension A Unicode block (U+3400-U+4DB5).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CombiningDiacriticalMarks">
<summary>Gets the Combining Diacritical Marks Unicode block (U+0300-U+036F).</summary>
<returns>The Combining Diacritical Marks Unicode block (U+0300-U+036F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CombiningDiacriticalMarksExtended">
<summary>Gets the Combining Diacritical Marks Extended Unicode block (U+1AB0-U+1AFF).</summary>
<returns>The Combining Diacritical Marks Extended Unicode block (U+1AB0-U+1AFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CombiningDiacriticalMarksforSymbols">
<summary>Gets the Combining Diacritical Marks for Symbols Unicode block (U+20D0-U+20FF).</summary>
<returns>The Combining Diacritical Marks for Symbols Unicode block (U+20D0-U+20FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CombiningDiacriticalMarksSupplement">
<summary>Gets the Combining Diacritical Marks Supplement Unicode block (U+1DC0-U+1DFF).</summary>
<returns>The Combining Diacritical Marks Supplement Unicode block (U+1DC0-U+1DFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CombiningHalfMarks">
<summary>Gets the Combining Half Marks Unicode block (U+FE20-U+FE2F).</summary>
<returns>The Combining Half Marks Unicode block (U+FE20-U+FE2F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CommonIndicNumberForms">
<summary>Gets the Common Indic Number Forms Unicode block (U+A830-U+A83F).</summary>
<returns>The Common Indic Number Forms Unicode block (U+A830-U+A83F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.ControlPictures">
<summary>Gets the Control Pictures Unicode block (U+2400-U+243F).</summary>
<returns>The Control Pictures Unicode block (U+2400-U+243F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Coptic">
<summary>Gets the Coptic Unicode block (U+2C80-U+2CFF).</summary>
<returns>The Coptic Unicode block (U+2C80-U+2CFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CurrencySymbols">
<summary>Gets the Currency Symbols Unicode block (U+20A0-U+20CF).</summary>
<returns>The Currency Symbols Unicode block (U+20A0-U+20CF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Cyrillic">
<summary>Gets the Cyrillic Unicode block (U+0400-U+04FF).</summary>
<returns>The Cyrillic Unicode block (U+0400-U+04FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CyrillicExtendedA">
<summary>Gets the Cyrillic Extended-A Unicode block (U+2DE0-U+2DFF).</summary>
<returns>The Cyrillic Extended-A Unicode block (U+2DE0-U+2DFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CyrillicExtendedB">
<summary>Gets the Cyrillic Extended-B Unicode block (U+A640-U+A69F).</summary>
<returns>The Cyrillic Extended-B Unicode block (U+A640-U+A69F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CyrillicExtendedC">
<summary>A <see cref="T:System.Text.Unicode.UnicodeRange" /> corresponding to the 'Cyrillic Extended-C' Unicode block (U+1C80..U+1C8F).</summary>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.CyrillicSupplement">
<summary>Gets the Cyrillic Supplement Unicode block (U+0500-U+052F).</summary>
<returns>The Cyrillic Supplement Unicode block (U+0500-U+052F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Devanagari">
<summary>Gets the Devangari Unicode block (U+0900-U+097F).</summary>
<returns>The Devangari Unicode block (U+0900-U+097F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.DevanagariExtended">
<summary>Gets the Devanagari Extended Unicode block (U+A8E0-U+A8FF).</summary>
<returns>The Devanagari Extended Unicode block (U+A8E0-U+A8FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Dingbats">
<summary>Gets the Dingbats Unicode block (U+2700-U+27BF).</summary>
<returns>The Dingbats Unicode block (U+2700-U+27BF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.EnclosedAlphanumerics">
<summary>Gets the Enclosed Alphanumerics Unicode block (U+2460-U+24FF).</summary>
<returns>The Enclosed Alphanumerics Unicode block (U+2460-U+24FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.EnclosedCjkLettersandMonths">
<summary>Gets the Enclosed CJK Letters and Months Unicode block (U+3200-U+32FF).</summary>
<returns>The Enclosed CJK Letters and Months Unicode block (U+3200-U+32FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Ethiopic">
<summary>Gets the Ethiopic Unicode block (U+1200-U+137C).</summary>
<returns>The Ethiopic Unicode block (U+1200-U+137C).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.EthiopicExtended">
<summary>Gets the Ethipic Extended Unicode block (U+2D80-U+2DDF).</summary>
<returns>The Ethipic Extended Unicode block (U+2D80-U+2DDF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.EthiopicExtendedA">
<summary>Gets the Ethiopic Extended-A Unicode block (U+AB00-U+AB2F).</summary>
<returns>The Ethiopic Extended-A Unicode block (U+AB00-U+AB2F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.EthiopicSupplement">
<summary>Gets the Ethiopic Supplement Unicode block (U+1380-U+1399).</summary>
<returns>The Ethiopic Supplement Unicode block (U+1380-U+1399).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.GeneralPunctuation">
<summary>Gets the General Punctuation Unicode block (U+2000-U+206F).</summary>
<returns>The General Punctuation Unicode block (U+2000-U+206F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.GeometricShapes">
<summary>Gets the Geometric Shapes Unicode block (U+25A0-U+25FF).</summary>
<returns>The Geometric Shapes Unicode block (U+25A0-U+25FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Georgian">
<summary>Gets the Georgian Unicode block (U+10A0-U+10FF).</summary>
<returns>The Georgian Unicode block (U+10A0-U+10FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.GeorgianExtended">
<summary>A <see cref="T:System.Text.Unicode.UnicodeRange" /> corresponding to the 'Georgian Extended' Unicode block (U+1C90..U+1CBF).</summary>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.GeorgianSupplement">
<summary>Gets the Georgian Supplement Unicode block (U+2D00-U+2D2F).</summary>
<returns>The Georgian Supplement Unicode block (U+2D00-U+2D2F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Glagolitic">
<summary>Gets the Glagolitic Unicode block (U+2C00-U+2C5F).</summary>
<returns>The Glagolitic Unicode block (U+2C00-U+2C5F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.GreekandCoptic">
<summary>Gets the Greek and Coptic Unicode block (U+0370-U+03FF).</summary>
<returns>The Greek and Coptic Unicode block (U+0370-U+03FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.GreekExtended">
<summary>Gets the Greek Extended Unicode block (U+1F00-U+1FFF).</summary>
<returns>The Greek Extended Unicode block (U+1F00-U+1FFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Gujarati">
<summary>Gets the Gujarti Unicode block (U+0A81-U+0AFF).</summary>
<returns>The Gujarti Unicode block (U+0A81-U+0AFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Gurmukhi">
<summary>Gets the Gurmukhi Unicode block (U+0A01-U+0A7F).</summary>
<returns>The Gurmukhi Unicode block (U+0A01-U+0A7F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.HalfwidthandFullwidthForms">
<summary>Gets the Halfwidth and Fullwidth Forms Unicode block (U+FF00-U+FFEE).</summary>
<returns>The Halfwidth and Fullwidth Forms Unicode block (U+FF00-U+FFEE).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.HangulCompatibilityJamo">
<summary>Gets the Hangul Compatibility Jamo Unicode block (U+3131-U+318F).</summary>
<returns>The Hangul Compatibility Jamo Unicode block (U+3131-U+318F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.HangulJamo">
<summary>Gets the Hangul Jamo Unicode block (U+1100-U+11FF).</summary>
<returns>The Hangul Jamo Unicode block (U+1100-U+11FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.HangulJamoExtendedA">
<summary>Gets the Hangul Jamo Extended-A Unicode block (U+A960-U+A9F).</summary>
<returns>The Hangul Jamo Extended-A Unicode block (U+A960-U+A97F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.HangulJamoExtendedB">
<summary>Gets the Hangul Jamo Extended-B Unicode block (U+D7B0-U+D7FF).</summary>
<returns>The Hangul Jamo Extended-B Unicode block (U+D7B0-U+D7FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.HangulSyllables">
<summary>Gets the Hangul Syllables Unicode block (U+AC00-U+D7AF).</summary>
<returns>The Hangul Syllables Unicode block (U+AC00-U+D7AF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Hanunoo">
<summary>Gets the Hanunoo Unicode block (U+1720-U+173F).</summary>
<returns>The Hanunoo Unicode block (U+1720-U+173F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Hebrew">
<summary>Gets the Hebrew Unicode block (U+0590-U+05FF).</summary>
<returns>The Hebrew Unicode block (U+0590-U+05FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Hiragana">
<summary>Gets the Hiragana Unicode block (U+3040-U+309F).</summary>
<returns>The Hiragana Unicode block (U+3040-U+309F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.IdeographicDescriptionCharacters">
<summary>Gets the Ideographic Description Characters Unicode block (U+2FF0-U+2FFF).</summary>
<returns>The Ideographic Description Characters Unicode block (U+2FF0-U+2FFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.IpaExtensions">
<summary>Gets the IPA Extensions Unicode block (U+0250-U+02AF).</summary>
<returns>The IPA Extensions Unicode block (U+0250-U+02AF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Javanese">
<summary>Gets the Javanese Unicode block (U+A980-U+A9DF).</summary>
<returns>The Javanese Unicode block (U+A980-U+A9DF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Kanbun">
<summary>Gets the Kanbun Unicode block (U+3190-U+319F).</summary>
<returns>The Kanbun Unicode block (U+3190-U+319F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.KangxiRadicals">
<summary>Gets the Kangxi Radicals Supplement Unicode block (U+2F00-U+2FDF).</summary>
<returns>The Kangxi Radicals Supplement Unicode block (U+2F00-U+2FDF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Kannada">
<summary>Gets the Kannada Unicode block (U+0C81-U+0CFF).</summary>
<returns>The Kannada Unicode block (U+0C81-U+0CFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Katakana">
<summary>Gets the Katakana Unicode block (U+30A0-U+30FF).</summary>
<returns>The Katakana Unicode block (U+30A0-U+30FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.KatakanaPhoneticExtensions">
<summary>Gets the Katakana Phonetic Extensions Unicode block (U+31F0-U+31FF).</summary>
<returns>The Katakana Phonetic Extensions Unicode block (U+31F0-U+31FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.KayahLi">
<summary>Gets the Kayah Li Unicode block (U+A900-U+A92F).</summary>
<returns>The Kayah Li Unicode block (U+A900-U+A92F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Khmer">
<summary>Gets the Khmer Unicode block (U+1780-U+17FF).</summary>
<returns>The Khmer Unicode block (U+1780-U+17FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.KhmerSymbols">
<summary>Gets the Khmer Symbols Unicode block (U+19E0-U+19FF).</summary>
<returns>The Khmer Symbols Unicode block (U+19E0-U+19FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Lao">
<summary>Gets the Lao Unicode block (U+0E80-U+0EDF).</summary>
<returns>The Lao Unicode block (U+0E80-U+0EDF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Latin1Supplement">
<summary>Gets the Latin-1 Supplement Unicode block (U+00A1-U+00FF).</summary>
<returns>The Latin-1 Supplement Unicode block (U+00A1-U+00FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.LatinExtendedA">
<summary>Gets the Latin Extended-A Unicode block (U+0100-U+017F).</summary>
<returns>The Latin Extended-A Unicode block (U+0100-U+017F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.LatinExtendedAdditional">
<summary>Gets the Latin Extended Additional Unicode block (U+1E00-U+1EFF).</summary>
<returns>The Latin Extended Additional Unicode block (U+1E00-U+1EFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.LatinExtendedB">
<summary>Gets the Latin Extended-B Unicode block (U+0180-U+024F).</summary>
<returns>The Latin Extended-B Unicode block (U+0180-U+024F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.LatinExtendedC">
<summary>Gets the Latin Extended-C Unicode block (U+2C60-U+2C7F).</summary>
<returns>The Latin Extended-C Unicode block (U+2C60-U+2C7F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.LatinExtendedD">
<summary>Gets the Latin Extended-D Unicode block (U+A720-U+A7FF).</summary>
<returns>The Latin Extended-D Unicode block (U+A720-U+A7FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.LatinExtendedE">
<summary>Gets the Latin Extended-E Unicode block (U+AB30-U+AB6F).</summary>
<returns>The Latin Extended-E Unicode block (U+AB30-U+AB6F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Lepcha">
<summary>Gets the Lepcha Unicode block (U+1C00-U+1C4F).</summary>
<returns>The Lepcha Unicode block (U+1C00-U+1C4F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.LetterlikeSymbols">
<summary>Gets the Letterlike Symbols Unicode block (U+2100-U+214F).</summary>
<returns>The Letterlike Symbols Unicode block (U+2100-U+214F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Limbu">
<summary>Gets the Limbu Unicode block (U+1900-U+194F).</summary>
<returns>The Limbu Unicode block (U+1900-U+194F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Lisu">
<summary>Gets the Lisu Unicode block (U+A4D0-U+A4FF).</summary>
<returns>The Lisu Unicode block (U+A4D0-U+A4FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Malayalam">
<summary>Gets the Malayalam Unicode block (U+0D00-U+0D7F).</summary>
<returns>The Malayalam Unicode block (U+0D00-U+0D7F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Mandaic">
<summary>Gets the Mandaic Unicode block (U+0840-U+085F).</summary>
<returns>The Mandaic Unicode block (U+0840-U+085F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.MathematicalOperators">
<summary>Gets the Mathematical Operators Unicode block (U+2200-U+22FF).</summary>
<returns>The Mathematical Operators Unicode block (U+2200-U+22FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.MeeteiMayek">
<summary>Gets the Meetei Mayek Unicode block (U+ABC0-U+ABFF).</summary>
<returns>The Meetei Mayek Unicode block (U+ABC0-U+ABFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.MeeteiMayekExtensions">
<summary>Gets the Meetei Mayek Extensions Unicode block (U+AAE0-U+AAFF).</summary>
<returns>The Meetei Mayek Extensions Unicode block (U+AAE0-U+AAFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.MiscellaneousMathematicalSymbolsA">
<summary>Gets the Miscellaneous Mathematical Symbols-A Unicode block (U+27C0-U+27EF).</summary>
<returns>The Miscellaneous Mathematical Symbols-A Unicode block (U+27C0-U+27EF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.MiscellaneousMathematicalSymbolsB">
<summary>Gets the Miscellaneous Mathematical Symbols-B Unicode block (U+2980-U+29FF).</summary>
<returns>The Miscellaneous Mathematical Symbols-B Unicode block (U+2980-U+29FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.MiscellaneousSymbols">
<summary>Gets the Miscellaneous Symbols Unicode block (U+2600-U+26FF).</summary>
<returns>The Miscellaneous Symbols Unicode block (U+2600-U+26FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.MiscellaneousSymbolsandArrows">
<summary>Gets the Miscellaneous Symbols and Arrows Unicode block (U+2B00-U+2BFF).</summary>
<returns>The Miscellaneous Symbols and Arrows Unicode block (U+2B00-U+2BFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.MiscellaneousTechnical">
<summary>Gets the Miscellaneous Technical Unicode block (U+2300-U+23FF).</summary>
<returns>The Miscellaneous Technical Unicode block (U+2300-U+23FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.ModifierToneLetters">
<summary>Gets the Modifier Tone Letters Unicode block (U+A700-U+A71F).</summary>
<returns>The Modifier Tone Letters Unicode block (U+A700-U+A71F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Mongolian">
<summary>Gets the Mongolian Unicode block (U+1800-U+18AF).</summary>
<returns>The Mongolian Unicode block (U+1800-U+18AF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Myanmar">
<summary>Gets the Myanmar Unicode block (U+1000-U+109F).</summary>
<returns>The Myanmar Unicode block (U+1000-U+109F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.MyanmarExtendedA">
<summary>Gets the Myanmar Extended-A Unicode block (U+AA60-U+AA7F).</summary>
<returns>The Myanmar Extended-A Unicode block (U+AA60-U+AA7F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.MyanmarExtendedB">
<summary>Gets the Myanmar Extended-B Unicode block (U+A9E0-U+A9FF).</summary>
<returns>The Myanmar Extended-B Unicode block (U+A9E0-U+A9FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.NewTaiLue">
<summary>Gets the New Tai Lue Unicode block (U+1980-U+19DF).</summary>
<returns>The New Tai Lue Unicode block (U+1980-U+19DF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.NKo">
<summary>Gets the NKo Unicode block (U+07C0-U+07FF).</summary>
<returns>The NKo Unicode block (U+07C0-U+07FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.None">
<summary>Gets an empty Unicode range.</summary>
<returns>A Unicode range with no elements.</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.NumberForms">
<summary>Gets the Number Forms Unicode block (U+2150-U+218F).</summary>
<returns>The Number Forms Unicode block (U+2150-U+218F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Ogham">
<summary>Gets the Ogham Unicode block (U+1680-U+169F).</summary>
<returns>The Ogham Unicode block (U+1680-U+169F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.OlChiki">
<summary>Gets the Ol Chiki Unicode block (U+1C50-U+1C7F).</summary>
<returns>The Ol Chiki Unicode block (U+1C50-U+1C7F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.OpticalCharacterRecognition">
<summary>Gets the Optical Character Recognition Unicode block (U+2440-U+245F).</summary>
<returns>The Optical Character Recognition Unicode block (U+2440-U+245F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Oriya">
<summary>Gets the Oriya Unicode block (U+0B00-U+0B7F).</summary>
<returns>The Oriya Unicode block (U+0B00-U+0B7F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Phagspa">
<summary>Gets the Phags-pa Unicode block (U+A840-U+A87F).</summary>
<returns>The Phags-pa Unicode block (U+A840-U+A87F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.PhoneticExtensions">
<summary>Gets the Phonetic Extensions Unicode block (U+1D00-U+1D7F).</summary>
<returns>The Phonetic Extensions Unicode block (U+1D00-U+1D7F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.PhoneticExtensionsSupplement">
<summary>Gets the Phonetic Extensions Supplement Unicode block (U+1D80-U+1DBF).</summary>
<returns>The Phonetic Extensions Supplement Unicode block (U+1D80-U+1DBF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Rejang">
<summary>Gets the Rejang Unicode block (U+A930-U+A95F).</summary>
<returns>The Rejang Unicode block (U+A930-U+A95F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Runic">
<summary>Gets the Runic Unicode block (U+16A0-U+16FF).</summary>
<returns>The Runic Unicode block (U+16A0-U+16FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Samaritan">
<summary>Gets the Samaritan Unicode block (U+0800-U+083F).</summary>
<returns>The Samaritan Unicode block (U+0800-U+083F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Saurashtra">
<summary>Gets the Saurashtra Unicode block (U+A880-U+A8DF).</summary>
<returns>The Saurashtra Unicode block (U+A880-U+A8DF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Sinhala">
<summary>Gets the Sinhala Unicode block (U+0D80-U+0DFF).</summary>
<returns>The Sinhala Unicode block (U+0D80-U+0DFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.SmallFormVariants">
<summary>Gets the Small Form Variants Unicode block (U+FE50-U+FE6F).</summary>
<returns>The Small Form Variants Unicode block (U+FE50-U+FE6F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.SpacingModifierLetters">
<summary>Gets the Spacing Modifier Letters Unicode block (U+02B0-U+02FF).</summary>
<returns>The Spacing Modifier Letters Unicode block (U+02B0-U+02FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Specials">
<summary>Gets the Specials Unicode block (U+FFF0-U+FFFF).</summary>
<returns>The Specials Unicode block (U+FFF0-U+FFFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Sundanese">
<summary>Gets the Sundanese Unicode block (U+1B80-U+1BBF).</summary>
<returns>The Sundanese Unicode block (U+1B80-U+1BBF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.SundaneseSupplement">
<summary>Gets the Sundanese Supplement Unicode block (U+1CC0-U+1CCF).</summary>
<returns>The Sundanese Supplement Unicode block (U+1CC0-U+1CCF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.SuperscriptsandSubscripts">
<summary>Gets the Superscripts and Subscripts Unicode block (U+2070-U+209F).</summary>
<returns>The Superscripts and Subscripts Unicode block (U+2070-U+209F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.SupplementalArrowsA">
<summary>Gets the Supplemental Arrows-A Unicode block (U+27F0-U+27FF).</summary>
<returns>The Supplemental Arrows-A Unicode block (U+27F0-U+27FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.SupplementalArrowsB">
<summary>Gets the Supplemental Arrows-B Unicode block (U+2900-U+297F).</summary>
<returns>The Supplemental Arrows-B Unicode block (U+2900-U+297F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.SupplementalMathematicalOperators">
<summary>Gets the Supplemental Mathematical Operators Unicode block (U+2A00-U+2AFF).</summary>
<returns>The Supplemental Mathematical Operators Unicode block (U+2A00-U+2AFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.SupplementalPunctuation">
<summary>Gets the Supplemental Punctuation Unicode block (U+2E00-U+2E7F).</summary>
<returns>The Supplemental Punctuation Unicode block (U+2E00-U+2E7F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.SylotiNagri">
<summary>Gets the Syloti Nagri Unicode block (U+A800-U+A82F).</summary>
<returns>The Syloti Nagri Unicode block (U+A800-U+A82F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Syriac">
<summary>Gets the Syriac Unicode block (U+0700-U+074F).</summary>
<returns>The Syriac Unicode block (U+0700-U+074F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.SyriacSupplement">
<summary>A <see cref="T:System.Text.Unicode.UnicodeRange" /> corresponding to the 'Syriac Supplement' Unicode block (U+0860..U+086F).</summary>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Tagalog">
<summary>Gets the Tagalog Unicode block (U+1700-U+171F).</summary>
<returns>The Tagalog Unicode block (U+1700-U+171F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Tagbanwa">
<summary>Gets the Tagbanwa Unicode block (U+1760-U+177F).</summary>
<returns>The Tagbanwa Unicode block (U+1760-U+177F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.TaiLe">
<summary>Gets the Tai Le Unicode block (U+1950-U+197F).</summary>
<returns>The Tai Le Unicode block (U+1950-U+197F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.TaiTham">
<summary>Gets the Tai Tham Unicode block (U+1A20-U+1AAF).</summary>
<returns>The Tai Tham Unicode block (U+1A20-U+1AAF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.TaiViet">
<summary>Gets the Tai Viet Unicode block (U+AA80-U+AADF).</summary>
<returns>The Tai Viet Unicode block (U+AA80-U+AADF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Tamil">
<summary>Gets the Tamil Unicode block (U+0B80-U+0BFF).</summary>
<returns>The Tamil Unicode block (U+0B82-U+0BFA).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Telugu">
<summary>Gets the Telugu Unicode block (U+0C00-U+0C7F).</summary>
<returns>The Telugu Unicode block (U+0C00-U+0C7F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Thaana">
<summary>Gets the Thaana Unicode block (U+0780-U+07BF).</summary>
<returns>The Thaana Unicode block (U+0780-U+07BF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Thai">
<summary>Gets the Thai Unicode block (U+0E00-U+0E7F).</summary>
<returns>The Thai Unicode block (U+0E00-U+0E7F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Tibetan">
<summary>Gets the Tibetan Unicode block (U+0F00-U+0FFF).</summary>
<returns>The Tibetan Unicode block (U+0F00-U+0FFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Tifinagh">
<summary>Gets the Tifinagh Unicode block (U+2D30-U+2D7F).</summary>
<returns>The Tifinagh Unicode block (U+2D30-U+2D7F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.UnifiedCanadianAboriginalSyllabics">
<summary>Gets the Unified Canadian Aboriginal Syllabics Unicode block (U+1400-U+167F).</summary>
<returns>The Unified Canadian Aboriginal Syllabics Unicode block (U+1400-U+167F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.UnifiedCanadianAboriginalSyllabicsExtended">
<summary>Gets the Unified Canadian Aboriginal Syllabics Extended Unicode block (U+18B0-U+18FF).</summary>
<returns>The Unified Canadian Aboriginal Syllabics Extended Unicode block (U+18B0-U+18FF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.Vai">
<summary>Gets the Vai Unicode block (U+A500-U+A63F).</summary>
<returns>The Vai Unicode block (U+A500-U+A63F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.VariationSelectors">
<summary>Gets the Variation Selectors Unicode block (U+FE00-U+FE0F).</summary>
<returns>The Variation Selectors Unicode block (U+FE00-U+FE0F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.VedicExtensions">
<summary>Gets the Vedic Extensions Unicode block (U+1CD0-U+1CFF).</summary>
<returns>The Vedic Extensions Unicode block (U+1CD0-U+1CFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.VerticalForms">
<summary>Gets the Vertical Forms Unicode block (U+FE10-U+FE1F).</summary>
<returns>The Vertical Forms Unicode block (U+FE10-U+FE1F).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.YijingHexagramSymbols">
<summary>Gets the Yijing Hexagram Symbols Unicode block (U+4DC0-U+4DFF).</summary>
<returns>The Yijing Hexagram Symbols Unicode block (U+4DC0-U+4DFF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.YiRadicals">
<summary>Gets the Yi Radicals Unicode block (U+A490-U+A4CF).</summary>
<returns>The Yi Radicals Unicode block (U+A490-U+A4CF).</returns>
</member>
<member name="P:System.Text.Unicode.UnicodeRanges.YiSyllables">
<summary>Gets the Yi Syllables Unicode block (U+A000-U+A48F).</summary>
<returns>The Yi Syllables Unicode block (U+A000-U+A48F).</returns>
</member>
</members>
</doc>

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,243 @@
<?xml version="1.0" encoding="utf-8"?>
<doc>
<assembly>
<name>System.Threading.Channels</name>
</assembly>
<members>
<member name="T:System.Threading.Channels.BoundedChannelFullMode">
<summary>Specifies the behavior to use when writing to a bounded channel that is already full.</summary>
</member>
<member name="F:System.Threading.Channels.BoundedChannelFullMode.DropNewest">
<summary>Removes and ignores the newest item in the channel in order to make room for the item being written.</summary>
</member>
<member name="F:System.Threading.Channels.BoundedChannelFullMode.DropOldest">
<summary>Removes and ignores the oldest item in the channel in order to make room for the item being written.</summary>
</member>
<member name="F:System.Threading.Channels.BoundedChannelFullMode.DropWrite">
<summary>Drops the item being written.</summary>
</member>
<member name="F:System.Threading.Channels.BoundedChannelFullMode.Wait">
<summary>Waits for space to be available in order to complete the write operation.</summary>
</member>
<member name="T:System.Threading.Channels.BoundedChannelOptions">
<summary>Provides options that control the behavior of bounded <see cref="T:System.Threading.Channels.Channel`1" /> instances.</summary>
</member>
<member name="M:System.Threading.Channels.BoundedChannelOptions.#ctor(System.Int32)">
<summary>Initializes the options.</summary>
<param name="capacity">The maximum number of items the bounded channel may store.</param>
</member>
<member name="P:System.Threading.Channels.BoundedChannelOptions.Capacity">
<summary>Gets or sets the maximum number of items the bounded channel may store.</summary>
</member>
<member name="P:System.Threading.Channels.BoundedChannelOptions.FullMode">
<summary>Gets or sets the behavior incurred by write operations when the channel is full.</summary>
</member>
<member name="T:System.Threading.Channels.Channel">
<summary>Provides static methods for creating channels.</summary>
</member>
<member name="M:System.Threading.Channels.Channel.CreateBounded``1(System.Int32)">
<summary>Creates a channel with the specified maximum capacity.</summary>
<param name="capacity">The maximum number of items the channel may store.</param>
<typeparam name="T">Specifies the type of data in the channel.</typeparam>
<returns>The created channel.</returns>
</member>
<member name="M:System.Threading.Channels.Channel.CreateBounded``1(System.Threading.Channels.BoundedChannelOptions)">
<summary>Creates a channel with the specified maximum capacity.</summary>
<param name="options">Options that guide the behavior of the channel.</param>
<typeparam name="T">Specifies the type of data in the channel.</typeparam>
<returns>The created channel.</returns>
</member>
<member name="M:System.Threading.Channels.Channel.CreateBounded``1(System.Threading.Channels.BoundedChannelOptions,System.Action{``0})">
<summary>Creates a channel subject to the provided options.</summary>
<param name="options">Options that guide the behavior of the channel.</param>
<param name="itemDropped">Delegate that will be called when item is being dropped from channel. See <see cref="T:System.Threading.Channels.BoundedChannelFullMode" />.</param>
<typeparam name="T">Specifies the type of data in the channel.</typeparam>
<returns>The created channel.</returns>
</member>
<member name="M:System.Threading.Channels.Channel.CreateUnbounded``1">
<summary>Creates an unbounded channel usable by any number of readers and writers concurrently.</summary>
<typeparam name="T">The type of data in the channel.</typeparam>
<returns>The created channel.</returns>
</member>
<member name="M:System.Threading.Channels.Channel.CreateUnbounded``1(System.Threading.Channels.UnboundedChannelOptions)">
<summary>Creates an unbounded channel subject to the provided options.</summary>
<param name="options">Options that guide the behavior of the channel.</param>
<typeparam name="T">Specifies the type of data in the channel.</typeparam>
<returns>The created channel.</returns>
</member>
<member name="T:System.Threading.Channels.Channel`1">
<summary>Provides a base class for channels that support reading and writing elements of type <typeparamref name="T" />.</summary>
<typeparam name="T">Specifies the type of data readable and writable in the channel.</typeparam>
</member>
<member name="M:System.Threading.Channels.Channel`1.#ctor">
<summary>Initializes an instance of the <see cref="T:System.Threading.Channels.Channel`1" /> class.</summary>
</member>
<member name="T:System.Threading.Channels.Channel`2">
<summary>Provides a base class for channels that support reading elements of type <typeparamref name="TRead" /> and writing elements of type <typeparamref name="TWrite" />.</summary>
<typeparam name="TWrite">Specifies the type of data that may be written to the channel.</typeparam>
<typeparam name="TRead">Specifies the type of data that may be read from the channel.</typeparam>
</member>
<member name="M:System.Threading.Channels.Channel`2.#ctor">
<summary>Initializes an instance of the <see cref="T:System.Threading.Channels.Channel`2" /> class.</summary>
</member>
<member name="M:System.Threading.Channels.Channel`2.op_Implicit(System.Threading.Channels.Channel{`0,`1})~System.Threading.Channels.ChannelReader{`1}">
<summary>Implicit cast from a <see cref="T:System.Threading.Channels.Channel`2" /> to its readable half.</summary>
<param name="channel">The <see cref="T:System.Threading.Channels.Channel`2" /> being cast.</param>
<returns>The readable half.</returns>
</member>
<member name="M:System.Threading.Channels.Channel`2.op_Implicit(System.Threading.Channels.Channel{`0,`1})~System.Threading.Channels.ChannelWriter{`0}">
<summary>Implicit cast from a <see cref="T:System.Threading.Channels.Channel`2" /> to its writable half.</summary>
<param name="channel">The <see cref="T:System.Threading.Channels.Channel`2" /> being cast.</param>
<returns>The writable half.</returns>
</member>
<member name="P:System.Threading.Channels.Channel`2.Reader">
<summary>Gets the readable half of this channel.</summary>
</member>
<member name="P:System.Threading.Channels.Channel`2.Writer">
<summary>Gets the writable half of this channel.</summary>
</member>
<member name="T:System.Threading.Channels.ChannelClosedException">
<summary>Exception thrown when a channel is used after it's been closed.</summary>
</member>
<member name="M:System.Threading.Channels.ChannelClosedException.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Threading.Channels.ChannelClosedException" /> class.</summary>
</member>
<member name="M:System.Threading.Channels.ChannelClosedException.#ctor(System.Exception)">
<summary>Initializes a new instance of the <see cref="T:System.Threading.Channels.ChannelClosedException" /> class.</summary>
<param name="innerException">The exception that is the cause of this exception.</param>
</member>
<member name="M:System.Threading.Channels.ChannelClosedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
<summary>Initializes a new instance of the <see cref="T:System.Threading.Channels.ChannelClosedException" /> class with serialized data.</summary>
<param name="info">The object that holds the serialized object data.</param>
<param name="context">The contextual information about the source or destination.</param>
</member>
<member name="M:System.Threading.Channels.ChannelClosedException.#ctor(System.String)">
<summary>Initializes a new instance of the <see cref="T:System.Threading.Channels.ChannelClosedException" /> class.</summary>
<param name="message">The message that describes the error.</param>
</member>
<member name="M:System.Threading.Channels.ChannelClosedException.#ctor(System.String,System.Exception)">
<summary>Initializes a new instance of the <see cref="T:System.Threading.Channels.ChannelClosedException" /> class.</summary>
<param name="message">The message that describes the error.</param>
<param name="innerException">The exception that is the cause of this exception.</param>
</member>
<member name="T:System.Threading.Channels.ChannelOptions">
<summary>Provides options that control the behavior of channel instances.</summary>
</member>
<member name="M:System.Threading.Channels.ChannelOptions.#ctor">
<summary>Initializes an instance of the <see cref="T:System.Threading.Channels.ChannelOptions" /> class.</summary>
</member>
<member name="P:System.Threading.Channels.ChannelOptions.AllowSynchronousContinuations">
<summary>
<see langword="true" /> if operations performed on a channel may synchronously invoke continuations subscribed to
notifications of pending async operations; <see langword="false" /> if all continuations should be invoked asynchronously.</summary>
</member>
<member name="P:System.Threading.Channels.ChannelOptions.SingleReader">
<summary>
<see langword="true" /> readers from the channel guarantee that there will only ever be at most one read operation at a time;
<see langword="false" /> if no such constraint is guaranteed.</summary>
</member>
<member name="P:System.Threading.Channels.ChannelOptions.SingleWriter">
<summary>
<see langword="true" /> if writers to the channel guarantee that there will only ever be at most one write operation
at a time; <see langword="false" /> if no such constraint is guaranteed.</summary>
</member>
<member name="T:System.Threading.Channels.ChannelReader`1">
<summary>Provides a base class for reading from a channel.</summary>
<typeparam name="T">Specifies the type of data that may be read from the channel.</typeparam>
</member>
<member name="M:System.Threading.Channels.ChannelReader`1.#ctor">
<summary>Initializes an instance of the <see cref="T:System.Threading.Channels.ChannelReader`1" /> class.</summary>
</member>
<member name="M:System.Threading.Channels.ChannelReader`1.ReadAllAsync(System.Threading.CancellationToken)">
<summary>Creates an <see cref="T:System.Collections.Generic.IAsyncEnumerable`1" /> that enables reading all of the data from the channel.</summary>
<param name="cancellationToken">The cancellation token to use to cancel the enumeration. If data is immediately ready for reading, then that data may be yielded even after cancellation has been requested.</param>
<returns>The created async enumerable.</returns>
</member>
<member name="M:System.Threading.Channels.ChannelReader`1.ReadAsync(System.Threading.CancellationToken)">
<summary>Asynchronously reads an item from the channel.</summary>
<param name="cancellationToken">A <see cref="T:System.Threading.CancellationToken" /> used to cancel the read operation.</param>
<returns>A <see cref="T:System.Threading.Tasks.ValueTask`1" /> that represents the asynchronous read operation.</returns>
</member>
<member name="M:System.Threading.Channels.ChannelReader`1.TryPeek(`0@)">
<summary>Attempts to peek at an item from the channel.</summary>
<param name="item">The peeked item, or a default value if no item could be peeked.</param>
<returns>
<see langword="true" /> if an item was read; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Threading.Channels.ChannelReader`1.TryRead(`0@)">
<summary>Attempts to read an item from the channel.</summary>
<param name="item">The read item, or a default value if no item could be read.</param>
<returns>
<see langword="true" /> if an item was read; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Threading.Channels.ChannelReader`1.WaitToReadAsync(System.Threading.CancellationToken)">
<summary>Returns a <see cref="T:System.Threading.Tasks.ValueTask`1" /> that will complete when data is available to read.</summary>
<param name="cancellationToken">A <see cref="T:System.Threading.CancellationToken" /> used to cancel the wait operation.</param>
<returns>
<para>A <see cref="T:System.Threading.Tasks.ValueTask`1" /> that will complete with a <see langword="true" /> result when data is available to read
or with a <see langword="false" /> result when no further data will ever be available to be read due to the channel completing successfully.</para>
<para>If the channel completes with an exception, the task will also complete with an exception.</para>
</returns>
</member>
<member name="P:System.Threading.Channels.ChannelReader`1.CanCount">
<summary>Gets a value that indicates whether <see cref="P:System.Threading.Channels.ChannelReader`1.Count" /> is available for use on this <see cref="T:System.Threading.Channels.ChannelReader`1" /> instance.</summary>
</member>
<member name="P:System.Threading.Channels.ChannelReader`1.CanPeek">
<summary>Gets a value that indicates whether <see cref="M:System.Threading.Channels.ChannelReader`1.TryPeek(`0@)" /> is available for use on this <see cref="T:System.Threading.Channels.ChannelReader`1" /> instance.</summary>
<returns>
<see langword="true" /> if peeking is supported by this channel instance; <see langword="false" /> otherwise.</returns>
</member>
<member name="P:System.Threading.Channels.ChannelReader`1.Completion">
<summary>Gets a <see cref="T:System.Threading.Tasks.Task" /> that completes when no more data will ever
be available to be read from this channel.</summary>
</member>
<member name="P:System.Threading.Channels.ChannelReader`1.Count">
<summary>Gets the current number of items available from this channel reader.</summary>
<exception cref="T:System.NotSupportedException">Counting is not supported on this instance.</exception>
</member>
<member name="T:System.Threading.Channels.ChannelWriter`1">
<summary>Provides a base class for writing to a channel.</summary>
<typeparam name="T">Specifies the type of data that may be written to the channel.</typeparam>
</member>
<member name="M:System.Threading.Channels.ChannelWriter`1.#ctor">
<summary>Initializes an instance of the <see cref="T:System.Threading.Channels.ChannelWriter`1" /> class.</summary>
</member>
<member name="M:System.Threading.Channels.ChannelWriter`1.Complete(System.Exception)">
<summary>Mark the channel as being complete, meaning no more items will be written to it.</summary>
<param name="error">Optional Exception indicating a failure that's causing the channel to complete.</param>
<exception cref="T:System.InvalidOperationException">The channel has already been marked as complete.</exception>
</member>
<member name="M:System.Threading.Channels.ChannelWriter`1.TryComplete(System.Exception)">
<summary>Attempts to mark the channel as being completed, meaning no more data will be written to it.</summary>
<param name="error">An <see cref="T:System.Exception" /> indicating the failure causing no more data to be written, or null for success.</param>
<returns>
<see langword="true" /> if this operation successfully completes the channel; otherwise, <see langword="false" /> if the channel could not be marked for completion,
for example due to having already been marked as such, or due to not supporting completion.
.</returns>
</member>
<member name="M:System.Threading.Channels.ChannelWriter`1.TryWrite(`0)">
<summary>Attempts to write the specified item to the channel.</summary>
<param name="item">The item to write.</param>
<returns>
<see langword="true" /> if the item was written; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Threading.Channels.ChannelWriter`1.WaitToWriteAsync(System.Threading.CancellationToken)">
<summary>Returns a <see cref="T:System.Threading.Tasks.ValueTask`1" /> that will complete when space is available to write an item.</summary>
<param name="cancellationToken">A <see cref="T:System.Threading.CancellationToken" /> used to cancel the wait operation.</param>
<returns>A <see cref="T:System.Threading.Tasks.ValueTask`1" /> that will complete with a <see langword="true" /> result when space is available to write an item
or with a <see langword="false" /> result when no further writing will be permitted.</returns>
</member>
<member name="M:System.Threading.Channels.ChannelWriter`1.WriteAsync(`0,System.Threading.CancellationToken)">
<summary>Asynchronously writes an item to the channel.</summary>
<param name="item">The value to write to the channel.</param>
<param name="cancellationToken">A <see cref="T:System.Threading.CancellationToken" /> used to cancel the write operation.</param>
<returns>A <see cref="T:System.Threading.Tasks.ValueTask" /> that represents the asynchronous write operation.</returns>
</member>
<member name="T:System.Threading.Channels.UnboundedChannelOptions">
<summary>Provides options that control the behavior of unbounded <see cref="T:System.Threading.Channels.Channel`1" /> instances.</summary>
</member>
<member name="M:System.Threading.Channels.UnboundedChannelOptions.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Threading.Channels.UnboundedChannelOptions" /> class.</summary>
</member>
</members>
</doc>

Binary file not shown.

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