feat: debug支持

This commit is contained in:
2248356998 qq.com
2025-11-21 13:07:06 +08:00
parent 355d158507
commit 1d278aa37b
34 changed files with 649 additions and 154 deletions

View File

@@ -13,14 +13,14 @@
NU1510;SYSLIB5007;CS8603;CS8618;CS1591;CS8625;CS8602;CS8604;CS8600;CS8601;CS8714;CS8619;CS8629;CS8765;CS8634;CS8621;CS8767;CS8633;CS8620;CS8610;CS8631;CS8605;CS8622;CS8613;NU5100;NU5104;NU1903;NU1902;CA1863;CA1812;CA1805;CA1515;CA1508;CA1819;CA1852;CA5394;CA1822;CA1815;CA1813;CA2000;CA5358;CA5384;CA5400;CA5401;CA1814;CA1835;CA5392;CA5350;CA2100;CA1848;CA1810;CA1513;CA5351;CA1510;CA1512;CA1823;RCS1102;RCS1194;NETSDK1206
</NoWarn>
<TouchSocketVersion>4.0.0-rc.49</TouchSocketVersion>
<AdminVersion>12.2.12</AdminVersion>
<FoundationVersion>12.2.1</FoundationVersion>
<PluginVersion>12.2.3</PluginVersion>
<ProPluginVersion>12.2.3</ProPluginVersion>
<Version>12.2.9</Version>
<AdminVersion>12.4.4</AdminVersion>
<FoundationVersion>12.4.4</FoundationVersion>
<PluginVersion>12.4.4</PluginVersion>
<ProPluginVersion>12.4.4</ProPluginVersion>
<Version>12.4.4</Version>
<AuthenticationVersion>12.2.1</AuthenticationVersion>
<AuthenticationVersion>12.4.4</AuthenticationVersion>
<LangVersion>preview</LangVersion>

View File

@@ -3,6 +3,7 @@
<Folder Name="/src/">
<Project Path="src/ThingsGateway.Foundation.Razor/ThingsGateway.Foundation.Razor.csproj" />
<Project Path="src/ThingsGateway.Gateway.Application/ThingsGateway.Gateway.Application.csproj" />
<Project Path="src/ThingsGateway.Gateway.Razor.Common/ThingsGateway.Gateway.Razor.Common.csproj" />
<Project Path="src/ThingsGateway.Gateway.Razor/ThingsGateway.Gateway.Razor.csproj" />
</Folder>
<Folder Name="/Test/" />

View File

@@ -0,0 +1,50 @@
//------------------------------------------------------------------------------
// 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充
// 此代码版权除特别声明外的代码归作者本人Diego所有
// 源代码使用协议遵循本仓库的开源协议及附加协议
// Gitee源代码仓库https://gitee.com/diego2098/ThingsGateway
// Github源代码仓库https://github.com/kimdiego2098/ThingsGateway
// 使用文档https://thingsgateway.cn/
// QQ群605534569
//------------------------------------------------------------------------------
using System.Reflection;
namespace ThingsGateway.Server;
/// <summary>
/// 解决单文件发布程序集扫描问题
/// </summary>
public class SingleFilePublish : ISingleFilePublish
{
/// <summary>
/// 解决单文件不能扫描的程序集
/// </summary>
/// <remarks>和 <see cref="IncludeAssemblyNames"/> 可同时配置</remarks>
/// <returns></returns>
public Assembly[] IncludeAssemblies()
{
return Array.Empty<Assembly>();
}
/// <summary>
/// 解决单文件不能扫描的程序集名称
/// </summary>
/// <remarks>和 <see cref="IncludeAssemblies"/> 可同时配置</remarks>
/// <returns></returns>
public string[] IncludeAssemblyNames()
{
return
[
"ThingsGateway.AspNetCore",
"ThingsGateway.Foundation.Common",
"ThingsGateway.Common",
"ThingsGateway.Razor",
"ThingsGateway.Debug.ProRazor",
"ThingsGateway.Debug.Razor",
"ThingsGateway.Foundation" ,
"ThingsGateway.Foundation.Razor",
];
}
}

View File

@@ -36,18 +36,21 @@
<EmbeddedResource Include="README.md" />
</ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' != 'ThingsGatewayAll' OR '$(Configuration)' == 'Release' ">
<PackageReference Include="ThingsGateway.Photino.Blazor" Version="$(AdminVersion)" />
<PackageReference Include="ThingsGateway.Debug.Razor" Version="$(PluginVersion)" />
<PackageReference Include="ThingsGateway.Debug.ProRazor" Version="$(ProPluginVersion)" />
</ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' == 'ThingsGatewayAll' AND '$(Configuration)' != 'Release' ">
<ProjectReference Include="..\..\..\ThingsGateway.Admin\src\ThingsGateway.Photino.Blazor\ThingsGateway.Photino.Blazor.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Debug.Razor\ThingsGateway.Debug.Razor.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Debug.ProRazor\ThingsGateway.Debug.ProRazor.csproj" />
</ItemGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="BootstrapBlazor.CherryMarkdown" Version="10.0.0" />
<PackageReference Include="ThingsGateway.Photino.Blazor" Version="$(AdminVersion)" />
<PackageReference Include="ThingsGateway.Debug.Razor" Version="$(PluginVersion)" />
<PackageReference Include="ThingsGateway.Foundation.Modbus" Version="$(FoundationVersion)" />
<PackageReference Include="ThingsGateway.Foundation.Dlt645" Version="$(FoundationVersion)" />
<PackageReference Include="ThingsGateway.Foundation.OpcDa" Version="$(FoundationVersion)" />
<PackageReference Include="ThingsGateway.Foundation.OpcUa" Version="$(FoundationVersion)" />
<PackageReference Include="ThingsGateway.Foundation.SiemensS7" Version="$(FoundationVersion)" />
<ProjectReference Include="..\ThingsGateway.Foundation.Razor\ThingsGateway.Foundation.Razor.csproj" />
<PackageReference Include="ThingsGateway.Debug.ProRazor" Version="$(ProPluginVersion)" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">

View File

