Releases: smdn/Smdn.Fundamentals
Smdn.MSBuild.ProjectAssets.Library version 1.4.8
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-04-16 update package version
- 2023-04-16 relax OrderingRules SA1203 to Info
Full changes
Full changes in this release:
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj b/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
index f679a4fe..de46c915 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
@@ -6,7 +6,7 @@ SPDX-License-Identifier: MIT
<Import Project="$(MSBuildThisFileDirectory)..\..\eng\ProjectSettings.NoAssembliesNoBuild.props" />
<PropertyGroup>
- <VersionPrefix>1.4.7</VersionPrefix>
+ <VersionPrefix>1.4.8</VersionPrefix>
<VersionSuffix></VersionSuffix>
<DevelopmentDependency>true</DevelopmentDependency>
</PropertyGroup>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/StyleCop.Analyzers.ruleset b/src/Smdn.MSBuild.ProjectAssets.Library/project/StyleCop.Analyzers.ruleset
index ee7354f4..6f4132c5 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/StyleCop.Analyzers.ruleset
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/StyleCop.Analyzers.ruleset
@@ -85,7 +85,7 @@
<Rule Id="SA1200" Action="None" /> <!-- Using directives should be placed correctly -->
<Rule Id="SA1201" Action="None" /> <!-- Elements should appear in the correct order -->
<Rule Id="SA1202" Action="None" /> <!-- Elements should be ordered by access -->
- <Rule Id="SA1203" Action="Warning" /> <!-- Constants should appear before fields -->
+ <Rule Id="SA1203" Action="Info" /> <!-- Constants should appear before fields -->
<Rule Id="SA1204" Action="None" /> <!-- Static elements should appear before instance elements -->
<Rule Id="SA1205" Action="None" /> <!-- Partial elements should declare access -->
<Rule Id="SA1206" Action="Warning" /> <!-- Declaration keywords should follow order -->
Notes
Full Changelog: releases/Smdn.MSBuild.ProjectAssets.Library-1.4.7...releases/Smdn.MSBuild.ProjectAssets.Library-1.4.8
Smdn.MSBuild.DefineConstants.NETSdkApi version 1.3.11
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-04-15 update package version
- 2023-04-15 add entries not yet enabled, for .NET 8
- 2023-04-15 add and fix etries
Notes
Full Changelog: releases/Smdn.MSBuild.DefineConstants.NETSdkApi-1.3.10...releases/Smdn.MSBuild.DefineConstants.NETSdkApi-1.3.11
Smdn.Fundamental.PortNumber version 3.0.0
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-04-01 add Smdn.Fundamental.PortNumber
API changes
API changes in this release:
diff --git a/doc/api-list/Smdn.Fundamental.PortNumber/Smdn.Fundamental.PortNumber-net45.apilist.cs b/doc/api-list/Smdn.Fundamental.PortNumber/Smdn.Fundamental.PortNumber-net45.apilist.cs
new file mode 100644
index 00000000..1d0f62f5
--- /dev/null
+++ b/doc/api-list/Smdn.Fundamental.PortNumber/Smdn.Fundamental.PortNumber-net45.apilist.cs
@@ -0,0 +1,35 @@
+// Smdn.Fundamental.PortNumber.dll (Smdn.Fundamental.PortNumber-3.0.0)
+// Name: Smdn.Fundamental.PortNumber
+// AssemblyVersion: 3.0.0.0
+// InformationalVersion: 3.0.0+6f2d0f65a01b169e05b6e4adc7526ce8bbb67e78
+// TargetFramework: .NETFramework,Version=v4.5
+// Configuration: Release
+// Referenced assemblies:
+// System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+// System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+// mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+#nullable enable annotations
+
+using System;
+using System.Collections.Generic;
+
+namespace Smdn.Net {
+ public static class PortNumberUtils {
+ public const int MaxIanaDynamicPort = 65535;
+ public const int MaxIanaSystemPort = 1023;
+ public const int MaxIanaUserPort = 49151;
+ public const int MinIanaDynamicPort = 49152;
+ public const int MinIanaSystemPort = 0;
+ public const int MinIanaUserPort = 1024;
+
+ public static TService CreateServiceWithAvailablePort<TService>(Func<int, TService> createService, Predicate<Exception> isPortInUseException) {}
+ public static TService CreateServiceWithAvailablePort<TService>(Func<int, TService> createService, Predicate<int>? exceptPort, Predicate<Exception> isPortInUseException) {}
+ public static TService CreateServiceWithAvailablePort<TService>(Func<int, TService> createService, int exceptPort, Predicate<Exception> isPortInUseException) {}
+ public static IEnumerable<int> EnumerateIanaDynamicPorts() {}
+ public static IEnumerable<int> EnumerateIanaDynamicPorts(Predicate<int>? exceptPort) {}
+ public static bool TryFindAvailablePort(Predicate<int>? exceptPort, out int port) {}
+ public static bool TryFindAvailablePort(out int port) {}
+ }
+}
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.2.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.2.0.0 (/~https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Fundamental.PortNumber/Smdn.Fundamental.PortNumber-net472.apilist.cs b/doc/api-list/Smdn.Fundamental.PortNumber/Smdn.Fundamental.PortNumber-net472.apilist.cs
new file mode 100644
index 00000000..6dbeff66
--- /dev/null
+++ b/doc/api-list/Smdn.Fundamental.PortNumber/Smdn.Fundamental.PortNumber-net472.apilist.cs
@@ -0,0 +1,35 @@
+// Smdn.Fundamental.PortNumber.dll (Smdn.Fundamental.PortNumber-3.0.0)
+// Name: Smdn.Fundamental.PortNumber
+// AssemblyVersion: 3.0.0.0
+// InformationalVersion: 3.0.0+6f2d0f65a01b169e05b6e4adc7526ce8bbb67e78
+// TargetFramework: .NETFramework,Version=v4.7.2
+// Configuration: Release
+// Referenced assemblies:
+// System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+// System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+// mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+#nullable enable annotations
+
+using System;
+using System.Collections.Generic;
+
+namespace Smdn.Net {
+ public static class PortNumberUtils {
+ public const int MaxIanaDynamicPort = 65535;
+ public const int MaxIanaSystemPort = 1023;
+ public const int MaxIanaUserPort = 49151;
+ public const int MinIanaDynamicPort = 49152;
+ public const int MinIanaSystemPort = 0;
+ public const int MinIanaUserPort = 1024;
+
+ public static TService CreateServiceWithAvailablePort<TService>(Func<int, TService> createService, Predicate<Exception> isPortInUseException) {}
+ public static TService CreateServiceWithAvailablePort<TService>(Func<int, TService> createService, Predicate<int>? exceptPort, Predicate<Exception> isPortInUseException) {}
+ public static TService CreateServiceWithAvailablePort<TService>(Func<int, TService> createService, int exceptPort, Predicate<Exception> isPortInUseException) {}
+ public static IEnumerable<int> EnumerateIanaDynamicPorts() {}
+ public static IEnumerable<int> EnumerateIanaDynamicPorts(Predicate<int>? exceptPort) {}
+ public static bool TryFindAvailablePort(Predicate<int>? exceptPort, out int port) {}
+ public static bool TryFindAvailablePort(out int port) {}
+ }
+}
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.2.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.2.0.0 (/~https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Fundamental.PortNumber/Smdn.Fundamental.PortNumber-net6.0.apilist.cs b/doc/api-list/Smdn.Fundamental.PortNumber/Smdn.Fundamental.PortNumber-net6.0.apilist.cs
new file mode 100644
index 00000000..6326ecc4
--- /dev/null
+++ b/doc/api-list/Smdn.Fundamental.PortNumber/Smdn.Fundamental.PortNumber-net6.0.apilist.cs
@@ -0,0 +1,37 @@
+// Smdn.Fundamental.PortNumber.dll (Smdn.Fundamental.PortNumber-3.0.0)
+// Name: Smdn.Fundamental.PortNumber
+// AssemblyVersion: 3.0.0.0
+// InformationalVersion: 3.0.0+6f2d0f65a01b169e05b6e4adc7526ce8bbb67e78
+// TargetFramework: .NETCoreApp,Version=v6.0
+// Configuration: Release
+// Referenced assemblies:
+// System.Collections, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+// System.Linq, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+// System.Net.NetworkInformation, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+// System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+// System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
+
+using System;
+using System.Collections.Generic;
+
+namespace Smdn.Net {
+ public static class PortNumberUtils {
+ public const int MaxIanaDynamicPort = 65535;
+ public const int MaxIanaSystemPort = 1023;
+ public const int MaxIanaUserPort = 49151;
+ public const int MinIanaDynamicPort = 49152;
+ public const int MinIanaSystemPort = 0;
+ public const int MinIanaUserPort = 1024;
+
+ public static TService CreateServiceWithAvailablePort<TService>(Func<int, TService> createService, Predicate<Exception> isPortInUseException) {}
+ public static TService CreateServiceWithAvailablePort<TService>(Func<int, TService> createService, Predicate<int>? exceptPort, Predicate<Exception> isPortInUseException) {}
+ public static TService CreateServiceWithAvailablePort<TService>(Func<int, TService> createService, int exceptPort, Predicate<Exception> isPortInUseException) {}
+ public static IEnumerable<int> EnumerateIanaDynamicPorts() {}
+ public static IEnumerable<int> EnumerateIanaDynamicPorts(Predicate<int>? exceptPort) {}
+ public static bool TryFindAvailablePort(Predicate<int>? exceptPort, out int port) {}
+ public static bool TryFindAvailablePort(out int port) {}
+ }
+}
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.2.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.2.0.0 (/~https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Fundamental.PortNumber/Smdn.Fundamental.PortNumber-netstandard2.0.apilist.cs b/doc/api-list/Smdn.Fundamental.PortNumber/Smdn.Fundamental.PortNumber-netstandard2.0.apilist.cs
new file mode 100644
index 00000000..2b3be9ea
--- /dev/null
+++ b/doc/api-list/Smdn.Fundamental.PortNumber/Smdn.Fundamental.PortNumber-netstandard2.0.apilist.cs
@@ -0,0 +1,33 @@
+// Smdn.Fundamental.PortNumber.dll (Smdn.Fundamental.PortNumber-3.0.0)
+// Name: Smdn.Fundamental.PortNumber
+// AssemblyVersion: 3.0.0.0
+// InformationalVersion: 3.0.0+6f2d0f65a01b169e05b6e4adc7526ce8bbb67e78
+// TargetFramework: .NETStandard,Version=v2.0
+// Configuration: Release
+// Referenced assemblies:
+// netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
+#nullable enable annotations
+
+using System;
+using System.Collections.Generic;
+
+namespace Smdn.Net {
+ public static class PortNumberUtils {
+ public const int MaxIanaDynamicPort = 65535;
+ public const int MaxIanaSystemPort = 1023;
+ public const int MaxIanaUserPort = 49151;
+ public const int MinIanaDynamicPort = 49152;
+ public const int MinIanaSystemPort = 0;
+ public const int MinIanaUserPort = 1024;
+
+ public static TService CreateServiceWithAvailablePort<TService>(Func<int, TService> createService, Predicate<Exception> isPortInUseException) {}
+ public static TService CreateServiceWithAvailablePort<TService>(Func<int, TService> createService, Predicate<int>? exceptPort, Predicate<Exception> isPortInUseException) {}
+ public static TService CreateServiceWithAvailablePort<TService>(Func<int, TService> createService, int exceptPort, Predicate<Exception> isPortInUseException) {}
+ public static IEnumerable<int> EnumerateIanaDynamicPorts() {}
+ public static IEnumerable<int> EnumerateIanaDynamicPorts(Predicate<int>? exceptPort) {}
+ public static bool TryFindAvailablePort(Predicate<int>? exceptPort, out int port) {}
+ public static ...
Smdn.MSBuild.ProjectAssets.Library version 1.4.7
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-03-23 update package version
- 2023-03-23 fix condition of whether the IsPackable is falsy or not
Full changes
Full changes in this release:
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj b/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
index 69935b13..f679a4fe 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
@@ -6,7 +6,7 @@ SPDX-License-Identifier: MIT
<Import Project="$(MSBuildThisFileDirectory)..\..\eng\ProjectSettings.NoAssembliesNoBuild.props" />
<PropertyGroup>
- <VersionPrefix>1.4.6</VersionPrefix>
+ <VersionPrefix>1.4.7</VersionPrefix>
<VersionSuffix></VersionSuffix>
<DevelopmentDependency>true</DevelopmentDependency>
</PropertyGroup>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets b/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets
index dfd78204..ded17049 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets
@@ -16,7 +16,7 @@ SPDX-License-Identifier: MIT
-->
<_APIListDoGenerate Condition=" '$(IncludeBuildOutput)' != '' and '$(IncludeBuildOutput)' != 'true' ">false</_APIListDoGenerate>
<!-- Disable if IsPackable is falsy. -->
- <_APIListDoGenerate Condition=" '$(IsPackable)' != 'true' ">false</_APIListDoGenerate>
+ <_APIListDoGenerate Condition=" '$(IsPackable)' != '' and '$(IsPackable)' != 'true' ">false</_APIListDoGenerate>
<!-- This is required to import .props and .targets from Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks -->
<ExcludeRestorePackageImports
Notes
Full Changelog: releases/Smdn.MSBuild.ProjectAssets.Library-1.4.6...releases/Smdn.MSBuild.ProjectAssets.Library-1.4.7
Smdn.MSBuild.ProjectAssets.Library version 1.4.6
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-03-23 update package version
- 2023-03-23 add extension points for setting custom StyleCop configurations
- 2023-01-26 improve behavior in case when the test logs are not output
- 2023-01-26 simplify retrieving test result object
- 2023-01-24 disable containing API list to README if no API list files are generated
- 2023-01-24 disable generating API list if the project is not packable
Full changes
Full changes in this release:
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj b/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
index 8ddcc321..69935b13 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
@@ -6,7 +6,7 @@ SPDX-License-Identifier: MIT
<Import Project="$(MSBuildThisFileDirectory)..\..\eng\ProjectSettings.NoAssembliesNoBuild.props" />
<PropertyGroup>
- <VersionPrefix>1.4.5</VersionPrefix>
+ <VersionPrefix>1.4.6</VersionPrefix>
<VersionSuffix></VersionSuffix>
<DevelopmentDependency>true</DevelopmentDependency>
</PropertyGroup>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets b/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets
index 4c903abb..dfd78204 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets
@@ -15,6 +15,8 @@ SPDX-License-Identifier: MIT
Note that the default value of 'IncludeBuildOutput' is empty, not 'true'.
-->
<_APIListDoGenerate Condition=" '$(IncludeBuildOutput)' != '' and '$(IncludeBuildOutput)' != 'true' ">false</_APIListDoGenerate>
+ <!-- Disable if IsPackable is falsy. -->
+ <_APIListDoGenerate Condition=" '$(IsPackable)' != 'true' ">false</_APIListDoGenerate>
<!-- This is required to import .props and .targets from Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks -->
<ExcludeRestorePackageImports
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.StyleCop.props b/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.StyleCop.props
index 3cd42833..8cce26f4 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.StyleCop.props
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.StyleCop.props
@@ -8,10 +8,5 @@ SPDX-License-Identifier: MIT
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
- <AdditionalFiles Include="$(MSBuildThisFileDirectory)\stylecop.json" Link="stylecop.json" />
</ItemGroup>
-
- <PropertyGroup Label="StyleCop code analysis">
- <CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)\StyleCop.Analyzers.ruleset</CodeAnalysisRuleSet>
- </PropertyGroup>
</Project>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.StyleCop.targets b/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.StyleCop.targets
new file mode 100644
index 00000000..918d1559
--- /dev/null
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.StyleCop.targets
@@ -0,0 +1,26 @@
+<!--
+SPDX-FileCopyrightText: 2022 smdn <smdn@smdn.jp>
+SPDX-License-Identifier: MIT
+-->
+<Project>
+ <ItemGroup Label="StyleCop code analysis">
+ <AdditionalFiles
+ Include="$(StyleCopAnalyzersConfigurationFile)"
+ Link="stylecop.json"
+ Condition=" '$(StyleCopAnalyzersConfigurationFile)' != '' "
+ />
+ <!-- include default 'stylecop.json' to AdditionalFiles here if StyleCopAnalyzersConfigurationFile is not specified -->
+ <AdditionalFiles
+ Include="$(MSBuildThisFileDirectory)\stylecop.json"
+ Link="stylecop.json"
+ Condition=" '$(StyleCopAnalyzersConfigurationFile)' == '' "
+ />
+ </ItemGroup>
+
+ <PropertyGroup Label="StyleCop code analysis">
+ <!-- set default to CodeAnalysisRuleSet here if not set -->
+ <CodeAnalysisRuleSet
+ Condition=" '$(CodeAnalysisRuleSet)' == '' "
+ >$(MSBuildThisFileDirectory)\StyleCop.Analyzers.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+</Project>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/LiquidTestReports.targets b/src/Smdn.MSBuild.ProjectAssets.Library/project/LiquidTestReports.targets
index 35238dd5..443179a7 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/LiquidTestReports.targets
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/LiquidTestReports.targets
@@ -65,6 +65,9 @@ SPDX-License-Identifier: MIT
<ItemGroup>
<LiquidTestReportsLogFileCandidate Include="$(LiquidTestReportsTestReportDirectory)*$(LiquidTestReportsTestReportFileExtensionWithTargetFramework)" />
+ </ItemGroup>
+
+ <ItemGroup Condition=" '@(LiquidTestReportsLogFileCandidate)' != '' ">
<!-- extract only log files that are created after the started time and before the finished time -->
<LiquidTestReportsLogFile
Include="@(LiquidTestReportsLogFileCandidate)"
@@ -73,6 +76,20 @@ SPDX-License-Identifier: MIT
($([System.DateTimeOffset]::Parse(%(CreatedTime)).Ticks)) < ($(LiquidTestReportsTestFinishedAt))
"
/>
+ </ItemGroup>
+
+ <PropertyGroup>
+ <_HasLiquidTestReportsLogFileGenerated>false</_HasLiquidTestReportsLogFileGenerated>
+ <_HasLiquidTestReportsLogFileGenerated Condition=" '@(LiquidTestReportsLogFile)' != '' ">true</_HasLiquidTestReportsLogFileGenerated>
+ </PropertyGroup>
+
+ <Warning
+ Text="No test logs were output to directory '$(LiquidTestReportsTestReportDirectory)'. Make sure that the configurations are valid and there are no syntax errors in the template file."
+ File="$(MSBuildProjectFullPath)"
+ Condition=" '$(_HasLiquidTestReportsLogFileGenerated)' != 'true' "
+ />
+
+ <ItemGroup Condition=" '$(_HasLiquidTestReportsLogFileGenerated)' == 'true' ">
<LiquidTestReportsLogFileContent Include="$([System.IO.File]::ReadAllText('%(LiquidTestReportsLogFile.Identity)'))" />
</ItemGroup>
@@ -80,6 +97,9 @@ SPDX-License-Identifier: MIT
<LiquidTestReportsStepSummaryContents>%0A%0A@(LiquidTestReportsLogFileContent, '%0A%0A----%0A%0A')</LiquidTestReportsStepSummaryContents>
</PropertyGroup>
- <GitHubActionsStepSummaryAppendContent Contents="$(LiquidTestReportsStepSummaryContents)" />
+ <GitHubActionsStepSummaryAppendContent
+ Contents="$(LiquidTestReportsStepSummaryContents)"
+ Condition=" '$(_HasLiquidTestReportsLogFileGenerated)' == 'true' "
+ />
</Target>
</Project>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/PackageReadmeFile.targets b/src/Smdn.MSBuild.ProjectAssets.Library/project/PackageReadmeFile.targets
index 57583f80..f4fdd726 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/PackageReadmeFile.targets
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/PackageReadmeFile.targets
@@ -29,6 +29,7 @@ SPDX-License-Identifier: MIT
<Target
Name="GenerateNupkgReadmeFileContentAPIList"
DependsOnTargets="GenerateNupkgReadmeFileContent"
+ Condition=" '@(ApiListFiles)' != '' "
>
<GetLatestFramework Frameworks="$(TargetFrameworks)" Condition="'$(TargetFrameworks)' != ''">
<Output TaskParameter="LatestFramework" PropertyName="LatestTargetFramework" />
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.targets b/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.targets
index 8f92534c..78b9fe34 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.targets
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.targets
@@ -11,6 +11,8 @@ SPDX-License-Identifier: MIT
<Import Project="$(MSBuildThisFileDirectory)ApiListGenerator.targets" />
<!-- PackageReadmeFile auto-generating -->
<Import Project="$(MSBuildThisFileDirectory)PackageReadmeFile.targets" Condition=" '$(GeneratePackageReadmeFile)' == 'true' " />
+ <!-- StyleCop code analysis -->
+ <Import Project="$(MSBuildThisFileDirectory)CodeAnalysis.StyleCop.targets" />
</ImportGroup>
<ImportGroup Condition=" '$(IsTestProject)' == 'true' ">
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/TestReport.template.liquid.md b/src/Smdn.MSBuild.ProjectAssets.Library/project/TestReport.template.liquid.md
index 9345fd47..444c259a 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/TestReport.template.liquid.md
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/TestReport.template.liquid.md
@@ -222,8 +222,9 @@ SPDX-License-Identifier: MIT
{%- comment -%}
find and enumerate corresponding test results from their index
{%- endcomment -%}
-{%- for result_index in result_indices -%}
-{%- assign result = set.results | slice: result_index | first -%}{%- comment -%} array[index] does not works fine, so use slice+first instead {%- endcomment -%}
+{%- for r...
Smdn.MSBuild.DefineConstants.NETSdkApi version 1.3.10
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-02-28 update package version
- 2023-02-28 add PhysicalAddress.TryParse
- 2023-02-28 add Process.WaitForExitAsync
- 2023-02-28 add SHAnnn.HashData/HashDataAsync/HashSizeInBits/HashSizeInBytes
- 2023-02-28 add AsymmetricAlgorithm.Export*()
Notes
Full Changelog: releases/Smdn.MSBuild.DefineConstants.NETSdkApi-1.3.9...releases/Smdn.MSBuild.DefineConstants.NETSdkApi-1.3.10
Smdn.MSBuild.ProjectAssets.Common version 1.3.5
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
Full changes
Full changes in this release:
diff --git a/src/Smdn.MSBuild.ProjectAssets.Common/Smdn.MSBuild.ProjectAssets.Common.csproj b/src/Smdn.MSBuild.ProjectAssets.Common/Smdn.MSBuild.ProjectAssets.Common.csproj
index eb7a8a25..e7432009 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Common/Smdn.MSBuild.ProjectAssets.Common.csproj
+++ b/src/Smdn.MSBuild.ProjectAssets.Common/Smdn.MSBuild.ProjectAssets.Common.csproj
@@ -6,7 +6,7 @@ SPDX-License-Identifier: MIT
<Import Project="$(MSBuildThisFileDirectory)..\..\eng\ProjectSettings.NoAssembliesNoBuild.props" />
<PropertyGroup>
- <VersionPrefix>1.3.4</VersionPrefix>
+ <VersionPrefix>1.3.5</VersionPrefix>
<VersionSuffix></VersionSuffix>
<DevelopmentDependency>true</DevelopmentDependency>
<NoWarn>NU5110;NU5111;$(NoWarn)</NoWarn>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Common/project/scripts/psmodules/NuGet.PackageContent/NuGet.PackageContent.psm1 b/src/Smdn.MSBuild.ProjectAssets.Common/project/scripts/psmodules/NuGet.PackageContent/NuGet.PackageContent.psm1
index 1d6359bb..cfaf19c0 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Common/project/scripts/psmodules/NuGet.PackageContent/NuGet.PackageContent.psm1
+++ b/src/Smdn.MSBuild.ProjectAssets.Common/project/scripts/psmodules/NuGet.PackageContent/NuGet.PackageContent.psm1
@@ -29,8 +29,78 @@ function Get-NuGetPackageVersions {
return $get_package_versions_response.Content | `
ConvertFrom-Json | `
- Select-Object -ExpandProperty 'versions' | `
- ForEach-Object { New-Object System.Version -ArgumentList $_ }
+ Select-Object -ExpandProperty 'versions'
+}
+
+<#
+ Summary: Parses and gets the semantic version from the specified version sstring.
+#>
+function Get-SemanticVersion {
+ Param(
+ [Parameter(Mandatory = $true)][string]$Version
+ )
+
+ $components = $Version -split { $_ -eq '+' -or $_-eq '-' }, 2
+
+ $version_core = $components[0]
+ $is_prerelease = $Version[$version_core.Length] -eq '-'
+
+ $suffix = $components.Count -eq 2 ? $components[1] : $null
+
+ if ($is_prerelease) {
+ $suffix_components = $suffix -split { $_ -eq '+' -or $_-eq '-' }, 2
+
+ if ($suffix_components.Count -eq 2) {
+ $prerelease = $suffix_components[0]
+ $build = $suffix_components[1]
+ }
+ else {
+ $prerelease = $suffix
+ $build = $null
+ }
+ }
+ else {
+ $build = $components[1]
+ }
+
+ return [PSCustomObject]@{
+ Version = $Version
+ VersionCore = New-Object System.Version -ArgumentList $version_core
+ Suffix = $suffix
+ IsPreRelease = $is_prerelease
+ PreRelease = $prerelease
+ Build = $build
+ }
+}
+
+<#
+ Summary: Sorts the version strings by order of the semantic version.
+#>
+function Get-OrderedSemanticVersions {
+ [OutputType([string[]])]
+ Param(
+ [Parameter(Mandatory = $true)]
+ [string[]]$Versions,
+
+ [switch][bool]$Descending = $false,
+ [switch][bool]$Unique = $false
+ )
+
+ return $Versions | `
+ ForEach-Object {
+ Get-SemanticVersion $_
+ } | `
+ Sort-Object `
+ -Property `
+ @{Expression = "VersionCore"; Descending = $Descending}, `
+ @{Expression = { -not $_.IsPreRelease }; Descending = $Descending}, `
+ @{Expression = { $_.PreRelease.Length }; Descending = $Descending}, `
+ @{Expression = "PreRelease"; Descending = $Descending}, `
+ @{Expression = { $_.Build.Length }; Descending = $Descending}, `
+ @{Expression = "Build"; Descending = $Descending} | `
+ Select-Object `
+ -ExpandProperty Version `
+ -Unique:$Unique
}
<#
@@ -45,10 +115,15 @@ function Get-NuGetLatestPackageVersion {
[Parameter(Mandatory = $true)][string]$package_id
)
- $package_versions = Get-NuGetPackageVersions $nuget_service_package_base_address $package_id | `
- Sort-Object -Descending
+ $package_versions = Get-NuGetPackageVersions $nuget_service_package_base_address $package_id
+
+ if ($package_versions.Count -le 0) {
+ return $null
+ }
+
+ $ordered_versions = Get-OrderedSemanticVersions $package_versions -Descending
- return $package_versions.Count -gt 0 ? $package_versions[0] : $null
+ return $ordered_versions[0]
}
<#
Notes
Full Changelog: releases/Smdn.MSBuild.ProjectAssets.Common-1.3.4...releases/Smdn.MSBuild.ProjectAssets.Common-1.3.5
Smdn.MSBuild.DefineConstants.NETSdkApi version 1.3.9
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-01-26 update package version
- 2023-01-26 add RuntimeInformation and RuntimeInformation.RuntimeIdentifier
Notes
Full Changelog: releases/Smdn.MSBuild.DefineConstants.NETSdkApi-1.3.8...releases/Smdn.MSBuild.DefineConstants.NETSdkApi-1.3.9
Smdn.MSBuild.ProjectAssets.Library version 1.4.5
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
Full changes
Full changes in this release:
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj b/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
index be8d27de..8ddcc321 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
@@ -6,7 +6,7 @@ SPDX-License-Identifier: MIT
<Import Project="$(MSBuildThisFileDirectory)..\..\eng\ProjectSettings.NoAssembliesNoBuild.props" />
<PropertyGroup>
- <VersionPrefix>1.4.4</VersionPrefix>
+ <VersionPrefix>1.4.5</VersionPrefix>
<VersionSuffix></VersionSuffix>
<DevelopmentDependency>true</DevelopmentDependency>
</PropertyGroup>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets b/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets
index 94c3ca00..4c903abb 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets
@@ -6,7 +6,7 @@ SPDX-License-Identifier: MIT
<PropertyGroup Label="API list generator">
<!-- default configurations -->
<APIListOutputBaseDirectory Condition=" '$(APIListOutputBaseDirectory)' == '' ">api-list\</APIListOutputBaseDirectory>
- <APIListPackageVersion Condition=" '$(APIListPackageVersion)' == '' ">1.2.0</APIListPackageVersion>
+ <APIListPackageVersion Condition=" '$(APIListPackageVersion)' == '' ">1.2.1</APIListPackageVersion>
<APIListLoadIntoReflectionOnlyContext Condition=" '$(APIListLoadIntoReflectionOnlyContext)' == '' ">false</APIListLoadIntoReflectionOnlyContext>
<_APIListDoGenerate>$(APIListEnableGenerating)</_APIListDoGenerate>
Notes
Full Changelog: releases/Smdn.MSBuild.ProjectAssets.Library-1.4.4...releases/Smdn.MSBuild.ProjectAssets.Library-1.4.5
Smdn.Fundamental.Uuid version 3.1.1
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-01-23 update assembly version
- 2023-01-23 disable generic math temporarily on .NET 7
- 2023-01-22 update package reference for Smdn.Fundamental.Exception
- 2023-01-22 update package reference for Smdn.Fundamental.Shim
- 2023-01-15 replace ProjectReference with ReferenceAssemblyVersion to ProjectOrPackageReference
- 2023-01-12 set ReferenceAssemblyVersion to the ProjectReferences
- 2023-01-12 use ReferencePackageVersion instead of VersionRange
- 2023-01-06 specify IFormatProvider explicitly
- 2023-01-06 seal the internal classes
- 2023-01-05 drop net5.0 from target frameworks
- 2023-01-05 catch up the implementations of IEqualityOperators/IComparisonOperators to .NET 7.0 GA
- 2023-01-05 rename files from 'Parseable' to 'Parsable'
- 2023-01-05 catch up the generic math implementations to .NET 7.0 GA
- 2022-06-03 fix not to use obsolete symbols
- 2022-04-14 disable code formatting
- 2022-04-14 fix code format
- 2022-04-08 use symbols defined by Smdn.MSBuild.DefineConstants.NETSdkApi instead
API changes
API changes in this release:
diff --git a/doc/api-list/Smdn.Fundamental.Uuid/Smdn.Fundamental.Uuid-net45.apilist.cs b/doc/api-list/Smdn.Fundamental.Uuid/Smdn.Fundamental.Uuid-net45.apilist.cs
index 4325e271..2bef5a69 100644
--- a/doc/api-list/Smdn.Fundamental.Uuid/Smdn.Fundamental.Uuid-net45.apilist.cs
+++ b/doc/api-list/Smdn.Fundamental.Uuid/Smdn.Fundamental.Uuid-net45.apilist.cs
@@ -1,210 +1,210 @@
-// Smdn.Fundamental.Uuid.dll (Smdn.Fundamental.Uuid-3.1.0)
+// Smdn.Fundamental.Uuid.dll (Smdn.Fundamental.Uuid-3.1.1)
// Name: Smdn.Fundamental.Uuid
-// AssemblyVersion: 3.1.0.0
-// InformationalVersion: 3.1.0+ae4a97a93ac395fe5044a3c8ed3ba4411533bc12
+// AssemblyVersion: 3.1.1.0
+// InformationalVersion: 3.1.1+b57b4cba29f01d9537ede2ca39db9abb783b20da
// TargetFramework: .NETFramework,Version=v4.5
// Configuration: Release
// Referenced assemblies:
-// Smdn.Fundamental.Exception, Version=3.0.2.0, Culture=neutral
-// Smdn.Fundamental.Shim, Version=3.1.2.0, Culture=neutral
+// Smdn.Fundamental.Exception, Version=3.0.3.0, Culture=neutral
+// Smdn.Fundamental.Shim, Version=3.1.4.0, Culture=neutral
// System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
// System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
// System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
// mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
using System;
using System.Net.NetworkInformation;
using System.Security.Cryptography;
using Smdn;
using Smdn.Formats.UniversallyUniqueIdentifiers;
namespace Smdn {
[TypeForwardedFrom("Smdn, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null")]
public enum UuidVersion : byte {
NameBasedMD5Hash = 3,
NameBasedSHA1Hash = 5,
None = 0,
RandomNumber = 4,
TimeBased = 1,
Version1 = 1,
Version2 = 2,
Version3 = 3,
Version4 = 4,
Version5 = 5,
}
[TypeForwardedFrom("Smdn, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null")]
[StructLayout(LayoutKind.Explicit, Pack = 1)]
public readonly struct Uuid :
IComparable,
IComparable<Guid>,
IComparable<Uuid>,
IEquatable<Guid>,
IEquatable<Uuid>,
IFormattable
{
public enum Namespace : int {
RFC4122Dns = 1806153744,
RFC4122IsoOid = 1806153746,
RFC4122Url = 1806153745,
RFC4122X500 = 1806153748,
}
public enum Variant : byte {
MicrosoftReserved = 192,
NCSReserved = 0,
RFC4122 = 128,
Reserved = 224,
}
public static readonly Uuid Nil; // = "00000000-0000-0000-0000-000000000000"
public static readonly Uuid RFC4122NamespaceDns; // = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
public static readonly Uuid RFC4122NamespaceIsoOid; // = "6ba7b812-9dad-11d1-80b4-00c04fd430c8"
public static readonly Uuid RFC4122NamespaceUrl; // = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"
public static readonly Uuid RFC4122NamespaceX500; // = "6ba7b814-9dad-11d1-80b4-00c04fd430c8"
public static Uuid CreateFromRandomNumber() {}
public static Uuid CreateFromRandomNumber(RandomNumberGenerator rng) {}
public static Uuid CreateFromRandomNumber(ReadOnlySpan<byte> randomNumber) {}
public static Uuid CreateFromRandomNumber(byte[] randomNumber) {}
public static Uuid CreateNameBased(ReadOnlySpan<byte> name, Uuid namespaceId, UuidVersion version) {}
public static Uuid CreateNameBased(ReadOnlySpan<byte> name, Uuid.Namespace ns, UuidVersion version) {}
public static Uuid CreateNameBased(Uri url, UuidVersion version) {}
public static Uuid CreateNameBased(byte[] name, Uuid namespaceId, UuidVersion version) {}
public static Uuid CreateNameBased(byte[] name, Uuid.Namespace ns, UuidVersion version) {}
public static Uuid CreateNameBased(string name, Uuid namespaceId, UuidVersion version) {}
public static Uuid CreateNameBased(string name, Uuid.Namespace ns, UuidVersion version) {}
public static Uuid CreateNameBasedMD5(ReadOnlySpan<byte> name, Uuid.Namespace ns) {}
public static Uuid CreateNameBasedMD5(Uri url) {}
public static Uuid CreateNameBasedMD5(byte[] name, Uuid.Namespace ns) {}
public static Uuid CreateNameBasedMD5(string name, Uuid.Namespace ns) {}
public static Uuid CreateNameBasedSHA1(ReadOnlySpan<byte> name, Uuid.Namespace ns) {}
public static Uuid CreateNameBasedSHA1(Uri url) {}
public static Uuid CreateNameBasedSHA1(byte[] name, Uuid.Namespace ns) {}
public static Uuid CreateNameBasedSHA1(string name, Uuid.Namespace ns) {}
public static Uuid CreateTimeBased() {}
public static Uuid CreateTimeBased(DateTime timestamp, int clock) {}
public static Uuid CreateTimeBased(DateTime timestamp, int clock, PhysicalAddress node) {}
public static Uuid CreateTimeBased(DateTime timestamp, int clock, byte[] node) {}
public static Uuid CreateTimeBased(PhysicalAddress node) {}
public static Uuid CreateTimeBased(byte[] node) {}
public static Uuid NewUuid() {}
public static Uuid Parse(ReadOnlySpan<char> s, IFormatProvider provider = null) {}
public static Uuid Parse(string s, IFormatProvider provider = null) {}
public static bool TryParse(ReadOnlySpan<char> s, IFormatProvider provider, out Uuid result) {}
public static bool TryParse(ReadOnlySpan<char> s, out Uuid result) {}
public static bool TryParse(string s, IFormatProvider provider, out Uuid result) {}
public static bool operator == (Uuid x, Uuid y) {}
public static explicit operator Guid(Uuid @value) {}
public static explicit operator Uuid(Guid @value) {}
public static bool operator > (Uuid x, Uuid y) {}
public static bool operator >= (Uuid x, Uuid y) {}
public static bool operator != (Uuid x, Uuid y) {}
public static bool operator < (Uuid x, Uuid y) {}
public static bool operator <= (Uuid x, Uuid y) {}
public Uuid(Guid guidValue) {}
public Uuid(ReadOnlySpan<byte> octets) {}
public Uuid(ReadOnlySpan<byte> octets, bool isBigEndian) {}
public Uuid(byte[] octets) {}
public Uuid(byte[] octets, bool isBigEndian) {}
public Uuid(byte[] octets, int index, bool isBigEndian = true) {}
public Uuid(string uuid) {}
public Uuid(uint time_low, ushort time_mid, ushort time_hi_and_version, byte clock_seq_hi_and_reserved, byte clock_seq_low, PhysicalAddress node) {}
public Uuid(uint time_low, ushort time_mid, ushort time_hi_and_version, byte clock_seq_hi_and_reserved, byte clock_seq_low, ReadOnlySpan<byte> node) {}
public Uuid(uint time_low, ushort time_mid, ushort time_hi_and_version, byte clock_seq_hi_and_reserved, byte clock_seq_low, byte node0, byte node1, byte node2, byte node3, byte node4, byte node5) {}
public Uuid(uint time_...