This commit is contained in:
@@ -1,23 +1,28 @@
|
||||
using LiveCharts;
|
||||
using LiveCharts.Wpf;
|
||||
using OxyPlot;
|
||||
using OxyPlot.Axes;
|
||||
using OxyPlot.Series;
|
||||
using OxyPlot.WindowsForms;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Threading.Tasks;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Forms.Integration;
|
||||
|
||||
namespace 全自动水压检测仪
|
||||
{
|
||||
/// <summary>
|
||||
/// 图表管理器 - 负责实时曲线图的创建和数据更新
|
||||
/// 第一Y轴:实时压力(地址3130)
|
||||
/// 第二Y轴:压力设定值(地址2400,对应"压力设置(PSI)")
|
||||
/// </summary>
|
||||
public class ChartManager
|
||||
{
|
||||
private ElementHost _chartHost;
|
||||
private LiveCharts.Wpf.CartesianChart _chart;
|
||||
private ChartValues<double> _pressureValues;
|
||||
private ChartValues<double> _temperatureValues;
|
||||
private ChartValues<string> _timeLabels;
|
||||
private PlotView _plotView;
|
||||
private PlotModel _plotModel;
|
||||
private LineSeries _pressureSeries; // 实时压力值(地址3130)
|
||||
private LineSeries _pressureSetSeries; // 压力设定值(地址2400)
|
||||
private List<DataPoint> _pressureData;
|
||||
private List<DataPoint> _pressureSetData;
|
||||
private const int MAX_DATA_POINTS = 60; // 最多显示60个数据点
|
||||
|
||||
/// <summary>
|
||||
@@ -33,132 +38,167 @@ namespace 全自动水压检测仪
|
||||
// 清除占位文字
|
||||
targetPanel.Text = null;
|
||||
|
||||
// 初始化数据集合
|
||||
_pressureValues = new ChartValues<double>();
|
||||
_temperatureValues = new ChartValues<double>();
|
||||
_timeLabels = new ChartValues<string>();
|
||||
// 初始化数据集合
|
||||
_pressureData = new List<DataPoint>();
|
||||
_pressureSetData = new List<DataPoint>();
|
||||
|
||||
// 创建PlotModel
|
||||
_plotModel = new PlotModel
|
||||
{
|
||||
Title = "",
|
||||
Background = OxyColors.White,
|
||||
PlotAreaBorderColor = OxyColors.Gray
|
||||
};
|
||||
|
||||
// 配置图例
|
||||
_plotModel.Legends.Add(new OxyPlot.Legends.Legend
|
||||
{
|
||||
LegendPosition = OxyPlot.Legends.LegendPosition.TopCenter,
|
||||
LegendOrientation = OxyPlot.Legends.LegendOrientation.Horizontal
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
// 创建WPF图表控件
|
||||
_chart = new LiveCharts.Wpf.CartesianChart
|
||||
// 配置X轴(时间轴 - 使用测试时间总秒数)
|
||||
var xAxis = new LinearAxis
|
||||
{
|
||||
Position = AxisPosition.Bottom,
|
||||
Title = "测试时间",
|
||||
TitleFontSize = 12,
|
||||
FontSize = 10,
|
||||
MajorGridlineStyle = LineStyle.Solid,
|
||||
MajorGridlineColor = OxyColor.FromRgb(230, 230, 230),
|
||||
MinorGridlineStyle = LineStyle.Dot,
|
||||
MinorGridlineColor = OxyColor.FromRgb(240, 240, 240),
|
||||
Minimum = 0,
|
||||
Maximum = 60,
|
||||
// 格式化X轴标签为HH:MM:SS格式
|
||||
LabelFormatter = value =>
|
||||
{
|
||||
Background = System.Windows.Media.Brushes.White,
|
||||
DisableAnimations = false,
|
||||
Hoverable = true,
|
||||
DataTooltip = null,
|
||||
LegendLocation = LegendLocation.Top
|
||||
};
|
||||
int totalSec = (int)value;
|
||||
int h = totalSec / 3600;
|
||||
int m = (totalSec % 3600) / 60;
|
||||
int s = totalSec % 60;
|
||||
return $"{h:D2}:{m:D2}:{s:D2}";
|
||||
}
|
||||
};
|
||||
_plotModel.Axes.Add(xAxis);
|
||||
|
||||
// 配置左Y轴(实时压力)
|
||||
var yAxisLeft = new LinearAxis
|
||||
{
|
||||
Position = AxisPosition.Left,
|
||||
Title = "压力 (PSI)",
|
||||
TitleFontSize = 12,
|
||||
FontSize = 10,
|
||||
TitleColor = OxyColors.Blue,
|
||||
TextColor = OxyColors.Blue,
|
||||
MajorGridlineStyle = LineStyle.Solid,
|
||||
MajorGridlineColor = OxyColor.FromRgb(230, 230, 230),
|
||||
MinorGridlineStyle = LineStyle.Dot,
|
||||
MinorGridlineColor = OxyColor.FromRgb(240, 240, 240),
|
||||
StringFormat = "F2",
|
||||
Minimum = 0,
|
||||
Key = "LeftAxis"
|
||||
};
|
||||
_plotModel.Axes.Add(yAxisLeft);
|
||||
|
||||
// 配置X轴(时间轴)
|
||||
_chart.AxisX.Add(new Axis
|
||||
{
|
||||
Title = "时间",
|
||||
Labels = _timeLabels,
|
||||
FontSize = 12,
|
||||
Foreground = System.Windows.Media.Brushes.Black,
|
||||
Separator = new LiveCharts.Wpf.Separator
|
||||
{
|
||||
Step = 5,
|
||||
IsEnabled = true
|
||||
}
|
||||
});
|
||||
// 配置右Y轴(压力设定值)
|
||||
var yAxisRight = new LinearAxis
|
||||
{
|
||||
Position = AxisPosition.Right,
|
||||
Title = "压力设定值 (PSI)",
|
||||
TitleFontSize = 12,
|
||||
FontSize = 10,
|
||||
TitleColor = OxyColors.Red,
|
||||
TextColor = OxyColors.Red,
|
||||
MajorGridlineStyle = LineStyle.None,
|
||||
StringFormat = "F2",
|
||||
Minimum = 0,
|
||||
Key = "RightAxis"
|
||||
};
|
||||
_plotModel.Axes.Add(yAxisRight);
|
||||
|
||||
// 配置Y轴(压力)
|
||||
_chart.AxisY.Add(new Axis
|
||||
{
|
||||
Title = "压力 (MPa)",
|
||||
FontSize = 12,
|
||||
Foreground = System.Windows.Media.Brushes.Blue,
|
||||
LabelFormatter = value => value.ToString("F2"),
|
||||
MinValue = 0
|
||||
});
|
||||
// 添加实时压力曲线
|
||||
_pressureSeries = new LineSeries
|
||||
{
|
||||
Title = "实时压力",
|
||||
Color = OxyColors.Blue,
|
||||
StrokeThickness = 2,
|
||||
MarkerType = MarkerType.Circle,
|
||||
MarkerSize = 4,
|
||||
MarkerFill = OxyColors.Blue,
|
||||
YAxisKey = "LeftAxis"
|
||||
};
|
||||
_plotModel.Series.Add(_pressureSeries);
|
||||
|
||||
// 配置第二Y轴(压力设定值)
|
||||
_chart.AxisY.Add(new Axis
|
||||
{
|
||||
Title = "压力设定值 (MPa)",
|
||||
FontSize = 12,
|
||||
Foreground = System.Windows.Media.Brushes.Red,
|
||||
LabelFormatter = value => value.ToString("F2"),
|
||||
Position = AxisPosition.RightTop,
|
||||
MinValue = 0
|
||||
});
|
||||
// 添加压力设定值曲线
|
||||
_pressureSetSeries = new LineSeries
|
||||
{
|
||||
Title = "压力设定值",
|
||||
Color = OxyColors.Red,
|
||||
StrokeThickness = 2,
|
||||
MarkerType = MarkerType.Diamond,
|
||||
MarkerSize = 4,
|
||||
MarkerFill = OxyColors.Red,
|
||||
YAxisKey = "RightAxis"
|
||||
};
|
||||
_plotModel.Series.Add(_pressureSetSeries);
|
||||
|
||||
// 添加压力曲线
|
||||
_chart.Series.Add(new LineSeries
|
||||
{
|
||||
Title = "实时压力",
|
||||
Values = _pressureValues,
|
||||
Stroke = System.Windows.Media.Brushes.Blue,
|
||||
Fill = System.Windows.Media.Brushes.Transparent,
|
||||
PointGeometry = DefaultGeometries.Circle,
|
||||
PointGeometrySize = 5,
|
||||
StrokeThickness = 2,
|
||||
LineSmoothness = 0.3,
|
||||
ScalesYAt = 0
|
||||
});
|
||||
// 创建PlotView控件
|
||||
_plotView = new PlotView
|
||||
{
|
||||
Model = _plotModel,
|
||||
Dock = DockStyle.Fill,
|
||||
BackColor = System.Drawing.Color.White
|
||||
};
|
||||
|
||||
// 添加压力设定值曲线
|
||||
_chart.Series.Add(new LineSeries
|
||||
{
|
||||
Title = "压力设定值",
|
||||
Values = _temperatureValues,
|
||||
Stroke = System.Windows.Media.Brushes.Red,
|
||||
Fill = System.Windows.Media.Brushes.Transparent,
|
||||
PointGeometry = DefaultGeometries.Diamond,
|
||||
PointGeometrySize = 5,
|
||||
StrokeThickness = 2,
|
||||
LineSmoothness = 0.3,
|
||||
ScalesYAt = 1
|
||||
});
|
||||
|
||||
// 创建ElementHost以承载WPF控件
|
||||
_chartHost = new ElementHost
|
||||
{
|
||||
Dock = DockStyle.Fill,
|
||||
Child = _chart
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 添加到目标面板
|
||||
targetPanel.Controls.Add(_chartHost);
|
||||
}));
|
||||
// 添加到目标面板
|
||||
targetPanel.Controls.Add(_plotView);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加新的数据点
|
||||
/// </summary>
|
||||
/// <param name="pressure">实时压力值</param>
|
||||
/// <param name="temperature">压力设定值</param>
|
||||
/// <param name="time">时间标签(可选,默认使用当前时间)</param>
|
||||
public void AddDataPoint(double pressure, double temperature, string time = null)
|
||||
/// <param name="pressureSetValue">压力设定值(来自"压力设置(PSI)",地址2400)</param>
|
||||
/// <param name="totalSeconds">测试时间(总秒数)</param>
|
||||
public void AddDataPoint(double pressure, double pressureSetValue, int totalSeconds)
|
||||
{
|
||||
if (_pressureValues == null || _temperatureValues == null || _timeLabels == null)
|
||||
if (_pressureSeries == null || _pressureSetSeries == null || _plotModel == null)
|
||||
return;
|
||||
|
||||
// 使用当前时间作为默认标签
|
||||
if (string.IsNullOrEmpty(time))
|
||||
time = DateTime.Now.ToString("HH:mm:ss");
|
||||
|
||||
// 添加数据点
|
||||
_pressureValues.Add(pressure);
|
||||
_temperatureValues.Add(temperature);
|
||||
_timeLabels.Add(time);
|
||||
// 添加数据点(使用测试时间总秒数作为X轴值)
|
||||
_pressureData.Add(new DataPoint(totalSeconds, pressure));
|
||||
_pressureSetData.Add(new DataPoint(totalSeconds, pressureSetValue));
|
||||
|
||||
// 限制数据点数量,保持图表流畅
|
||||
if (_pressureValues.Count > MAX_DATA_POINTS)
|
||||
if (_pressureData.Count > MAX_DATA_POINTS)
|
||||
{
|
||||
_pressureValues.RemoveAt(0);
|
||||
_temperatureValues.RemoveAt(0);
|
||||
_timeLabels.RemoveAt(0);
|
||||
_pressureData.RemoveAt(0);
|
||||
_pressureSetData.RemoveAt(0);
|
||||
}
|
||||
|
||||
// 更新系列数据
|
||||
_pressureSeries.Points.Clear();
|
||||
_pressureSeries.Points.AddRange(_pressureData);
|
||||
|
||||
_pressureSetSeries.Points.Clear();
|
||||
_pressureSetSeries.Points.AddRange(_pressureSetData);
|
||||
|
||||
// 动态调整X轴范围
|
||||
if (_pressureData.Count > 0)
|
||||
{
|
||||
var xAxis = _plotModel.Axes.FirstOrDefault(a => a.Position == AxisPosition.Bottom);
|
||||
if (xAxis != null)
|
||||
{
|
||||
double minX = _pressureData.Min(p => p.X);
|
||||
double maxX = _pressureData.Max(p => p.X);
|
||||
xAxis.Minimum = minX;
|
||||
xAxis.Maximum = maxX + 5; // 留一点余量
|
||||
}
|
||||
}
|
||||
|
||||
// 刷新图表
|
||||
_plotModel.InvalidatePlot(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -166,9 +206,28 @@ namespace 全自动水压检测仪
|
||||
/// </summary>
|
||||
public void ClearData()
|
||||
{
|
||||
_pressureValues?.Clear();
|
||||
_temperatureValues?.Clear();
|
||||
_timeLabels?.Clear();
|
||||
_pressureData?.Clear();
|
||||
_pressureSetData?.Clear();
|
||||
|
||||
if (_pressureSeries != null)
|
||||
{
|
||||
_pressureSeries.Points.Clear();
|
||||
}
|
||||
|
||||
if (_pressureSetSeries != null)
|
||||
{
|
||||
_pressureSetSeries.Points.Clear();
|
||||
}
|
||||
|
||||
// 重置X轴范围
|
||||
var xAxis = _plotModel?.Axes.FirstOrDefault(a => a.Position == AxisPosition.Bottom);
|
||||
if (xAxis != null)
|
||||
{
|
||||
xAxis.Minimum = 0;
|
||||
xAxis.Maximum = 60;
|
||||
}
|
||||
|
||||
_plotModel?.InvalidatePlot(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -177,21 +236,26 @@ namespace 全自动水压检测仪
|
||||
/// <param name="isHighTemperatureMode">是否为高温模式</param>
|
||||
public void UpdateChartMode(bool isHighTemperatureMode)
|
||||
{
|
||||
if (_chart == null || _chart.Series.Count < 2)
|
||||
if (_plotModel == null || _plotModel.Series.Count < 2)
|
||||
return;
|
||||
|
||||
// 压力设定值曲线标题保持不变
|
||||
var pressureSetSeries = _chart.Series[1] as LineSeries;
|
||||
if (pressureSetSeries != null)
|
||||
if (_pressureSetSeries != null)
|
||||
{
|
||||
pressureSetSeries.Title = "压力设定值";
|
||||
_pressureSetSeries.Title = "压力设定值";
|
||||
}
|
||||
|
||||
// 可以根据模式调整Y轴范围(压力设定值范围)
|
||||
if (_chart.AxisY.Count > 1)
|
||||
foreach (var axis in _plotModel.Axes)
|
||||
{
|
||||
_chart.AxisY[1].MaxValue = 10; // 压力设定值通常不超过10MPa
|
||||
if (axis.Key == "RightAxis")
|
||||
{
|
||||
axis.Maximum = 10; // 压力设定值通常不超过10MPa
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
_plotModel.InvalidatePlot(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -199,11 +263,12 @@ namespace 全自动水压检测仪
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
_chartHost?.Dispose();
|
||||
_chart = null;
|
||||
_pressureValues = null;
|
||||
_temperatureValues = null;
|
||||
_timeLabels = null;
|
||||
_plotView?.Dispose();
|
||||
_plotModel = null;
|
||||
_pressureSeries = null;
|
||||
_pressureSetSeries = null;
|
||||
_pressureData = null;
|
||||
_pressureSetData = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -516,13 +516,13 @@ namespace 全自动水压检测仪
|
||||
var pressure = c.UshortToFloat(modbusData.Real1[1], modbusData.Real1[0]);
|
||||
var pressureSetValue = c.UshortToFloat(modbusData.Real12[1], modbusData.Real12[0]);
|
||||
|
||||
// 获取测试时间(从PLC读取的时分秒)
|
||||
// 获取测试时间(从PLC读取的时分秒)并计算总秒数
|
||||
int seconds = (modbusData.Real6 != null && modbusData.Real6.Length >= 1) ? modbusData.Real6[0] : 0;
|
||||
int minutes = (modbusData.Real7 != null && modbusData.Real7.Length >= 1) ? modbusData.Real7[0] : 0;
|
||||
int hours = (modbusData.Real8 != null && modbusData.Real8.Length >= 1) ? modbusData.Real8[0] : 0;
|
||||
string testTime = $"{hours:D2}:{minutes:D2}:{seconds:D2}";
|
||||
int totalSeconds = hours * 3600 + minutes * 60 + seconds;
|
||||
|
||||
_chartManager?.AddDataPoint(pressure, pressureSetValue, testTime);
|
||||
_chartManager?.AddDataPoint(pressure, pressureSetValue, totalSeconds);
|
||||
}
|
||||
catch (Exception chartEx)
|
||||
{
|
||||
|
||||
@@ -7,11 +7,14 @@
|
||||
<package id="K4os.Compression.LZ4" version="1.3.8" targetFramework="net472" />
|
||||
<package id="K4os.Compression.LZ4.Streams" version="1.3.8" targetFramework="net472" />
|
||||
<package id="K4os.Hash.xxHash" version="1.0.8" targetFramework="net472" />
|
||||
<package id="LiveCharts" version="0.9.7" targetFramework="net472" />
|
||||
<package id="LiveCharts.Wpf" version="0.9.7" targetFramework="net472" />
|
||||
<package id="OxyPlot.Core" version="2.2.0" targetFramework="net472" />
|
||||
<package id="OxyPlot.WindowsForms" version="2.2.0" targetFramework="net472" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="9.0.1" targetFramework="net472" />
|
||||
<package id="Microsoft.NETFramework.ReferenceAssemblies" version="1.0.2" targetFramework="net472" developmentDependency="true" />
|
||||
<package id="Microsoft.NETFramework.ReferenceAssemblies.net472" version="1.0.2" targetFramework="net472" developmentDependency="true" />
|
||||
<package id="MySql.Data" version="9.5.0" targetFramework="net472" />
|
||||
<package id="NModbus4" version="2.1.0" targetFramework="net472" />
|
||||
<package id="OxyPlot.Core" version="2.2.0" targetFramework="net472" />
|
||||
<package id="SunnyUI" version="3.9.1" targetFramework="net472" />
|
||||
<package id="SunnyUI.Common" version="3.9.1" targetFramework="net472" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
@@ -59,11 +61,15 @@
|
||||
<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="LiveCharts, Version=0.9.7.0, Culture=neutral, PublicKeyToken=0bc1f845d1ebb8df, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\LiveCharts.0.9.7\lib\net45\LiveCharts.dll</HintPath>
|
||||
<Reference Include="OxyPlot, Version=2.2.0.0, Culture=neutral, PublicKeyToken=638079a8f0bd61e9, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OxyPlot.Core.2.2.0\lib\net462\OxyPlot.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<SpecificVersion>True</SpecificVersion>
|
||||
</Reference>
|
||||
<Reference Include="LiveCharts.Wpf, Version=0.9.7.0, Culture=neutral, PublicKeyToken=0bc1f845d1ebb8df, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\LiveCharts.Wpf.0.9.7\lib\net45\LiveCharts.Wpf.dll</HintPath>
|
||||
<Reference Include="OxyPlot.WindowsForms, Version=2.2.0.0, Culture=neutral, PublicKeyToken=245eacd6b5d2d338, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OxyPlot.WindowsForms.2.2.0\lib\net462\OxyPlot.WindowsForms.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.9.0.1\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
@@ -74,8 +80,6 @@
|
||||
<Reference Include="NModbus4, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NModbus4.2.1.0\lib\net40\NModbus4.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="SunnyUI, Version=3.9.1.0, Culture=neutral, PublicKeyToken=3f4ebed4237db5e1, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SunnyUI.3.9.1\lib\net472\SunnyUI.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -121,9 +125,6 @@
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="WindowsFormsIntegration" />
|
||||
<Reference Include="ZstdSharp, Version=0.8.6.0, Culture=neutral, PublicKeyToken=8d151af33a4ad5cf, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ZstdSharp.Port.0.8.6\lib\net462\ZstdSharp.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -284,4 +285,11 @@
|
||||
<WCFMetadata Include="Connected Services\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="..\packages\Microsoft.NETFramework.ReferenceAssemblies.net472.1.0.2\build\Microsoft.NETFramework.ReferenceAssemblies.net472.targets" Condition="Exists('..\packages\Microsoft.NETFramework.ReferenceAssemblies.net472.1.0.2\build\Microsoft.NETFramework.ReferenceAssemblies.net472.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Microsoft.NETFramework.ReferenceAssemblies.net472.1.0.2\build\Microsoft.NETFramework.ReferenceAssemblies.net472.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.NETFramework.ReferenceAssemblies.net472.1.0.2\build\Microsoft.NETFramework.ReferenceAssemblies.net472.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user