@@ -6,11 +6,21 @@
</PropertyGroup>
<ItemGroup>
</ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' != 'ThingsGatewayAll' OR '$(Configuration)' == 'Release' ">
<PackageReference Include="BlazorSetParametersAsyncGenerator" Version="$(AdminVersion)" PrivateAssets="all" OutputItemType="Analyzer" />
<PackageReference Include="ThingsGateway.Razor" Version="$(AdminVersion)" />
<PackageReference Include="ThingsGateway.Foundation" Version="$(FoundationVersion)" />
</ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' == 'ThingsGatewayAll' AND '$(Configuration)' != 'Release' ">
<ProjectReference Include="..\..\..\ThingsGateway.Foundation\src\ThingsGateway.Foundation\ThingsGateway.Foundation.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Admin\src\ThingsGateway.Razor\ThingsGateway.Razor.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Admin\src\BlazorSetParametersAsyncGenerator\BlazorSetParametersAsyncGenerator.csproj" PrivateAssets="all" OutputItemType="Analyzer" />
</ItemGroup>
<ItemGroup>
<Content Remove="Locales\*.json" />
<EmbeddedResource Include="Locales\*.json">

View File

@@ -13,7 +13,6 @@
<PackageReference Include="Rougamo.Fody" Version="5.0.2" />
<PackageReference Include="TouchSocket.Dmtp" Version="$(TouchSocketVersion)" />
<PackageReference Include="TouchSocket.WebApi" Version="$(TouchSocketVersion)" />
<PackageReference Include="ThingsGateway.Authentication" Version="$(AuthenticationVersion)" />
</ItemGroup>
@@ -54,15 +53,27 @@
</ItemGroup>
<ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' != 'ThingsGatewayAll' OR '$(Configuration)' == 'Release' ">
<PackageReference Include="ThingsGateway.Authentication" Version="$(AuthenticationVersion)" />
<PackageReference Include="ThingsGateway.Admin.Application" Version="$(AdminVersion)" />
<PackageReference Include="ThingsGateway.Blazor.Diagrams.Core" Version="$(AdminVersion)" />
<PackageReference Include="ThingsGateway.CSScript" Version="$(FoundationVersion)" />
<PackageReference Include="ThingsGateway.Foundation" Version="$(FoundationVersion)" />
</ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' == 'ThingsGatewayAll' AND '$(Configuration)' != 'Release' ">
<ProjectReference Include="..\..\..\ThingsGateway.Management\src\ThingsGateway.Authentication\ThingsGateway.Authentication.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Foundation\src\ThingsGateway.Foundation\ThingsGateway.Foundation.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Foundation\src\ThingsGateway.CSScript\ThingsGateway.CSScript.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Admin\src\ThingsGateway.Admin.Application\ThingsGateway.Admin.Application.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Admin\src\ThingsGateway.Blazor.Diagrams.Core\ThingsGateway.Blazor.Diagrams.Core.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net8.0'">
<PackageReference Include="System.Linq.Async" Version="6.0.3" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充
// 此代码版权除特别声明外的代码归作者本人Diego所有
// 源代码使用协议遵循本仓库的开源协议及附加协议
// Gitee源代码仓库https://gitee.com/diego2098/ThingsGateway
// Github源代码仓库https://github.com/kimdiego2098/ThingsGateway
// 使用文档https://thingsgateway.cn/
// QQ群605534569
//------------------------------------------------------------------------------
global using BootstrapBlazor.Components;
global using Microsoft.AspNetCore.Components;
global using Microsoft.Extensions.Localization;
global using System.Diagnostics.CodeAnalysis;
global using ThingsGateway.Common;
global using ThingsGateway.Foundation;
global using ThingsGateway.Foundation.Common;
global using ThingsGateway.Foundation.Common.Extension;
global using ThingsGateway.Gateway.Application;
global using ThingsGateway.Razor;
#if !Management
global using ChannelRuntime = ThingsGateway.Gateway.Application.ChannelRuntime;
global using DeviceRuntime = ThingsGateway.Gateway.Application.DeviceRuntime;
global using VariableRuntime = ThingsGateway.Gateway.Application.VariableRuntime;
global using IVariablePageService = ThingsGateway.Gateway.Application.IVariablePageService;
global using IDevicePageService = ThingsGateway.Gateway.Application.IDevicePageService;
#else
global using ChannelRuntime = ThingsGateway.Management.Application.ChannelRuntime;
global using DeviceRuntime = ThingsGateway.Management.Application.DeviceRuntime;
global using VariableRuntime = ThingsGateway.Management.Application.VariableRuntime;
global using IVariablePageService = ThingsGateway.Management.Application.IVariablePageService;
global using IDevicePageService = ThingsGateway.Management.Application.IDevicePageService;
global using IChannelPageService = ThingsGateway.Management.Application.IChannelPageService;
#endif
[assembly: SuppressMessage("Reliability", "CA2007", Justification = "<挂起>", Scope = "module")]
[assembly: GlobalGenerateSetParametersAsync(true)]

View File

@@ -24,8 +24,8 @@
<BootstrapLabel Value=@PropertyComponentLocalizer["BigTextScriptDeviceModel"] ShowLabelTooltip="true" />
<CodeEditor ShowLineNo @bind-Value=@businessProperty.BigTextScriptDeviceModel Language="csharp" Theme="vs-dark" IsReadonly=@(!CanWrite) />
<div class="ms-2 d-flex justify-content-center align-items-center">
<Button IsDisabled=@(!CanWrite) OnClick=@(() => CheckScript(businessProperty, nameof(businessProperty.BigTextScriptDeviceModel), Localizer["check"], this, DialogService))>
@Localizer["Check"]
<Button IsDisabled=@(!CanWrite) OnClick=@(() => CheckScript(businessProperty, nameof(businessProperty.BigTextScriptDeviceModel), "check", this, DialogService))>
"Check"
</Button>
</div>
</div>
@@ -34,8 +34,8 @@
<CodeEditor IsReadonly=@(!CanWrite) ShowLineNo @bind-Value=@businessProperty.BigTextScriptVariableModel Language="csharp" Theme="vs-dark" />
<div class="ms-2 d-flex justify-content-center align-items-center">
<Button IsDisabled=@(!CanWrite) OnClick=@(() => CheckScript(businessProperty, nameof(businessProperty.BigTextScriptVariableModel), Localizer["check"], this, DialogService))>
@Localizer["Check"]
<Button IsDisabled=@(!CanWrite) OnClick=@(() => CheckScript(businessProperty, nameof(businessProperty.BigTextScriptVariableModel),"check", this, DialogService))>
"Check"
</Button>
</div>
</div>
@@ -44,8 +44,8 @@
<CodeEditor IsReadonly=@(!CanWrite) ShowLineNo @bind-Value=@businessProperty.BigTextScriptAlarmModel Language="csharp" Theme="vs-dark" />
<div class="ms-2 d-flex justify-content-center align-items-center">
<Button IsDisabled=@(!CanWrite) OnClick=@(() => CheckScript(businessProperty, nameof(businessProperty.BigTextScriptAlarmModel), Localizer["check"], this, DialogService))>
@Localizer["Check"]
<Button IsDisabled=@(!CanWrite) OnClick=@(() => CheckScript(businessProperty, nameof(businessProperty.BigTextScriptAlarmModel), "check", this, DialogService))>
"Check"
</Button>
</div>

