diff --git a/Masuit.Tools.Abstractions/HtmlSanitizer/EventArgs.cs b/Masuit.Tools.Abstractions/HtmlSanitizer/EventArgs.cs index fc32a921..a36c7690 100644 --- a/Masuit.Tools.Abstractions/HtmlSanitizer/EventArgs.cs +++ b/Masuit.Tools.Abstractions/HtmlSanitizer/EventArgs.cs @@ -10,7 +10,10 @@ namespace Ganss.Xss /// /// Provides data for the event. /// - public class PostProcessDomEventArgs : EventArgs + /// + /// Initializes a new instance of the class. + /// + public class PostProcessDomEventArgs(IHtmlDocument document) : EventArgs { /// /// Gets the document. @@ -18,21 +21,16 @@ public class PostProcessDomEventArgs : EventArgs /// /// The document. /// - public IHtmlDocument Document { get; private set; } - - /// - /// Initializes a new instance of the class. - /// - public PostProcessDomEventArgs(IHtmlDocument document) - { - Document = document; - } + public IHtmlDocument Document { get; private set; } = document; } /// /// Provides data for the event. /// - public class PostProcessNodeEventArgs : EventArgs + /// + /// Initializes a new instance of the class. + /// + public class PostProcessNodeEventArgs(IHtmlDocument document, INode node) : EventArgs { /// /// Gets the document. @@ -40,7 +38,7 @@ public class PostProcessNodeEventArgs : EventArgs /// /// The document. /// - public IHtmlDocument Document { get; private set; } + public IHtmlDocument Document { get; private set; } = document; /// /// Gets the DOM node to be processed. @@ -48,7 +46,7 @@ public class PostProcessNodeEventArgs : EventArgs /// /// The DOM node. /// - public INode Node { get; private set; } + public INode Node { get; private set; } = node; /// /// Gets the replacement nodes. Leave empty if no replacement should occur. @@ -56,23 +54,18 @@ public class PostProcessNodeEventArgs : EventArgs /// /// The replacement nodes. /// - public ICollection ReplacementNodes { get; private set; } - - /// - /// Initializes a new instance of the class. - /// - public PostProcessNodeEventArgs(IHtmlDocument document, INode node) - { - Document = document; - Node = node; - ReplacementNodes = new List(); - } + public ICollection ReplacementNodes { get; private set; } = new List(); } /// /// Provides data for the event. /// - public class RemovingTagEventArgs : CancelEventArgs + /// + /// Initializes a new instance of the class. + /// + /// The element to be removed. + /// The reason why the tag will be removed. + public class RemovingTagEventArgs(IElement tag, RemoveReason reason) : CancelEventArgs { /// /// Gets the tag to be removed. @@ -80,7 +73,7 @@ public class RemovingTagEventArgs : CancelEventArgs /// /// The tag. /// - public IElement Tag { get; private set; } + public IElement Tag { get; private set; } = tag; /// /// Gets the reason why the tag will be removed. @@ -88,24 +81,19 @@ public class RemovingTagEventArgs : CancelEventArgs /// /// The reason. /// - public RemoveReason Reason { get; private set; } - - /// - /// Initializes a new instance of the class. - /// - /// The element to be removed. - /// The reason why the tag will be removed. - public RemovingTagEventArgs(IElement tag, RemoveReason reason) - { - Tag = tag; - Reason = reason; - } + public RemoveReason Reason { get; private set; } = reason; } /// /// Provides data for the event. /// - public class RemovingAttributeEventArgs : CancelEventArgs + /// + /// Initializes a new instance of the class. + /// + /// The element containing the attribute. + /// The attribute to be removed. + /// The reason why the attribute will be removed. + public class RemovingAttributeEventArgs(IElement tag, IAttr attribute, RemoveReason reason) : CancelEventArgs { /// /// Gets the tag containing the attribute to be removed. @@ -113,7 +101,7 @@ public class RemovingAttributeEventArgs : CancelEventArgs /// /// The tag. /// - public IElement Tag { get; private set; } + public IElement Tag { get; private set; } = tag; /// /// Gets the attribute to be removed. @@ -121,7 +109,7 @@ public class RemovingAttributeEventArgs : CancelEventArgs /// /// The attribute. /// - public IAttr Attribute { get; private set; } + public IAttr Attribute { get; private set; } = attribute; /// /// Gets the reason why the attribute will be removed. @@ -129,26 +117,19 @@ public class RemovingAttributeEventArgs : CancelEventArgs /// /// The reason. /// - public RemoveReason Reason { get; private set; } - - /// - /// Initializes a new instance of the class. - /// - /// The element containing the attribute. - /// The attribute to be removed. - /// The reason why the attribute will be removed. - public RemovingAttributeEventArgs(IElement tag, IAttr attribute, RemoveReason reason) - { - Tag = tag; - Attribute = attribute; - Reason = reason; - } + public RemoveReason Reason { get; private set; } = reason; } /// /// Provides data for the event. /// - public class RemovingStyleEventArgs : CancelEventArgs + /// + /// Initializes a new instance of the class. + /// + /// The element containing the attribute. + /// The style to be removed. + /// The reason why the attribute will be removed. + public class RemovingStyleEventArgs(IElement tag, ICssProperty style, RemoveReason reason) : CancelEventArgs { /// /// Gets the tag containing the style to be removed. @@ -156,7 +137,7 @@ public class RemovingStyleEventArgs : CancelEventArgs /// /// The tag. /// - public IElement Tag { get; private set; } + public IElement Tag { get; private set; } = tag; /// /// Gets the style to be removed. @@ -164,7 +145,7 @@ public class RemovingStyleEventArgs : CancelEventArgs /// /// The style. /// - public ICssProperty Style { get; private set; } + public ICssProperty Style { get; private set; } = style; /// /// Gets the reason why the style will be removed. @@ -172,26 +153,18 @@ public class RemovingStyleEventArgs : CancelEventArgs /// /// The reason. /// - public RemoveReason Reason { get; private set; } - - /// - /// Initializes a new instance of the class. - /// - /// The element containing the attribute. - /// The style to be removed. - /// The reason why the attribute will be removed. - public RemovingStyleEventArgs(IElement tag, ICssProperty style, RemoveReason reason) - { - Tag = tag; - Style = style; - Reason = reason; - } + public RemoveReason Reason { get; private set; } = reason; } /// /// Provides data for the event. /// - public class RemovingAtRuleEventArgs : CancelEventArgs + /// + /// Initializes a new instance of the class. + /// + /// The element containing the attribute. + /// The rule to be removed. + public class RemovingAtRuleEventArgs(IElement tag, ICssRule rule) : CancelEventArgs { /// /// Gets the tag containing the at-rule to be removed. @@ -199,7 +172,7 @@ public class RemovingAtRuleEventArgs : CancelEventArgs /// /// The tag. /// - public IElement Tag { get; private set; } + public IElement Tag { get; private set; } = tag; /// /// Gets the rule to be removed. @@ -207,24 +180,17 @@ public class RemovingAtRuleEventArgs : CancelEventArgs /// /// The rule. /// - public ICssRule Rule { get; private set; } - - /// - /// Initializes a new instance of the class. - /// - /// The element containing the attribute. - /// The rule to be removed. - public RemovingAtRuleEventArgs(IElement tag, ICssRule rule) - { - Tag = tag; - Rule = rule; - } + public ICssRule Rule { get; private set; } = rule; } /// /// Provides data for the event. /// - public class RemovingCommentEventArgs : CancelEventArgs + /// + /// Initializes a new instance of the class. + /// + /// The comment to be removed. + public class RemovingCommentEventArgs(IComment comment) : CancelEventArgs { /// /// Gets the comment node to be removed. @@ -232,22 +198,19 @@ public class RemovingCommentEventArgs : CancelEventArgs /// /// The comment node. /// - public IComment Comment { get; private set; } - - /// - /// Initializes a new instance of the class. - /// - /// The comment to be removed. - public RemovingCommentEventArgs(IComment comment) - { - Comment = comment; - } + public IComment Comment { get; private set; } = comment; } /// /// Provides data for the event. /// - public class RemovingCssClassEventArgs : CancelEventArgs + /// + /// Initializes a new instance of the class. + /// + /// The element containing the attribute. + /// The CSS class to be removed. + /// The reason why the attribute will be removed. + public class RemovingCssClassEventArgs(IElement tag, string cssClass, RemoveReason reason) : CancelEventArgs { /// /// Gets the tag containing the CSS class to be removed. @@ -255,7 +218,7 @@ public class RemovingCssClassEventArgs : CancelEventArgs /// /// The tag. /// - public IElement Tag { get; private set; } + public IElement Tag { get; private set; } = tag; /// /// Gets the CSS class to be removed. @@ -263,7 +226,7 @@ public class RemovingCssClassEventArgs : CancelEventArgs /// /// The CSS class. /// - public string CssClass { get; private set; } + public string CssClass { get; private set; } = cssClass; /// /// Gets the reason why the CSS class will be removed. @@ -271,26 +234,19 @@ public class RemovingCssClassEventArgs : CancelEventArgs /// /// The reason. /// - public RemoveReason Reason { get; private set; } - - /// - /// Initializes a new instance of the class. - /// - /// The element containing the attribute. - /// The CSS class to be removed. - /// The reason why the attribute will be removed. - public RemovingCssClassEventArgs(IElement tag, string cssClass, RemoveReason reason) - { - Tag = tag; - CssClass = cssClass; - Reason = reason; - } + public RemoveReason Reason { get; private set; } = reason; } /// /// Provides data for the event. /// - public class FilterUrlEventArgs: EventArgs + /// + /// Initializes a new instance of the class. + /// + /// The tag containing the URI being sanitized. + /// The original URL. + /// The sanitized URL. + public class FilterUrlEventArgs(IElement tag, string originalUrl, string? sanitizedUrl = null) : EventArgs { /// /// Gets the original URL. @@ -298,7 +254,7 @@ public class FilterUrlEventArgs: EventArgs /// /// The original URL. /// - public string OriginalUrl { get; private set; } + public string OriginalUrl { get; private set; } = originalUrl; /// /// Gets or sets the sanitized URL. @@ -306,7 +262,7 @@ public class FilterUrlEventArgs: EventArgs /// /// The sanitized URL. If it is null, it will be removed. /// - public string? SanitizedUrl { get; set; } + public string? SanitizedUrl { get; set; } = sanitizedUrl; /// /// Gets the tag containing the URI being sanitized. @@ -314,19 +270,6 @@ public class FilterUrlEventArgs: EventArgs /// /// The tag. /// - public IElement Tag { get; private set; } - - /// - /// Initializes a new instance of the class. - /// - /// The tag containing the URI being sanitized. - /// The original URL. - /// The sanitized URL. - public FilterUrlEventArgs(IElement tag, string originalUrl, string? sanitizedUrl = null) - { - OriginalUrl = originalUrl; - SanitizedUrl = sanitizedUrl; - Tag = tag; - } + public IElement Tag { get; private set; } = tag; } } diff --git a/Masuit.Tools.Abstractions/HtmlSanitizer/HtmlSanitizer.cs b/Masuit.Tools.Abstractions/HtmlSanitizer/HtmlSanitizer.cs index ffe0758a..bb7443e4 100644 --- a/Masuit.Tools.Abstractions/HtmlSanitizer/HtmlSanitizer.cs +++ b/Masuit.Tools.Abstractions/HtmlSanitizer/HtmlSanitizer.cs @@ -52,6 +52,8 @@ namespace Ganss.Xss /// public class HtmlSanitizer : IHtmlSanitizer { + private const string StyleAttributeName = "style"; + // from http://genshi.edgewall.org/ private static readonly Regex CssUnicodeEscapes = new(@"\\([0-9a-fA-F]{1,6})\s?|\\([^\r\n\f0-9a-fA-F'""{};:()#*])", RegexOptions.Compiled); private static readonly Regex CssComments = new(@"/\*.*?\*/", RegexOptions.Compiled); @@ -529,7 +531,7 @@ private void DoSanitize(IHtmlDocument dom, IParentNode context, string baseUrl = } // sanitize the style attribute - var oldStyleEmpty = string.IsNullOrEmpty(tag.GetAttribute("style")); + var oldStyleEmpty = string.IsNullOrEmpty(tag.GetAttribute(StyleAttributeName)); SanitizeStyle(tag, baseUrl); // sanitize the value of the attributes @@ -553,7 +555,7 @@ private void DoSanitize(IHtmlDocument dom, IParentNode context, string baseUrl = if (!tag.ClassList.Any()) RemoveAttribute(tag, attribute, RemoveReason.ClassAttributeEmpty); } - else if (!oldStyleEmpty && attribute.Name == "style" && string.IsNullOrEmpty(attribute.Value)) + else if (!oldStyleEmpty && attribute.Name == StyleAttributeName && string.IsNullOrEmpty(attribute.Value)) { RemoveAttribute(tag, attribute, RemoveReason.StyleAttributeEmpty); } @@ -574,8 +576,9 @@ private void SanitizeStyleSheets(IHtmlDocument dom, string baseUrl) foreach (var styleSheet in dom.StyleSheets.OfType()) { var styleTag = styleSheet.OwnerNode; + var i = 0; - for (int i = 0; i < styleSheet.Rules.Length;) + while (i < styleSheet.Rules.Length) { var rule = styleSheet.Rules[i]; if (!SanitizeStyleRule(rule, styleTag, baseUrl) && RemoveAtRule(styleTag, rule)) @@ -599,7 +602,9 @@ private bool SanitizeStyleRule(ICssRule rule, IElement styleTag, string baseUrl) { if (rule is ICssGroupingRule groupingRule) { - for (int i = 0; i < groupingRule.Rules.Length;) + var i = 0; + + while (i < groupingRule.Rules.Length) { var childRule = groupingRule.Rules[i]; if (!SanitizeStyleRule(childRule, styleTag, baseUrl) && RemoveAtRule(styleTag, childRule)) @@ -702,17 +707,17 @@ protected void SanitizeStyle(IElement element, string baseUrl) { // filter out invalid CSS declarations // see https://github.com/AngleSharp/AngleSharp/issues/101 - var attribute = element.GetAttribute("style"); + var attribute = element.GetAttribute(StyleAttributeName); if (attribute == null) return; if (element.GetStyle() == null) { - element.RemoveAttribute("style"); + element.RemoveAttribute(StyleAttributeName); return; } - element.SetAttribute("style", element.GetStyle().ToCss(StyleFormatter)); + element.SetAttribute(StyleAttributeName, element.GetStyle().ToCss(StyleFormatter)); var styles = element.GetStyle(); if (styles == null || styles.Length == 0) @@ -853,7 +858,12 @@ protected static string DecodeCss(string css) { try { - return new Uri(baseUri, iri.Value).AbsoluteUri; + var sanitizedUrl = new Uri(baseUri, iri.Value).AbsoluteUri; + var ev = new FilterUrlEventArgs(element, url, sanitizedUrl); + + OnFilteringUrl(ev); + + return ev.SanitizedUrl; } catch (UriFormatException) { diff --git a/Masuit.Tools.Abstractions/HtmlSanitizer/Iri.cs b/Masuit.Tools.Abstractions/HtmlSanitizer/Iri.cs index 182ac68d..a77ca1b2 100644 --- a/Masuit.Tools.Abstractions/HtmlSanitizer/Iri.cs +++ b/Masuit.Tools.Abstractions/HtmlSanitizer/Iri.cs @@ -8,7 +8,12 @@ namespace Ganss.Xss /// /// Represents an Internationalized Resource Identifier. /// - public class Iri + /// + /// Initializes a new instance of the class. + /// + /// The value. + /// The scheme. + public class Iri(string value, string? scheme = null) { /// /// Gets or sets the value of the IRI. @@ -16,7 +21,7 @@ public class Iri /// /// The value of the IRI. /// - public string Value { get; private set; } + public string Value { get; private set; } = value; /// /// Gets a value indicating whether the IRI is absolute. @@ -32,17 +37,6 @@ public class Iri /// /// The scheme of the IRI. /// - public string? Scheme { get; private set; } - - /// - /// Initializes a new instance of the class. - /// - /// The value. - /// The scheme. - public Iri(string value, string? scheme = null) - { - Value = value; - Scheme = scheme; - } + public string? Scheme { get; private set; } = scheme; } } diff --git a/Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj b/Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj index fd7b5a32..7751a71c 100644 --- a/Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj +++ b/Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj @@ -3,7 +3,7 @@ netstandard2.0;netstandard2.1;net461;net5;net6;net7;net8 latest true - 2024.1 + 2024.2 懒得勤快 全龄段友好的C#万能工具库,码数吐司库,不管你是菜鸟新手还是骨灰级玩家都能轻松上手,Masuit.Tools基础公共库(适用于.NET4.6.1/.NET Standard2.0及以上项目),包含一些常用的操作类,大都是静态类,加密解密,反射操作,Excel简单导出,权重随机筛选算法,分布式短id,表达式树,linq扩展,文件压缩,多线程下载和FTP客户端,硬件信息,字符串扩展方法,日期时间扩展操作,中国农历,大文件拷贝,图像裁剪,验证码,断点续传,集合扩展等常用封装。 官网教程:https://masuit.tools @@ -58,7 +58,7 @@ - + diff --git a/Masuit.Tools.Abstractions/Media/ImageUtilities.cs b/Masuit.Tools.Abstractions/Media/ImageUtilities.cs index 90aa2d51..8edb1459 100644 --- a/Masuit.Tools.Abstractions/Media/ImageUtilities.cs +++ b/Masuit.Tools.Abstractions/Media/ImageUtilities.cs @@ -73,12 +73,12 @@ public static Image CutAndResize(this Image bmpp, Rectangle rec, int newWidth, i /// 生成缩略图的方式 public static void MakeThumbnail(this Image originalImage, string thumbnailPath, int width, int height, ResizeMode mode) { - originalImage.Mutate(c => c.Resize(new ResizeOptions() + using var image = originalImage.Clone(c => c.Resize(new ResizeOptions() { Size = new Size(width, height), Mode = mode })); - originalImage.Save(thumbnailPath); + image.Save(thumbnailPath); } /// @@ -90,12 +90,11 @@ public static void MakeThumbnail(this Image originalImage, string thumbnailPath, /// 生成缩略图的方式 public static Image MakeThumbnail(this Image originalImage, int width, int height, ResizeMode mode) { - originalImage.Mutate(c => c.Resize(new ResizeOptions() + return originalImage.Clone(c => c.Resize(new ResizeOptions() { Size = new Size(width, height), Mode = mode })); - return originalImage; } #endregion 缩略图 @@ -341,4 +340,4 @@ public static Image SaveDataUriAsImageFile(this string source) return Image.Load(ms); } } -} +} \ No newline at end of file diff --git a/Masuit.Tools.Abstractions/Models/TreeExtensions.cs b/Masuit.Tools.Abstractions/Models/TreeExtensions.cs index c5ad1686..c6703f0c 100644 --- a/Masuit.Tools.Abstractions/Models/TreeExtensions.cs +++ b/Masuit.Tools.Abstractions/Models/TreeExtensions.cs @@ -574,10 +574,11 @@ private static void TransData(IEnumerable source, Tree parent, Fu /// 递归取出所有下级 /// /// + /// /// private static List GetChildren(T t, Func> selector) { - return selector(t).Union(selector(t).Where(c => selector(c).Any()).SelectMany(c => GetChildren(c, selector))).ToList(); + return selector(t).Union(selector(t).Where(c => selector(c)?.Any() == true).SelectMany(c => GetChildren(c, selector))).ToList(); } /// @@ -652,4 +653,4 @@ public static List ToTree(this IEnumerable source) where T : ITreeEntit return temp; } } -} +} \ No newline at end of file diff --git a/Masuit.Tools.AspNetCore/Masuit.Tools.AspNetCore.csproj b/Masuit.Tools.AspNetCore/Masuit.Tools.AspNetCore.csproj index 7cadbd8a..21b0f55f 100644 --- a/Masuit.Tools.AspNetCore/Masuit.Tools.AspNetCore.csproj +++ b/Masuit.Tools.AspNetCore/Masuit.Tools.AspNetCore.csproj @@ -18,7 +18,7 @@ Masuit.Tools.AspNetCore Masuit.Tools.AspNetCore latest - 2024.1 + 2024.2 True 1.1.9 @@ -46,7 +46,7 @@ - + diff --git a/Masuit.Tools.Core/Masuit.Tools.Core.csproj b/Masuit.Tools.Core/Masuit.Tools.Core.csproj index 38233909..d608fcb3 100644 --- a/Masuit.Tools.Core/Masuit.Tools.Core.csproj +++ b/Masuit.Tools.Core/Masuit.Tools.Core.csproj @@ -6,7 +6,7 @@ 官网教程:https://tools.masuit.org github:https://github.com/ldqk/Masuit.Tools - 2024.1 + 2024.2 Copyright © 懒得勤快 https://github.com/ldqk/Masuit.Tools Masuit.Tools,工具库,Utility,Crypt,Extensions diff --git a/Masuit.Tools.Excel/Masuit.Tools.Excel.csproj b/Masuit.Tools.Excel/Masuit.Tools.Excel.csproj index 2800d229..3660eb3b 100644 --- a/Masuit.Tools.Excel/Masuit.Tools.Excel.csproj +++ b/Masuit.Tools.Excel/Masuit.Tools.Excel.csproj @@ -3,7 +3,7 @@ netstandard2.0 latest true - 2024.1 + 2024.2 懒得勤快 Masuit.Tools.Excel导出库,支持一些简单数据的导出,支持图片列 懒得勤快 @@ -38,7 +38,7 @@ - + diff --git a/Masuit.Tools.Net45/package.nuspec b/Masuit.Tools.Net45/package.nuspec index ad6df404..3ca9f1cc 100644 --- a/Masuit.Tools.Net45/package.nuspec +++ b/Masuit.Tools.Net45/package.nuspec @@ -1,8 +1,8 @@ - + Masuit.Tools.Net45 - 2024.1 + 2024.2 Masuit.Tools 懒得勤快 masuit.com diff --git a/Masuit.Tools.NoSQL.MongoDBClient/Masuit.Tools.NoSQL.MongoDBClient.csproj b/Masuit.Tools.NoSQL.MongoDBClient/Masuit.Tools.NoSQL.MongoDBClient.csproj index fe1b72fa..ba3b7d28 100644 --- a/Masuit.Tools.NoSQL.MongoDBClient/Masuit.Tools.NoSQL.MongoDBClient.csproj +++ b/Masuit.Tools.NoSQL.MongoDBClient/Masuit.Tools.NoSQL.MongoDBClient.csproj @@ -38,7 +38,7 @@ - + diff --git a/Masuit.Tools/Masuit.Tools.csproj b/Masuit.Tools/Masuit.Tools.csproj index 5dc1e467..137003c7 100644 --- a/Masuit.Tools/Masuit.Tools.csproj +++ b/Masuit.Tools/Masuit.Tools.csproj @@ -209,7 +209,7 @@ 1.7.0 - 8.0.843 + 8.0.865 5.3.0 @@ -218,7 +218,7 @@ 13.0.3 - 0.36.0 + 0.37.2 1.0.0 diff --git a/Masuit.Tools/package.nuspec b/Masuit.Tools/package.nuspec index 102bf734..93fa5cce 100644 --- a/Masuit.Tools/package.nuspec +++ b/Masuit.Tools/package.nuspec @@ -1,8 +1,8 @@ - + Masuit.Tools.Net - 2024.1 + 2024.2 Masuit.Tools 懒得勤快 masuit.com diff --git a/Test/Masuit.Tools.Abstractions.Test/Masuit.Tools.Abstractions.Test.csproj b/Test/Masuit.Tools.Abstractions.Test/Masuit.Tools.Abstractions.Test.csproj index 02ac92a8..5a292d1f 100644 --- a/Test/Masuit.Tools.Abstractions.Test/Masuit.Tools.Abstractions.Test.csproj +++ b/Test/Masuit.Tools.Abstractions.Test/Masuit.Tools.Abstractions.Test.csproj @@ -14,8 +14,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Test/Masuit.Tools.Core.Test/Masuit.Tools.Core.Test.csproj b/Test/Masuit.Tools.Core.Test/Masuit.Tools.Core.Test.csproj index e0fc00f9..e28e4dc7 100644 --- a/Test/Masuit.Tools.Core.Test/Masuit.Tools.Core.Test.csproj +++ b/Test/Masuit.Tools.Core.Test/Masuit.Tools.Core.Test.csproj @@ -12,8 +12,8 @@ - - + + all runtime; build; native; contentfiles; analyzers diff --git a/Test/Masuit.Tools.Test/Masuit.Tools.Test.csproj b/Test/Masuit.Tools.Test/Masuit.Tools.Test.csproj index 952ce03a..a4ad33c0 100644 --- a/Test/Masuit.Tools.Test/Masuit.Tools.Test.csproj +++ b/Test/Masuit.Tools.Test/Masuit.Tools.Test.csproj @@ -107,25 +107,25 @@ 4.5.0 - 2.7.1 + 2.8.0 2.0.3 - 1.12.0 + 1.13.0 - 2.7.1 + 2.8.0 - 2.7.1 + 2.8.0 - 2.7.1 + 2.8.0 - 2.7.1 + 2.8.0