Commit 959d8cdd 刘韬

Merge branch 'SO00075(SO1164)扫码贴标机' of http://106.15.194.121:8083/liutao/SO827-A…

…utoScanAndLabel into SO00075(SO1164)扫码贴标机
2 个父辈 91581189 0d0077b1
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<appSettings>
<!--是否开机自动启动料仓-->
<add key="App_AutoRun" value="1" />
<add key="CameraName" value="GigE:acA3800-10gc (23124327)#" />
<add key="Config_Pwd" value="123456" />
<add key="CodeType" value="QR Code#Data Matrix ECC 200#barcode" />
<add key="App_AutoRun" value="1"/>
<add key="CameraName" value="GigE:acA3800-10gc (23124327)#"/>
<add key="Config_Pwd" value="123456"/>
<add key="CodeType" value="QR Code#Data Matrix ECC 200#barcode"/>
<!--二维码参数文件所在路径,文件名与二维码类型名一样-->
<add key="CodeParamPath" value="Conifg\" />
<add key="CodeCount" value="3" />
<add key="CodeParamPath" value="Conifg\"/>
<add key="CodeCount" value="3"/>
</appSettings>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs/AutoScanAndLabel.log" />
<param name="Encoding" value="UTF-8" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd" />
<file value="logs/AutoScanAndLabel.log"/>
<param name="Encoding" value="UTF-8"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date][%t]%-5p %m%n" />
<conversionPattern value="[%date][%t]%-5p %m%n"/>
</layout>
</appender>
<appender name="LngResource" type="log4net.Appender.RollingFileAppender">
<file value="logs/LngResource.log" />
<param name="Encoding" value="UTF-8" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd" />
<file value="logs/LngResource.log"/>
<param name="Encoding" value="UTF-8"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m%n" />
<conversionPattern value="%m%n"/>
</layout>
</appender>
<appender name="standrobot" type="log4net.Appender.RollingFileAppender">
<file value="logs/standrobot/standrobot.log" />
<param name="Encoding" value="UTF-8" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd" />
<file value="logs/standrobot/standrobot.log"/>
<param name="Encoding" value="UTF-8"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m%n" />
<conversionPattern value="%m%n"/>
</layout>
</appender>
<logger name="RollingLogFileAppender">
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
<level value="ALL"/>
<appender-ref ref="RollingLogFileAppender"/>
</logger>
<logger name="LngResource">
<level value="ALL" />
<appender-ref ref="LngResource" />
<level value="ALL"/>
<appender-ref ref="LngResource"/>
</logger>
<logger name="HCBOARD">
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
<level value="ALL"/>
<appender-ref ref="RollingLogFileAppender"/>
</logger>
<logger name="standrobot">
<level value="info" />
<appender-ref ref="standrobot" />
<level value="info"/>
<appender-ref ref="standrobot"/>
</logger>
<!--<root>
<level value="Info" />
......@@ -66,13 +66,13 @@
</root>-->
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
......
......@@ -8,7 +8,7 @@
<OutputType>WinExe</OutputType>
<RootNamespace>AutoScanAndLabel</RootNamespace>
<AssemblyName>AutoScanAndLabel</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>false</Deterministic>
......
......@@ -15,6 +15,7 @@ namespace AutoScanAndLabel
{
public LogControl()
{
CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
showLogProDelegate = new ShowLogProDelegate(ShowLogPro);
LogUtil.ShowLog += LogUtil_ShowLog;
......
......@@ -19,7 +19,7 @@ namespace AutoScanAndLabel.Properties {
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
......
......@@ -12,7 +12,7 @@ namespace AutoScanAndLabel.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
......
......@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OnlineStore.Common</RootNamespace>
<AssemblyName>MyCommon</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
......
......@@ -2,14 +2,14 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OnlineStore.Common
{
public class LineGetPosOp
{
public LineGetPosOp(string cids,string code)
public LineGetPosOp(string cids, string code)
{
this.cids = cids;
this.code = code;
......@@ -72,6 +72,11 @@ namespace OnlineStore.Common
get { return _data; }
set { _data = value; }
}
public Dictionary<String, Dictionary<String, String>> mimoOpMap = new Dictionary<string, Dictionary<string, string>>();
/// <summary>
/// agv的日志信息
/// </summary>
public List<AgvLogInfo> logList = new List<AgvLogInfo>();
/// <summary>
/// 整体料仓状态
/// 1=正常运行中
......@@ -89,6 +94,12 @@ namespace OnlineStore.Common
/// 警告:出库盘到达工位但是没有工人操作
/// </summary>
public string msg { get; set; }
// public Dictionary<string, string> msgData { get; set; } = new Dictionary<string, string>() { {"zh","" },{ "en", "" }, { "jp", "" } };
public Dictionary<string, string> msgData { get; set; } = new Dictionary<string, string>();
public string msgParam { get; set; }
public string msgCode { get; set; }
public string msgEn { get; set; }
public string msgJp { get; set; }
/// <summary>
/// 包含的多个 BOX 的状态信息
/// </summary>
......@@ -98,7 +109,35 @@ namespace OnlineStore.Common
/// </summary>
public List<AlarmInfo> alarmList = new List<AlarmInfo>();
}
/**
* agv日志信息
*/
public class AgvLogInfo
{
/**
* 消息字符串Code
*/
public String msgCode { get; set; }
/**
* 消息内容
*/
public String msg { get; set; }
/**
* 参数
*/
public String[] msgParams { get; set; }
/**
* 出现时间
*/
public long time { get; set; }
public AgvLogInfo(string msg)
{
this.msgCode = msgCode;
this.msg = msg;
this.msgParams = msgParams;
this.time = DateTime.Now.Ticks;
}
}
/// <summary>
/// 单台料仓状态(包含流水线)
/// </summary>
......@@ -162,7 +201,7 @@ namespace OnlineStore.Common
/// <summary>
/// 料仓ID,0表示流水线
/// </summary>
public int boxId { get; set; }
public int boxId { get; set; }
/// <summary>
/// 报警类型,
/// </summary>
......@@ -181,11 +220,11 @@ namespace OnlineStore.Common
//AlarmType=2 电钢报警 5=上下电钢
//AlarmType=3 IO报警,信号超时 io电器定义(电器定义)
/// </summary>
public string alarmDetail { get; set; }
public string alarmDetail { get; set; }
/// <summary>
/// 报警消息
/// </summary>
public string alarmMsg { get; set; }
public string alarmMsg { get; set; }
/// <summary>
/// 0,1=入库,2=出库
/// </summary>
......@@ -250,6 +289,25 @@ namespace OnlineStore.Common
public static string rfidLoc = "rfidLoc";
public static string barcode = "barcode";
/// <summary>
/// 贴标机交互按钮,出口 满料串取出
/// </summary>
public static string SendFullShelf = "SendFullShelf";
/// <summary>
/// 贴标机交互按钮,出口 空料串送入
/// </summary>
public static string NeedEmptySHelf = "NeedEmptySHelf";
/// <summary>
/// 贴标机交互按钮,入口 满料串送入
/// </summary>
public static string NeedFullShelf = "NeedFullShelf";
/// <summary>
/// 贴标机交互按钮,入口 空料串取出
/// </summary>
public static string SendEmptyShelf = "SendEmptyShelf";
public static string doit = "doit";
public static string disable = "disable";
public static string enable = "enable";
}
}
using System;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
......@@ -75,7 +76,26 @@ namespace OnlineStore.Common
{
return Post(url, paramData, Encoding.UTF8, timeOut);
}
public static T Post<T>(string url, T operation, int timeout = 5000, bool printlog = false) where T : new()
{
try
{
string json = JsonConvert.SerializeObject(operation);
string result = Post(url, json, timeout);
T op = JsonConvert.DeserializeObject<T>(result);
if (printlog)
{
LogUtil.info("Send [" + json + "] Revice [" + result + "]");
}
return op;
}
catch (Exception ex)
{
LogUtil.error("Post 出错:" + ex);
}
return default;
}
public static string Post(string url, string paramData, Encoding encoding, int timeOut = 10000)
{
......
......@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DL.StandardRobot</RootNamespace>
<AssemblyName>DL.StandardRobot</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
......
using DeviceLib.WebApi.Schemas;
using DeviceLibrary;
using DeviceLibrary.AGVService.Schemas;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
namespace DeviceLib.WebApi.Controllers
{
/// <summary>
/// 设备操作
/// </summary>
[RoutePrefix("nepconSmf/deviceOperate")]
public class deviceOperateController : ApiController
{
[HttpPost]
public RtnData agvOp([FromBody] DeviceCheckDto dto)
{
AGVManager.HandleDeviceOperate(dto, out RtnData rtnData);
return rtnData;
}
}
}
using DeviceLib.WebApi.Schemas;
using DeviceLibrary.AGVService.Schemas;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
namespace DeviceLibrary.AGVService.Controllers
{
/// <summary>
/// 任务执行通知
/// </summary>
[RoutePrefix("nepconSmf/notification")]
public class taskNotificationController : ApiController
{
[HttpPost]
public RtnData taskStatus([FromBody] NotificationDto dto)
{
AGVManager.HandleTaskNotification(dto, out RtnData rtnData);
return rtnData;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.SelfHost;
namespace DeviceLib.WebApi
{
public class HttpService : IDisposable
{
public int Port { get; set; }
private readonly HttpSelfHostServer _server;
public HttpService(int port)
{
this.Port = port;
var config = new HttpSelfHostConfiguration($"http://0.0.0.0:{this.Port}");
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute("DefaultApi", "nepconSmf/{controller}");
_server = new HttpSelfHostServer(config);
}
public Task StartHttpServer()
{
return _server.OpenAsync();
}
public Task CloseHttpServer()
{
return _server.CloseAsync();
}
public void Dispose()
{
_server?.Dispose();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DeviceLib.WebApi.Schemas
{
public class DeviceCheckDto
{
/// <summary>
/// 设备标识
/// </summary>
public string device_code { get; set; }
/// <summary>
/// 操作
/// </summary>
public string operate { get; set; }
/// <summary>
/// 任务类型
/// </summary>
public string task_type { get; set; }
/// <summary>
/// 上料请求
/// </summary>
public const string LOAD_REQ = "LOAD_REQ";
/// <summary>
/// 上料完成
/// </summary>
public const string LOAD_DONE = "LOAD_DONE";
/// <summary>
/// 下料请求
/// </summary>
public const string UNLOAD_REQ = "UNLOAD_REQ";
/// <summary>
/// 下料完成
/// </summary>
public const string UNLOAD_DONE = "UNLOAD_DONE";
/// <summary>
/// 开门请求
/// </summary>
public const string OPEN_DOOR = "OPEN_DOOR";
/// <summary>
/// 关门请求
/// </summary>
public const string CLOSE_DOOR = "CLOSE_DOOR";
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DeviceLibrary.AGVService.Schemas
{
public class NotificationDto
{
/// <summary>
/// 订单执行状态
/// </summary>
public string status { get; set; }
/// <summary>
/// task_code
/// </summary>
public string task_code { get; set; }
/// <summary>
/// 队列中
/// </summary>
public const string QUEUEING = "QUEUEING";
/// <summary>
/// 正在执行
/// </summary>
public const string EXECUTING = "EXECUTING";
/// <summary>
/// 失败
/// </summary>
public const string FAILED = "FAILED";
/// <summary>
/// 已取消
/// </summary>
public const string CANCELLED = "CANCELLED";
/// <summary>
/// 成功
/// </summary>
public const string SUCCESS = "SUCCESS";
/// <summary>
/// 已挂起
/// </summary>
public const string HANG = "HANG";
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DeviceLibrary.AGVService.Schemas
{
public class RtnData
{
public int code { get; set; } = 0;
public object data { get; set; }
public string msg { get; set; } = "ok";
}
}
......@@ -68,8 +68,9 @@ namespace DeviceLibrary
/// </summary>
public bool isInSuddenDown = false;
public ServerCommunication ServerCM;
DeviceLib.WebApi.HttpService agvService = new DeviceLib.WebApi.HttpService(ConfigHelper.Config.Get("AGVService_Port",8088));
public MainMachine(Robot_Config _config)
{
Config = _config;
......@@ -112,6 +113,8 @@ namespace DeviceLibrary
InitPrint();
LedProcessInit();
agvService.StartHttpServer();
ServerCM = new ServerCommunication();
crc.LanguageChangeEvent += Crc_LanguageChangeEvent;
}
......
......@@ -70,6 +70,7 @@ namespace DeviceLibrary
if (!IsDebug)
return;
}
mainMachine.ServerCM.StartConnectServer();
var ElectricGripperPort = ConfigHelper.Config.Get("ElectricGripperPort");
electricGripper.OpenPort(ElectricGripperPort);
mainThread = new Thread(new ThreadStart(mainMachine.Run));
......@@ -88,8 +89,8 @@ namespace DeviceLibrary
public static void Stop()
{
LogUtil.info("开始停止系统.");
mainMachine.Stop();
mainMachine.ServerCM.StopConnectServer();
mainMachine?.Stop();
mainMachine.UserPause = false;
//IOManager.CloseAllConnection();
//electricGripper.ClosePort();
......
......@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DeviceLibrary</RootNamespace>
<AssemblyName>DeviceLibrary</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
......@@ -50,7 +50,9 @@
<Reference Include="log4net, Version=2.0.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.12\lib\net45\log4net.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL" />
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="RmaxisV2, Version=1.0.0.0, Culture=neutral, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\AutoScanAndLabel\bin\Debug\RmaxisV2.dll</HintPath>
......@@ -65,7 +67,16 @@
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http.Formatting, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.9\lib\net45\System.Net.Http.Formatting.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Web.Http, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.9\lib\net45\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http.SelfHost, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.SelfHost.5.2.9\lib\net45\System.Web.Http.SelfHost.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
......@@ -75,6 +86,12 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AGVService\Controllers\deviceOperateController.cs" />
<Compile Include="AGVService\Controllers\taskNotificationController.cs" />
<Compile Include="AGVService\HttpService.cs" />
<Compile Include="AGVService\Schemas\DeviceCheckDto.cs" />
<Compile Include="AGVService\Schemas\NotificationDto.cs" />
<Compile Include="AGVService\Schemas\RtnData.cs" />
<Compile Include="AutoScanAndLabel\AxisBean.cs" />
<Compile Include="AutoScanAndLabel\Common.cs" />
<Compile Include="AutoScanAndLabel\LabelParam.cs" />
......@@ -103,6 +120,7 @@
<Compile Include="DeviceLibrary\I_IOManager.cs" />
<Compile Include="DeviceLibrary\IOManager.cs" />
<Compile Include="DeviceLibrary\RemoteDecodeHelper.cs" />
<Compile Include="DeviceLibrary\ServerCommunication.cs" />
<Compile Include="DeviceLibrary\ZebraPrinter.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="userControl\AxisMoveControl.cs">
......@@ -132,7 +150,7 @@
<Name>Common</Name>
</ProjectReference>
<ProjectReference Include="..\DL.StandardRobots\DL.StandardRobots.csproj">
<Project>{f85a7412-b5b3-4291-a448-a10564602e1a}</Project>
<Project>{F85A7412-B5B3-4291-A448-A10564602E1A}</Project>
<Name>DL.StandardRobots</Name>
</ProjectReference>
<ProjectReference Include="..\LoadCVSLibrary\LoadCSVLibrary.csproj">
......@@ -152,5 +170,6 @@
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
\ No newline at end of file
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup></configuration>
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="log4net" version="2.0.12" targetFramework="net472" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.9" targetFramework="net472" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.9" targetFramework="net472" />
<package id="Microsoft.AspNet.WebApi.SelfHost" version="5.2.9" targetFramework="net472" />
<package id="Newtonsoft.Json" version="6.0.4" targetFramework="net472" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net461" requireReinstallation="true" />
</packages>
\ No newline at end of file
......@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OnlineStore.LoadCSVLibrary</RootNamespace>
<AssemblyName>LoadCSVLibrary</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!