View File

@@ -36,9 +36,6 @@ public partial class PropertyComponent : IPropertyUIBase
return base.OnParametersSetAsync();
}
[Inject]
private IStringLocalizer<DeviceEditComponent> Localizer { get; set; }
public static async Task CheckScript(BusinessPropertyWithCacheIntervalScript businessProperty, string pname, string title, object receiver, DialogService dialogService)
{
string script = null;

View File

@@ -6,13 +6,13 @@
<div class="row me-4 scriptcheck">
<div class="col-12 col-md-8">
<BootstrapLabel Value=@Localizer["Script"] ShowLabelTooltip="true" />
<BootstrapLabel Value="Script" ShowLabelTooltip="true" />
<CodeEditor ShowLineNo Value=@Script ValueChanged=@Change Language="csharp" Theme="vs-dark" />
</div>
<div class="col-12 col-md-4">
<BootstrapLabel Value=@Localizer["Tip"] ShowLabelTooltip="true" />
<BootstrapLabel Value="Tip" ShowLabelTooltip="true" />
<Alert Icon="fa-solid fa-circle-check" Color="Color.Success">@(new MarkupString("注意 <code>raw</code> 参数 为 <code>object</code> 类型,需要转换为实际类型操作"))</Alert>
<Alert Icon="fa-solid fa-circle-check" Color="Color.Success">@(new MarkupString("获取设备类实体,可用 <code>GlobalData.ReadOnlyDevices</code> 字典对象,键为设备名称,值为设备对象"))</Alert>
<Alert Icon="fa-solid fa-circle-check" Color="Color.Success">@(new MarkupString("获取变量类实体,可用方法 <code>GlobalData.GetVariable(\"设备名称1\",\"变量名称1\")</code> "))</Alert>
@@ -22,18 +22,18 @@
</div>
<div class="col-6 col-md-6">
<BootstrapLabel Value=@Localizer["Input"] ShowLabelTooltip="true" />
<BootstrapLabel Value="Input" ShowLabelTooltip="true" />
<CodeEditor ShowLineNo @bind-Value=@Input Language="csharp" Theme="vs-dark" />
</div>
<div class="col-6 col-md-6">
<BootstrapLabel Value=@Localizer["Output"] ShowLabelTooltip="true" />
<BootstrapLabel Value="Output" ShowLabelTooltip="true" />
<CodeEditor ShowLineNo @bind-Value=@Output Language="csharp" Theme="vs-dark" />
</div>
</div>
<div class="text-start">
<Button IsAsync OnClick="CheckScript" class=" mt-3">
@Localizer["Check"]
"Check"
</Button>
</div>

View File

@@ -44,8 +44,6 @@ public partial class ScriptCheck
Output = ex.ToString();
}
}
[Inject]
private IStringLocalizer<DeviceEditComponent> Localizer { get; set; }
private async Task GetDemo(Microsoft.AspNetCore.Components.Web.MouseEventArgs args)
{

View File

@@ -0,0 +1,36 @@
<Project Sdk="Microsoft.NET.Sdk.Razor">
<Import Project="..\..\PackNuget.props" />
<PropertyGroup>
<TargetFrameworks>net8.0;$(OtherTargetFrameworks);</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\ThingsGateway.Foundation.Razor\ThingsGateway.Foundation.Razor.csproj" />
<ProjectReference Include="..\ThingsGateway.Gateway.Application\ThingsGateway.Gateway.Application.csproj" />
<PackageReference Include="Riok.Mapperly" Version="4.3.0" ExcludeAssets="runtime" PrivateAssets="all">
<IncludeAssets>compile; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' != 'ThingsGatewayAll' OR '$(Configuration)' == 'Release' ">
<PackageReference Include="ThingsGateway.Blazor.Diagrams" Version="$(AdminVersion)" />
<PackageReference Include="ThingsGateway.Admin.Razor" Version="$(AdminVersion)" />
<PackageReference Include="BlazorSetParametersAsyncGenerator" Version="$(AdminVersion)" PrivateAssets="all" OutputItemType="Analyzer" />
</ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' == 'ThingsGatewayAll' AND '$(Configuration)' != 'Release' ">
<ProjectReference Include="..\..\..\ThingsGateway.Admin\src\ThingsGateway.Admin.Razor\ThingsGateway.Admin.Razor.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Admin\src\ThingsGateway.Blazor.Diagrams\ThingsGateway.Blazor.Diagrams.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Admin\src\BlazorSetParametersAsyncGenerator\BlazorSetParametersAsyncGenerator.csproj" PrivateAssets="all" OutputItemType="Analyzer" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,27 @@

@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.Extensions.Localization
@using System.ComponentModel
@using System.ComponentModel.DataAnnotations
@using BootstrapBlazor.Components
@using ThingsGateway.Razor;
@using ChannelRuntime = ThingsGateway.Gateway.Application.ChannelRuntime;
@using DeviceRuntime = ThingsGateway.Gateway.Application.DeviceRuntime;
@using VariableRuntime = ThingsGateway.Gateway.Application.VariableRuntime;
@using IVariablePageService = ThingsGateway.Gateway.Application.IVariablePageService;
@using IDevicePageService = ThingsGateway.Gateway.Application.IDevicePageService;
@using IChannelPageService = ThingsGateway.Gateway.Application.IChannelPageService;

View File

@@ -5,13 +5,12 @@
<TargetFrameworks>net8.0;$(OtherTargetFrameworks);</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ThingsGateway.Blazor.Diagrams" Version="$(AdminVersion)" />
<ProjectReference Include="..\ThingsGateway.Foundation.Razor\ThingsGateway.Foundation.Razor.csproj" />
<ProjectReference Include="..\ThingsGateway.Gateway.Application\ThingsGateway.Gateway.Application.csproj" />
<ProjectReference Include="..\ThingsGateway.Gateway.Razor.Common\ThingsGateway.Gateway.Razor.Common.csproj" />
<PackageReference Include="Riok.Mapperly" Version="4.3.0" ExcludeAssets="runtime" PrivateAssets="all">
<IncludeAssets>compile; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="ThingsGateway.Admin.Razor" Version="$(AdminVersion)" />
</ItemGroup>
<ItemGroup>
@@ -26,8 +25,19 @@
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
<ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' != 'ThingsGatewayAll' OR '$(Configuration)' == 'Release' ">
<PackageReference Include="ThingsGateway.Blazor.Diagrams" Version="$(AdminVersion)" />
<PackageReference Include="ThingsGateway.Admin.Razor" Version="$(AdminVersion)" />
<PackageReference Include="BlazorSetParametersAsyncGenerator" Version="$(AdminVersion)" PrivateAssets="all" OutputItemType="Analyzer" />
</ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' == 'ThingsGatewayAll' AND '$(Configuration)' != 'Release' ">
<ProjectReference Include="..\..\..\ThingsGateway.Admin\src\ThingsGateway.Admin.Razor\ThingsGateway.Admin.Razor.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Admin\src\ThingsGateway.Blazor.Diagrams\ThingsGateway.Blazor.Diagrams.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Admin\src\BlazorSetParametersAsyncGenerator\BlazorSetParametersAsyncGenerator.csproj" PrivateAssets="all" OutputItemType="Analyzer" />
</ItemGroup>

View File

@@ -134,6 +134,6 @@ internal sealed class Program
return false;
};
hybridApp.Run();
Thread.Sleep(2000);
Thread.Sleep(1000);
}
}

View File

@@ -7,28 +7,31 @@
<PackageReference Include="Microsoft.AspNetCore.Components.WebView" Version="$(NET10Version)" />
</ItemGroup>
<ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' != 'ThingsGatewayAll' OR '$(Configuration)' == 'Release' ">
<PackageReference Include="ThingsGateway.Photino.Blazor" Version="$(AdminVersion)" />
</ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' == 'ThingsGatewayAll' AND '$(Configuration)' != 'Release' ">
<ProjectReference Include="..\..\..\ThingsGateway.Admin\src\ThingsGateway.Photino.Blazor\ThingsGateway.Photino.Blazor.csproj" />
</ItemGroup>
<ItemGroup Condition=" '$(SolutionName)' != 'ThingsGatewayRelease'">
<ProjectReference Include="..\ThingsGateway.Gateway.Application\ThingsGateway.Gateway.Application.csproj" />
<ItemGroup>
<ProjectReference Include="..\ThingsGateway.Gateway.Razor\ThingsGateway.Gateway.Razor.csproj" />
</ItemGroup>
<!--发布版-->
<Import Project="..\ThingsGateway.Server\targets\Gateway.targets" Condition=" '$(SolutionName)' == 'ThingsGatewayRelease' " />
<Import Project="..\ThingsGateway.Server\targets\Admin.targets" Condition=" '$(SolutionName)' == 'ThingsGatewayRelease' " />
<Import Project="..\ThingsGateway.Server\targets\PluginContext.targets" Condition=" '$(SolutionName)' == 'ThingsGatewayPro' AND '$(Configuration)' != 'Debug' " />
<!--nuget包解压复制文件上下文动态加载-->
<Import Project="..\ThingsGateway.Server\targets\PluginContext.targets" Condition=" '$(SolutionName)' != 'ThingsGatewayPro'" />
<Import Project="..\ThingsGateway.Server\targets\PluginContext.targets" Condition=" '$(SolutionName)' != 'ThingsGatewayAll' OR '$(Configuration)' == 'Release' " />
<!--nuget包解压复制文件上下文动态加载Pro插件-->
<Import Project="..\ThingsGateway.Server\targets\Pro2.targets" Condition=" '$(SolutionName)' != 'ThingsGatewayPro' OR '$(Configuration)' != 'Debug'" />
<Import Project="..\ThingsGateway.Server\targets\Pro2.targets" Condition=" '$(SolutionName)' != 'ThingsGatewayAll' OR '$(Configuration)' == 'Release' " />
<!--nuget包解压复制文件上下文动态加载-->
<Import Project="..\ThingsGateway.Server\targets\PluginDebug.targets" Condition=" '$(SolutionName)' == 'ThingsGatewayAll' AND '$(Configuration)' != 'Release' " />
<!--nuget包解压复制文件上下文动态加载Pro插件-->
<Import Project="..\ThingsGateway.Server\targets\ProPluginDebug.targets" Condition=" '$(SolutionName)' == 'ThingsGatewayAll' AND '$(Configuration)' != 'Release' " />
<!--打包复制-->
<Import Project="..\ThingsGateway.Server\targets\PluginPublish.targets" />

View File

@@ -1,16 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<ItemGroup>
<ProjectReference Include="..\ThingsGateway.Gateway.Application\ThingsGateway.Gateway.Application.csproj" />
<ProjectReference Include="..\ThingsGateway.Gateway.Razor\ThingsGateway.Gateway.Razor.csproj" />
</ItemGroup>
<Import Project="targets\PluginContext.targets" />
<!--nuget包解压复制文件上下文动态加载Pro插件--><!--
<Import Project="targets\Pro2.targets" Condition=" '$(SolutionName)' != 'ThingsGatewayPro'" />
<Import Project="targets\Pro7.targets" Condition=" '$(SolutionName)' != 'ThingsGatewayPro'" />-->
<!--nuget包解压复制文件上下文动态加载-->
<Import Project="targets\PluginContext.targets" Condition=" '$(SolutionName)' != 'ThingsGatewayAll' OR '$(Configuration)' == 'Release' " />
<!--nuget包解压复制文件上下文动态加载Pro插件-->
<Import Project="targets\Pro2.targets" Condition=" '$(SolutionName)' != 'ThingsGatewayAll' OR '$(Configuration)' == 'Release' " />
<!--nuget包解压复制文件上下文动态加载-->
<Import Project="targets\PluginDebug.targets" Condition=" '$(SolutionName)' == 'ThingsGatewayAll' AND '$(Configuration)' != 'Release' " />
<!--nuget包解压复制文件上下文动态加载Pro插件-->
<Import Project="targets\ProPluginDebug.targets" Condition=" '$(SolutionName)' == 'ThingsGatewayAll' AND '$(Configuration)' != 'Release' " />
<PropertyGroup>

View File

@@ -1,16 +1,16 @@
<Project>
<ItemGroup>
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.Modbus\ThingsGateway.Plugin.Modbus.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.Dlt645\ThingsGateway.Plugin.Dlt645.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.SiemensS7\ThingsGateway.Plugin.SiemensS7.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.DB\ThingsGateway.Plugin.DB.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.Kafka\ThingsGateway.Plugin.Kafka.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.Mqtt\ThingsGateway.Plugin.Mqtt.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.OpcDa\ThingsGateway.Plugin.OpcDa.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.OpcUa\ThingsGateway.Plugin.OpcUa.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.RabbitMQ\ThingsGateway.Plugin.RabbitMQ.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.Http\ThingsGateway.Plugin.Http.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.Modbus\ThingsGateway.Plugin.Modbus.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.Dlt645\ThingsGateway.Plugin.Dlt645.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.SiemensS7\ThingsGateway.Plugin.SiemensS7.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.DB\ThingsGateway.Plugin.DB.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.Kafka\ThingsGateway.Plugin.Kafka.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.Mqtt\ThingsGateway.Plugin.Mqtt.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.OpcDa\ThingsGateway.Plugin.OpcDa.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.OpcUa\ThingsGateway.Plugin.OpcUa.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.RabbitMQ\ThingsGateway.Plugin.RabbitMQ.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.Http\ThingsGateway.Plugin.Http.csproj" />
</ItemGroup>

View File

@@ -30,7 +30,7 @@
<!--URF_R330 插件-->
<!--<PackageReference Include="ThingsGateway.Plugin.URF_R330" Version="$(ProPluginVersion)" GeneratePathProperty="true" Private="false" IncludeAssets="all;" />-->
<!--USBScaner 插件-->
<PackageReference Include="ThingsGateway.Plugin.USBScaner" Version="$(ProPluginVersion)" GeneratePathProperty="true" Private="false" IncludeAssets="all;" />
<!--<PackageReference Include="ThingsGateway.Plugin.USBScaner" Version="$(ProPluginVersion)" GeneratePathProperty="true" Private="false" IncludeAssets="all;" />-->
<PackageReference Include="ThingsGateway.Plugin.SECS" Version="$(ProPluginVersion)" GeneratePathProperty="true" Private="false" IncludeAssets="all;" />

View File

@@ -1,38 +1,38 @@
<Project>
<ItemGroup>
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.SyncBridge\ThingsGateway.Plugin.SyncBridge.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.SyncBridge\ThingsGateway.Plugin.SyncBridge.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.AllenBradleyCip\ThingsGateway.Plugin.AllenBradleyCip.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.BACnet\ThingsGateway.Plugin.BACnet.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.DCON\ThingsGateway.Plugin.DCON.csproj" />
<!--<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.DKQ_A16D\ThingsGateway.Plugin.DKQ_A16D.csproj" />-->
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.EDPF_NT\ThingsGateway.Plugin.EDPF_NT.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.HJ212\ThingsGateway.Plugin.HJ212.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.HUANANSFSK\ThingsGateway.Plugin.HUANANSFSK.csproj" />
<!--<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.IDR210\ThingsGateway.Plugin.IDR210.csproj" />-->
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.KELID2008\ThingsGateway.Plugin.KELID2008.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.LEIDIAN\ThingsGateway.Plugin.LEIDIANAPI.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.LKSIS\ThingsGateway.Plugin.LKSIS.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.Melsec\ThingsGateway.Plugin.Melsec.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.ModbusC1\ThingsGateway.Plugin.ModbusC1.csproj" />
<!--<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.MqttSZJYZ\ThingsGateway.Plugin.MqttSZJYZ.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.MqttYINGKE\ThingsGateway.Plugin.MqttYINGKE.csproj" />-->
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.Omron\ThingsGateway.Plugin.Omron.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.SECS\ThingsGateway.Plugin.SECS.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.TS550\ThingsGateway.Plugin.TS550.csproj" />
<!--<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.URF_R330\ThingsGateway.Plugin.URF_R330.csproj" />-->
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.USBScaner\ThingsGateway.Plugin.USBScaner.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.Vigor\ThingsGateway.Plugin.Vigor.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.YPSFSK\ThingsGateway.Plugin.YPSFSK.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.AllenBradleyCip\ThingsGateway.Plugin.AllenBradleyCip.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.BACnet\ThingsGateway.Plugin.BACnet.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.DCON\ThingsGateway.Plugin.DCON.csproj" />
<!--<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.DKQ_A16D\ThingsGateway.Plugin.DKQ_A16D.csproj" />-->
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.EDPF_NT\ThingsGateway.Plugin.EDPF_NT.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.HJ212\ThingsGateway.Plugin.HJ212.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.HUANANSFSK\ThingsGateway.Plugin.HUANANSFSK.csproj" />
<!--<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.IDR210\ThingsGateway.Plugin.IDR210.csproj" />-->
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.KELID2008\ThingsGateway.Plugin.KELID2008.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.LEIDIAN\ThingsGateway.Plugin.LEIDIANAPI.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.LKSIS\ThingsGateway.Plugin.LKSIS.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.Melsec\ThingsGateway.Plugin.Melsec.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.ModbusC1\ThingsGateway.Plugin.ModbusC1.csproj" />
<!--<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.MqttSZJYZ\ThingsGateway.Plugin.MqttSZJYZ.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.MqttYINGKE\ThingsGateway.Plugin.MqttYINGKE.csproj" />-->
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.Omron\ThingsGateway.Plugin.Omron.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.SECS\ThingsGateway.Plugin.SECS.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.TS550\ThingsGateway.Plugin.TS550.csproj" />
<!--<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.URF_R330\ThingsGateway.Plugin.URF_R330.csproj" />-->
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.USBScaner\ThingsGateway.Plugin.USBScaner.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.Vigor\ThingsGateway.Plugin.Vigor.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.YPSFSK\ThingsGateway.Plugin.YPSFSK.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.TIANXIN\ThingsGateway.Plugin.TIANXIN.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.Inovance\ThingsGateway.Plugin.Inovance.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.TIANXIN\ThingsGateway.Plugin.TIANXIN.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.Inovance\ThingsGateway.Plugin.Inovance.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.ModbusGY\ThingsGateway.Plugin.ModbusGY.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.IXCom29s\ThingsGateway.Plugin.IXCom29s.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.OpcAe\ThingsGateway.Plugin.OpcAe.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Foundation.OpcAe\ThingsGateway.Foundation.OpcAe.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.ModbusGY\ThingsGateway.Plugin.ModbusGY.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.IXCom29s\ThingsGateway.Plugin.IXCom29s.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.OpcAe\ThingsGateway.Plugin.OpcAe.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Foundation.OpcAe\ThingsGateway.Foundation.OpcAe.csproj" />
</ItemGroup>

View File

@@ -1,4 +1,4 @@
docker pull mcr.microsoft.com/dotnet/aspnet:8.0-noble
docker pull mcr.microsoft.com/dotnet/aspnet:10.0-noble-amd64
docker build -t registry.cn-shenzhen.aliyuncs.com/thingsgateway/thingsgateway:latest .

View File

@@ -1,4 +1,4 @@
docker pull mcr.microsoft.com/dotnet/aspnet:8.0-noble-arm64v8
docker pull mcr.microsoft.com/dotnet/aspnet:10.0-noble-arm64v8
docker build -f Dockerfile_arm64 -t registry.cn-shenzhen.aliyuncs.com/thingsgateway/thingsgateway_arm64:latest .

View File

@@ -4,8 +4,8 @@
#拉取docker pull registry.cn-shenzhen.aliyuncs.com/thingsgateway/thingsgateway
#推送docker push registry.cn-shenzhen.aliyuncs.com/thingsgateway/thingsgateway
#aspnetcore8.0环境
FROM mcr.microsoft.com/dotnet/aspnet:8.0-noble AS base
#aspnetcore10.0环境
FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble-amd64 AS base
COPY . /app
WORKDIR /app
#默认web
@@ -13,10 +13,9 @@ EXPOSE 5000
# 添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai
ENV TZ=Asia/Shanghai
# 转发头
ENV ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
# 使用软连接,并且将时区配置覆盖/etc/timezone
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
ENTRYPOINT ["dotnet", "ThingsGateway.Server.dll","--urls","http://*:5000"]

View File

@@ -4,8 +4,8 @@
#拉取docker pull registry.cn-shenzhen.aliyuncs.com/thingsgateway/thingsgateway_arm64
#推送docker push registry.cn-shenzhen.aliyuncs.com/thingsgateway/thingsgateway_arm64
#aspnetcore8.0环境
FROM mcr.microsoft.com/dotnet/aspnet:8.0-noble-arm64v8 AS base
#aspnetcore10.0环境
FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble-arm64v8 AS base
COPY . /app
WORKDIR /app
#默认web
@@ -13,9 +13,8 @@ EXPOSE 5000
# 添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai
ENV TZ=Asia/Shanghai
# 转发头
ENV ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
# 使用软连接,并且将时区配置覆盖/etc/timezone
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
ENTRYPOINT ["dotnet", "ThingsGateway.Server.dll","--urls","http://*:5000"]

View File

@@ -1,23 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<ItemGroup Condition=" '$(SolutionName)' != 'ThingsGatewayRelease'">
<ProjectReference Include="..\ThingsGateway.Gateway.Application\ThingsGateway.Gateway.Application.csproj" />
<ItemGroup>
<ProjectReference Include="..\ThingsGateway.Gateway.Razor\ThingsGateway.Gateway.Razor.csproj" />
</ItemGroup>
<!--发布版-->
<Import Project="targets\Gateway.targets" Condition=" '$(SolutionName)' == 'ThingsGatewayRelease' " />
<Import Project="targets\Admin.targets" Condition=" '$(SolutionName)' == 'ThingsGatewayRelease' " />
<Import Project="targets\PluginContext.targets" Condition=" '$(SolutionName)' == 'ThingsGatewayPro' AND '$(Configuration)' != 'Debug' " />
<!--nuget包解压复制文件上下文动态加载-->
<Import Project="targets\PluginContext.targets" Condition=" '$(SolutionName)' != 'ThingsGatewayPro'" />
<Import Project="targets\PluginContext.targets" Condition=" '$(SolutionName)' != 'ThingsGatewayAll' OR '$(Configuration)' == 'Release' " />
<!--nuget包解压复制文件上下文动态加载Pro插件-->
<Import Project="targets\Pro2.targets" Condition=" '$(SolutionName)' != 'ThingsGatewayPro'" />
<Import Project="targets\Pro2.targets" Condition=" '$(SolutionName)' != 'ThingsGatewayAll' OR '$(Configuration)' == 'Release' " />
<!--nuget包解压复制文件上下文动态加载-->
<Import Project="targets\PluginDebug.targets" Condition=" '$(SolutionName)' == 'ThingsGatewayAll' AND '$(Configuration)' != 'Release' " />
<!--nuget包解压复制文件上下文动态加载Pro插件-->
<Import Project="targets\ProPluginDebug.targets" Condition=" '$(SolutionName)' == 'ThingsGatewayAll' AND '$(Configuration)' != 'Release' " />
<!--打包复制-->
<Import Project="targets\PluginPublish.targets" />

View File

@@ -1,16 +1,16 @@
<Project>
<ItemGroup>
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.Modbus\ThingsGateway.Plugin.Modbus.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.Dlt645\ThingsGateway.Plugin.Dlt645.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.SiemensS7\ThingsGateway.Plugin.SiemensS7.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.DB\ThingsGateway.Plugin.DB.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.Kafka\ThingsGateway.Plugin.Kafka.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.Mqtt\ThingsGateway.Plugin.Mqtt.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.OpcDa\ThingsGateway.Plugin.OpcDa.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.OpcUa\ThingsGateway.Plugin.OpcUa.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.RabbitMQ\ThingsGateway.Plugin.RabbitMQ.csproj" />
<ProjectReference Include="..\Plugin\ThingsGateway.Plugin.Http\ThingsGateway.Plugin.Http.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.Modbus\ThingsGateway.Plugin.Modbus.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.Dlt645\ThingsGateway.Plugin.Dlt645.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.SiemensS7\ThingsGateway.Plugin.SiemensS7.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.DB\ThingsGateway.Plugin.DB.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.Kafka\ThingsGateway.Plugin.Kafka.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.Mqtt\ThingsGateway.Plugin.Mqtt.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.OpcDa\ThingsGateway.Plugin.OpcDa.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.OpcUa\ThingsGateway.Plugin.OpcUa.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.RabbitMQ\ThingsGateway.Plugin.RabbitMQ.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.Plugin\src\ThingsGateway.Plugin.Http\ThingsGateway.Plugin.Http.csproj" />
</ItemGroup>

View File

@@ -30,7 +30,7 @@
<!--URF_R330 插件-->
<!--<PackageReference Include="ThingsGateway.Plugin.URF_R330" Version="$(ProPluginVersion)" GeneratePathProperty="true" Private="false" IncludeAssets=" native;" />-->
<!--USBScaner 插件-->
<PackageReference Include="ThingsGateway.Plugin.USBScaner" Version="$(ProPluginVersion)" GeneratePathProperty="true" Private="false" IncludeAssets=" native;" />
<!--<PackageReference Include="ThingsGateway.Plugin.USBScaner" Version="$(ProPluginVersion)" GeneratePathProperty="true" Private="false" IncludeAssets=" native;" />-->
<PackageReference Include="ThingsGateway.Plugin.SECS" Version="$(ProPluginVersion)" GeneratePathProperty="true" Private="false" IncludeAssets=" native;" />

View File

@@ -1,39 +1,38 @@
<Project>
<ItemGroup>
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.SyncBridge\ThingsGateway.Plugin.SyncBridge.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.SyncBridge\ThingsGateway.Plugin.SyncBridge.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.AllenBradleyCip\ThingsGateway.Plugin.AllenBradleyCip.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.BACnet\ThingsGateway.Plugin.BACnet.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.DCON\ThingsGateway.Plugin.DCON.csproj" />
<!--<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.DKQ_A16D\ThingsGateway.Plugin.DKQ_A16D.csproj" />-->
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.EDPF_NT\ThingsGateway.Plugin.EDPF_NT.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.HJ212\ThingsGateway.Plugin.HJ212.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.HUANANSFSK\ThingsGateway.Plugin.HUANANSFSK.csproj" />
<!--<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.IDR210\ThingsGateway.Plugin.IDR210.csproj" />-->
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.KELID2008\ThingsGateway.Plugin.KELID2008.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.LEIDIAN\ThingsGateway.Plugin.LEIDIANAPI.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.LKSIS\ThingsGateway.Plugin.LKSIS.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.Melsec\ThingsGateway.Plugin.Melsec.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.ModbusC1\ThingsGateway.Plugin.ModbusC1.csproj" />
<!--<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.MqttSZJYZ\ThingsGateway.Plugin.MqttSZJYZ.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.MqttYINGKE\ThingsGateway.Plugin.MqttYINGKE.csproj" />-->
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.Omron\ThingsGateway.Plugin.Omron.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.SECS\ThingsGateway.Plugin.SECS.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.TS550\ThingsGateway.Plugin.TS550.csproj" />
<!--<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.URF_R330\ThingsGateway.Plugin.URF_R330.csproj" />-->
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.USBScaner\ThingsGateway.Plugin.USBScaner.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.Vigor\ThingsGateway.Plugin.Vigor.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.YPSFSK\ThingsGateway.Plugin.YPSFSK.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.AllenBradleyCip\ThingsGateway.Plugin.AllenBradleyCip.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.BACnet\ThingsGateway.Plugin.BACnet.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.DCON\ThingsGateway.Plugin.DCON.csproj" />
<!--<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.DKQ_A16D\ThingsGateway.Plugin.DKQ_A16D.csproj" />-->
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.EDPF_NT\ThingsGateway.Plugin.EDPF_NT.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.HJ212\ThingsGateway.Plugin.HJ212.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.HUANANSFSK\ThingsGateway.Plugin.HUANANSFSK.csproj" />
<!--<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.IDR210\ThingsGateway.Plugin.IDR210.csproj" />-->
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.KELID2008\ThingsGateway.Plugin.KELID2008.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.LEIDIAN\ThingsGateway.Plugin.LEIDIANAPI.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.LKSIS\ThingsGateway.Plugin.LKSIS.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.Melsec\ThingsGateway.Plugin.Melsec.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.ModbusC1\ThingsGateway.Plugin.ModbusC1.csproj" />
<!--<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.MqttSZJYZ\ThingsGateway.Plugin.MqttSZJYZ.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.MqttYINGKE\ThingsGateway.Plugin.MqttYINGKE.csproj" />-->
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.Omron\ThingsGateway.Plugin.Omron.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.SECS\ThingsGateway.Plugin.SECS.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.TS550\ThingsGateway.Plugin.TS550.csproj" />
<!--<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.URF_R330\ThingsGateway.Plugin.URF_R330.csproj" />-->
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.USBScaner\ThingsGateway.Plugin.USBScaner.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.Vigor\ThingsGateway.Plugin.Vigor.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.YPSFSK\ThingsGateway.Plugin.YPSFSK.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.TIANXIN\ThingsGateway.Plugin.TIANXIN.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.Inovance\ThingsGateway.Plugin.Inovance.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.TIANXIN\ThingsGateway.Plugin.TIANXIN.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.Inovance\ThingsGateway.Plugin.Inovance.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.ModbusGY\ThingsGateway.Plugin.ModbusGY.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.IXCom29s\ThingsGateway.Plugin.IXCom29s.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Plugin.OpcAe\ThingsGateway.Plugin.OpcAe.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Foundation.OpcAe\ThingsGateway.Foundation.OpcAe.csproj" />
<ProjectReference Include="..\PluginPro\ThingsGateway.Gateway.VariableCore\ThingsGateway.Gateway.VariableCore.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.ModbusGY\ThingsGateway.Plugin.ModbusGY.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.IXCom29s\ThingsGateway.Plugin.IXCom29s.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Plugin.OpcAe\ThingsGateway.Plugin.OpcAe.csproj" />
<ProjectReference Include="..\..\..\ThingsGateway.ProPlugin\src\ThingsGateway.Foundation.OpcAe\ThingsGateway.Foundation.OpcAe.csproj" />
</ItemGroup>

302
wiki.json Normal file
View File

@@ -0,0 +1,302 @@
{
"repo_notes": [
{
"content": ""
}
],
"pages": [
{
"title": "Overview",
"purpose": "Introduce ThingsGateway, explaining what it is, its core purpose as an industrial IoT gateway, and the high-level architecture",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Key Features",
"purpose": "List and describe the main features including multi-protocol support, plugin architecture, data persistence options, and deployment models",
"parent": "Overview",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "System Requirements and Dependencies",
"purpose": "Document the .NET versions, target frameworks, required NuGet packages, and system requirements",
"parent": "Overview",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Getting Started",
"purpose": "Provide quick-start guide for installing and running ThingsGateway",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Installation and Deployment",
"purpose": "Explain deployment options including Docker (x64/ARM64), web server, desktop application, and configuration basics",
"parent": "Getting Started",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Initial Configuration",
"purpose": "Guide users through initial setup including appsettings.json, environment variables, logging configuration, and first channel/device setup",
"parent": "Getting Started",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Architecture Overview",
"purpose": "Explain the overall system architecture including layered design, separation of concerns, and component relationships",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Layered Architecture",
"purpose": "Describe the Foundation, Gateway Application, and UI/Admin layers and their responsibilities",
"parent": "Architecture Overview",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Plugin System Architecture",
"purpose": "Explain the plugin architecture including Foundation vs Plugin layer separation, dynamic loading with AssemblyLoadContext, and plugin types",
"parent": "Architecture Overview",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Build System and Conditional Compilation",
"purpose": "Document the MSBuild-based build system including Directory.Build.props, conditional plugin loading, multi-targeting, and NuGet package generation",
"parent": "Architecture Overview",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Foundation Layer",
"purpose": "Document the core foundation libraries that provide protocol implementations and communication primitives",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Device Communication",
"purpose": "Explain DeviceBase abstraction, IDevice interface, protocol implementations, read/write operations, and data parsing",
"parent": "Foundation Layer",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Channel Architecture",
"purpose": "Document IChannel interface, channel implementations (TCP/UDP/Serial), channel options, and connection lifecycle",
"parent": "Foundation Layer",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Data Handling and Transformation",
"purpose": "Describe DataHandlingAdapter, message parsing, ThingsGatewayBitConverter for endianness/format conversion, and WaitHandlePool for request-response correlation",
"parent": "Foundation Layer",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Core Utilities",
"purpose": "Document TimerX scheduling, ExpiringDictionary caching, WaitLock concurrency primitives, and Reflect utilities",
"parent": "Foundation Layer",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Gateway Application",
"purpose": "Explain the main gateway application layer that orchestrates device communication and data flow",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Runtime Management System",
"purpose": "Document the entity-to-runtime conversion, GlobalData static registry, RuntimeServiceHelper, and runtime synchronization",
"parent": "Gateway Application",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Device Lifecycle Management",
"purpose": "Explain DeviceThreadManage, driver initialization, StartAsync/StopAsync lifecycle, TaskSchedulerLoop, and thread management",
"parent": "Gateway Application",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Variable Management",
"purpose": "Document VariableRuntime, VariableSourceRead, variable packing optimization, and data collection workflow",
"parent": "Gateway Application",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Concurrency and Read/Write Coordination",
"purpose": "Explain AsyncReadWriteLock, reader/writer priority, duty cycle control, and concurrent operation management",
"parent": "Gateway Application",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Event System",
"purpose": "Document GlobalData event dispatchers, VariableValueChangeEvent, DeviceStatusChangeEvent, AlarmChangedEvent, and event flow",
"parent": "Gateway Application",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Redundancy and Failover",
"purpose": "Explain device redundancy system, master/slave configuration, failover triggers, and variable state transfer",
"parent": "Gateway Application",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Plugin Development",
"purpose": "Guide for developing custom plugins for data collection and business logic integration",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Collection Plugins (CollectBase)",
"purpose": "Document how to create data collection plugins including protocol implementation, variable loading, and scheduled tasks",
"parent": "Plugin Development",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Business Plugins (BusinessBase)",
"purpose": "Explain business plugin development for data persistence, distribution, and serving protocols",
"parent": "Plugin Development",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Plugin Service and Dynamic Loading",
"purpose": "Document PluginService, AssemblyLoadContext usage, plugin discovery, driver instantiation, and property configuration",
"parent": "Plugin Development",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Plugin Packaging and Distribution",
"purpose": "Explain how to package plugins as NuGet packages, versioning, and deployment via Directory.build.targets",
"parent": "Plugin Development",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Built-in Protocols",
"purpose": "Document the built-in protocol implementations including Modbus, Siemens S7, OPC UA, OPC DA, and Dlt645",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Modbus Protocol",
"purpose": "Document Modbus Master/Slave implementations, RTU/TCP/UDP support, function codes, and address parsing",
"parent": "Built-in Protocols",
"page_notes": [
{
"content": ""
}
]
},
{
"title": "Siemens S7 Protocol",
"purpose": "Explain S7 Master implementation, PLC types, area addressing, and data block access",
"parent": "Built-in Protocols",
"page_notes": [
{
"content": ""
}
]
}
]
}