Skip to content

Releases: smdn/Smdn.Fundamentals

Smdn.MSBuild.ProjectAssets.Library version 1.11.0

28 Nov 11:31
Immutable release. Only release title and notes can be modified.
0b95ddb

Choose a tag to compare

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/Sdk/Sdk.props b/src/Smdn.MSBuild.ProjectAssets.Library/Sdk/Sdk.props
index 735ceba3..2a587640 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/Sdk/Sdk.props
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/Sdk/Sdk.props
@@ -4,6 +4,18 @@ SPDX-FileCopyrightText: 2025 smdn <smdn@smdn.jp>
 SPDX-License-Identifier: MIT
 -->
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ImportGroup Label="Import Smdn.MSBuild.ProjectAssets.Common props">
+    <Import
+      Condition="'$(_SmdnProjectAssets_ImportFromLocal)' == 'true'"
+      Project="$(MSBuildThisFileDirectory)..\..\Smdn.MSBuild.ProjectAssets.Common\Sdk\Sdk.props"
+    />
+    <Import
+      Condition="'$(_SmdnProjectAssets_ImportFromLocal)' != 'true'"
+      Project="Sdk.props"
+      Sdk="Smdn.MSBuild.ProjectAssets.Common"
+    />
+  </ImportGroup>
+
   <Import
     Project="$(CustomBeforeSmdnMSBuildProjectAssetsLibraryProps)"
     Condition=" '$(CustomBeforeSmdnMSBuildProjectAssetsLibraryProps)' != '' And Exists('$(CustomBeforeSmdnMSBuildProjectAssetsLibraryProps)') "
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/Sdk/Sdk.targets b/src/Smdn.MSBuild.ProjectAssets.Library/Sdk/Sdk.targets
index 186ebd86..db02aaa1 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/Sdk/Sdk.targets
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/Sdk/Sdk.targets
@@ -15,4 +15,16 @@ SPDX-License-Identifier: MIT
     Project="$(CustomAfterSmdnMSBuildProjectAssetsLibraryTargets)"
     Condition=" '$(CustomAfterSmdnMSBuildProjectAssetsLibraryTargets)' != '' And Exists('$(CustomAfterSmdnMSBuildProjectAssetsLibraryTargets)') "
   />
+
+  <ImportGroup Label="Import Smdn.MSBuild.ProjectAssets.Common targets">
+    <Import
+      Condition="'$(_SmdnProjectAssets_ImportFromLocal)' == 'true'"
+      Project="$(MSBuildThisFileDirectory)..\..\Smdn.MSBuild.ProjectAssets.Common\Sdk\Sdk.targets"
+    />
+    <Import
+      Condition="'$(_SmdnProjectAssets_ImportFromLocal)' != 'true'"
+      Project="Sdk.targets"
+      Sdk="Smdn.MSBuild.ProjectAssets.Common"
+    />
+  </ImportGroup>
 </Project>
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 fc10cd2a..b29eaa7f 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.NoAssemblies.props" />
 
   <PropertyGroup>
-    <VersionPrefix>1.10.0</VersionPrefix>
+    <VersionPrefix>1.11.0</VersionPrefix>
     <VersionSuffix></VersionSuffix>
     <DevelopmentDependency>true</DevelopmentDependency>
     <PackageType>Dependency;MSBuildSdk</PackageType>
@@ -44,8 +44,6 @@ SPDX-License-Identifier: MIT
       <PackageReadmeFileContent><![CDATA[# $(PackageId) $(PackageVersion)
 $(Description)
 
-**Note that the package [Smdn.MSBuild.ProjectAssets.Common](https://www.nuget.org/packages/Smdn.MSBuild.ProjectAssets.Common) must also be imported in order to use this package.**
-
 This package can be used as an [MSBuild project SDK](https://learn.microsoft.com/visualstudio/msbuild/how-to-use-project-sdk) and includes the following files:
 
 - MSBuild files (`.props` and `.targets`)
@@ -56,6 +54,12 @@ This package can be used as an [MSBuild project SDK](https://learn.microsoft.com
   - Default .editorconfig (including analyzer rule settings)
 
 See [GitHub repository]($(RepositoryUrl)/tree/$(RepositoryBranch)/src/$(PackageId)/) for detail.
+
+**Note that the package [Smdn.MSBuild.ProjectAssets.Common](https://www.nuget.org/packages/Smdn.MSBuild.ProjectAssets.Common) must also be imported in order to use this package.**
+
+Starting with version 1.11.0, `Smdn.MSBuild.ProjectAssets.Common` will be implicitly imported when you import this package as a MSBuild project SDK.
+
+If you use older versions, or import props/targets files individually, you must explicitly import `Smdn.MSBuild.ProjectAssets.Common` as well.
 ]]></PackageReadmeFileContent>
     </PropertyGroup>
   </Target>

Notes

What's Changed

Dependencies

  • Bump the github-actions-workflows group with 2 updates by @dependabot[bot] in #279

Full Changelog: releases/Smdn.MSBuild.ProjectAssets.Library-1.10.0...releases/Smdn.MSBuild.ProjectAssets.Library-1.11.0

Smdn.MSBuild.DefineConstants.NETSdkApi version 1.6.0

26 Nov 13:42
Immutable release. Only release title and notes can be modified.
14bdc45

Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

Notes

What's Changed

Dependencies

  • Bump dawidd6/action-download-artifact from 9 to 10 by @dependabot[bot] in #250
  • Bump dawidd6/action-download-artifact from 10 to 11 by @dependabot[bot] in #256
  • Bump smdn/Smdn.Fundamentals/.github/workflows/test.yml@workflows/test/v1.4.1 from 1.4.1 to 1.4.2 by @dependabot[bot] in #259
  • Bump smdn/Smdn.Fundamentals/.github/workflows/publish-release.yml@workflows/release-target/v1.10.2 from 1.10.2 to 1.10.3 by @dependabot[bot] in #261
  • Bump smdn/Smdn.Fundamentals/.github/workflows/generate-release-target.yml@workflows/release-target/v1.10.2 from 1.10.2 to 1.10.3 by @dependabot[bot] in #260
  • Bump smdn/Smdn.Fundamentals/.github/workflows/publish-release-target.yml@workflows/release-target/v1.10.2 from 1.10.2 to 1.10.3 by @dependabot[bot] in #258
  • Bump the smdn-fundamentals-workflows group with 4 updates by @dependabot[bot] in #268
  • Bump the actions group with 2 updates by @dependabot[bot] in #273
  • Bump actions/setup-dotnet from 4.3.1 to 5.0.0 in the github-actions-workflows group by @dependabot[bot] in #274
  • Bump actions/cache from 4.2.4 to 4.3.0 in the github-actions-workflows group by @dependabot[bot] in #275
  • Bump github/codeql-action from 3 to 4 by @dependabot[bot] in #276
  • Bump actions/upload-artifact from 4.6.2 to 5.0.0 in the github-actions-workflows group by @dependabot[bot] in #277
  • Bump the github-actions-workflows group with 2 updates by @dependabot[bot] in #279

Full Changelog: releases/Smdn.MSBuild.DefineConstants.NETSdkApi-1.5.2...releases/Smdn.MSBuild.DefineConstants.NETSdkApi-1.6.0

Smdn.MSBuild.ProjectAssets.Library version 1.10.0

25 Nov 12:23
Immutable release. Only release title and notes can be modified.
c675c00

Choose a tag to compare

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 6643efd4..fc10cd2a 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
@@ -2,11 +2,11 @@
 SPDX-FileCopyrightText: 2022 smdn <smdn@smdn.jp>
 SPDX-License-Identifier: MIT
 -->
-<Project Sdk="Microsoft.NET.Sdk">
-  <Import Project="$(MSBuildThisFileDirectory)..\..\eng\ProjectSettings.NoAssembliesNoBuild.props" />
+<Project Sdk="Microsoft.Build.NoTargets">
+  <Import Project="$(MSBuildThisFileDirectory)..\..\eng\ProjectSettings.NoAssemblies.props" />
 
   <PropertyGroup>
-    <VersionPrefix>1.9.1</VersionPrefix>
+    <VersionPrefix>1.10.0</VersionPrefix>
     <VersionSuffix></VersionSuffix>
     <DevelopmentDependency>true</DevelopmentDependency>
     <PackageType>Dependency;MSBuildSdk</PackageType>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets b/src/Smdn.MSBuild.ProjectAssets.Library/project/ApiListGenerator.targets
index 9853ea33..979c8672 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.6.0</APIListPackageVersion>
+    <APIListPackageVersion Condition=" '$(APIListPackageVersion)' == '' ">1.7.0</APIListPackageVersion>
     <APIListLoadIntoReflectionOnlyContext Condition=" '$(APIListLoadIntoReflectionOnlyContext)' == '' ">false</APIListLoadIntoReflectionOnlyContext>
 
     <_APIListDoGenerate>$(APIListEnableGenerating)</_APIListDoGenerate>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.NUnitAnalyzers.props b/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.NUnitAnalyzers.props
index 19d970a2..6909b103 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.NUnitAnalyzers.props
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.NUnitAnalyzers.props
@@ -4,7 +4,7 @@ SPDX-License-Identifier: MIT
 -->
 <Project>
   <ItemGroup Label="NUnit Analyzers code analysis">
-    <PackageReference Include="NUnit.Analyzers" Version="4.9.1">
+    <PackageReference Include="NUnit.Analyzers" Version="4.11.2">
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
     </PackageReference>

Notes

What's Changed

Dependencies

  • Bump the actions group with 2 updates by @dependabot[bot] in #273
  • Bump actions/setup-dotnet from 4.3.1 to 5.0.0 in the github-actions-workflows group by @dependabot[bot] in #274
  • Bump actions/cache from 4.2.4 to 4.3.0 in the github-actions-workflows group by @dependabot[bot] in #275
  • Bump github/codeql-action from 3 to 4 by @dependabot[bot] in #276
  • Bump actions/upload-artifact from 4.6.2 to 5.0.0 in the github-actions-workflows group by @dependabot[bot] in #277

Full Changelog: releases/Smdn.MSBuild.ProjectAssets.Library-1.9.1...releases/Smdn.MSBuild.ProjectAssets.Library-1.10.0

Smdn.MSBuild.ProjectAssets.Library version 1.9.1

06 Jul 00:54
81b1d18

Choose a tag to compare

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 8f78805c..6643efd4 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.9.0</VersionPrefix>
+    <VersionPrefix>1.9.1</VersionPrefix>
     <VersionSuffix></VersionSuffix>
     <DevelopmentDependency>true</DevelopmentDependency>
     <PackageType>Dependency;MSBuildSdk</PackageType>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/assets/tests/include.editorconfig b/src/Smdn.MSBuild.ProjectAssets.Library/assets/tests/include.editorconfig
index 1b624f05..53a6b14e 100755
--- a/src/Smdn.MSBuild.ProjectAssets.Library/assets/tests/include.editorconfig
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/assets/tests/include.editorconfig
@@ -33,5 +33,11 @@ dotnet_diagnostic.NUnit2038.severity = warning # Consider using Assert.That(actu
 dotnet_diagnostic.NUnit2039.severity = warning # Consider using Assert.That(actual, Is.Not.InstanceOf(expected)) instead of ClassicAssert.IsNotInstanceOf(expected, actual)
 dotnet_diagnostic.NUnit2048.severity = warning # Consider using Assert.That(...) instead of StringAssert(...)
 dotnet_diagnostic.NUnit2049.severity = warning # Consider using Assert.That(...) instead of CollectionAssert(...)
+dotnet_diagnostic.NUnit2051.severity = warning # Consider using Assert.That(expr, Is.Positive) instead of ClassicAssert.Positive(expr)
+dotnet_diagnostic.NUnit2052.severity = warning # Consider using Assert.That(expr, Is.Negative) instead of ClassicAssert.Negative(expr)
+dotnet_diagnostic.NUnit2053.severity = warning # Consider using Assert.That(actual, Is.AssignableFrom(expected)) instead of ClassicAssert.IsAssignableFrom(expected, actual)
+dotnet_diagnostic.NUnit2054.severity = warning # Consider using Assert.That(actual, Is.Not.AssignableFrom(expected)) instead of ClassicAssert.IsNotAssignableFrom(expected, actual)
+dotnet_diagnostic.NUnit2055.severity = warning # Consider using Is.InstanceOf<T> constraint instead of an 'is T' expression
+dotnet_diagnostic.NUnit2056.severity = warning # Consider using Assert.EnterMultipleScope statement instead of Assert.Multiple/Assert.MultipleAsync
 
 dotnet_diagnostic.NUnit2050.severity = error # NUnit 4 no longer supports string.Format specification
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.Library.props b/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.Library.props
index 43fd910e..2ac61748 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.Library.props
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.Library.props
@@ -15,7 +15,7 @@ SPDX-License-Identifier: MIT
     <!-- code analysis defaults -->
     <!-- ref: https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#code-analysis-properties -->
     <AnalysisLevel>latest</AnalysisLevel>
-    <AnalysisMode>Recommended</AnalysisMode>
+    <AnalysisMode>All</AnalysisMode>
     <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
 
     <!-- source link defaults -->

Notes

What's Changed

Dependencies

  • Bump the smdn-fundamentals-workflows group with 4 updates by @dependabot in #268

Full Changelog: releases/Smdn.MSBuild.ProjectAssets.Library-1.9.0...releases/Smdn.MSBuild.ProjectAssets.Library-1.9.1

Smdn.MSBuild.ProjectAssets.Common version 1.6.1

06 Jul 00:54
6500eee

Choose a tag to compare

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 cac87d18..723c0630 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.6.0</VersionPrefix>
+    <VersionPrefix>1.6.1</VersionPrefix>
     <VersionSuffix></VersionSuffix>
     <DevelopmentDependency>true</DevelopmentDependency>
     <PackageType>Dependency;MSBuildSdk</PackageType>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Common/assets/include.editorconfig b/src/Smdn.MSBuild.ProjectAssets.Common/assets/include.editorconfig
index 0e2a2257..f2162a19 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Common/assets/include.editorconfig
+++ b/src/Smdn.MSBuild.ProjectAssets.Common/assets/include.editorconfig
@@ -63,7 +63,7 @@ dotnet_style_qualification_for_event      = false:suggestion
 # Language keywords vs BCL types preferences
 dotnet_style_predefined_type_for_locals_parameters_members  = true:suggestion
 dotnet_style_predefined_type_for_member_access              = true:suggestion
-# Parentheses preferences
+# Parentheses preferences (IDE0047 and IDE0048)
 dotnet_style_parentheses_in_arithmetic_binary_operators   = always_for_clarity:warning
 dotnet_style_parentheses_in_relational_binary_operators   = always_for_clarity:warning
 dotnet_style_parentheses_in_other_binary_operators        = always_for_clarity:suggestion
@@ -419,6 +419,16 @@ csharp_style_prefer_primary_constructors = true:suggestion
 # https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/ide1005
 csharp_style_conditional_delegate_call = true:suggestion
 
+# dotnet_style_allow_multiple_blank_lines_experimental = false # IDE2000: Allow multiple blank lines
+# csharp_style_allow_embedded_statements_on_same_line_experimental = false # IDE2001: Embedded statements must be on their own line
+# csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false # IDE2002: Consecutive braces must not have blank line between them
+# dotnet_style_allow_statement_immediately_after_block_experimental = false # IDE2003: Blank line required between block and subsequent statement
+# csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = false # IDE2004: Blank line not allowed after constructor initializer colon
+# csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = false # IDE2005: Allow blank line after token in arrow expression clause
+# csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = false # IDE2006: Allow blank line after token in object initializer
+
+
+
 #
 # Language and unnecessary rules
 # https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/language-rules
@@ -436,6 +446,7 @@ dotnet_diagnostic.IDE0160.severity    = none          # Use block-scoped namespa
 dotnet_diagnostic.IDE0161.severity    = warning       # Use file-scoped namespace
 dotnet_diagnostic.IDE0200.severity    = warning       # Remove unnecessary lambda expression
 dotnet_diagnostic.IDE0290.severity    = suggestion    # Use primary constructor
+dotnet_diagnostic.IDE0330.severity    = warning       # Prefer 'System.Threading.Lock'
 
 # https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/expression-bodied-members
 dotnet_diagnostic.IDE0021.severity    = warning       # Use expression body for constructors
@@ -497,6 +508,20 @@ dotnet_diagnostic.IDE0040.severity    = warning       # Add accessibility modifi
 dotnet_diagnostic.IDE0062.severity    = warning       # Make local function static
 dotnet_diagnostic.IDE0250.severity    = warning       # Struct can be made 'readonly'
 dotnet_diagnostic.IDE0251.severity    = warning       # Member can be made 'readonly'
+dotnet_diagnostic.IDE0320.severity    = warning       # Make anonymous function static
+
+# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/language-rules#new-line-preferences
+# dotnet_diagnostic.IDE2000.severity    = warning       # Allow multiple blank lines
+# dotnet_diagnostic.IDE2001.severity    = warning       # Allow embedded statements on same line
+# dotnet_diagnostic.IDE2002.severity    = warning       # Allow blank lines between consecutive braces
+# dotnet_diagnostic.IDE2003.severity    = warning       # Allow statement immediately after block
+# dotnet_diagnostic.IDE2004.severity    = warning       # Allow blank line after colon in constructor initializer
+# dotnet_diagnostic.IDE2005.severity    = warning       # Allow blank line after token in conditional expression
+# dotnet_diagnostic.IDE2006.severity    = warning       # Allow blank line after token in arrow expression
+
+# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/language-rules#null-checking-preferences
+# C# style rules
+dotnet_diagnostic.IDE1005.severity    = suggestion    # Use conditional delegate call
 
 # https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/language-rules#parameter-preferences
 dotnet_diagnostic.IDE0060.severity    = warning       # Remove unused parameter
@@ -522,3 +547,9 @@ dotnet_diagnostic.IDE0008.severity    = none          # Use explicit type instea
 
 # https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/ide0055
 dotnet_diagnostic.IDE0055.severity    = warning       # Fix formatting
+
+# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/ide0340
+dotnet_diagnostic.IDE0340.severity    = warning       # Use unbound generic type
+
+# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/ide0350
+dotnet_diagnostic.IDE0350.severity    = suggestion    # Use implicitly typed lambda

Notes

What's Changed

Dependencies

  • Bump the smdn-fundamentals-workflows group with 4 updates by @dependabot in #268

Full Changelog: releases/Smdn.MSBuild.ProjectAssets.Common-1.6.0...releases/Smdn.MSBuild.ProjectAssets.Common-1.6.1

Smdn.MSBuild.ProjectAssets.Library version 1.9.0

03 Jul 21:51
cb1eac4

Choose a tag to compare

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 589219f8..8f78805c 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.8.0</VersionPrefix>
+    <VersionPrefix>1.9.0</VersionPrefix>
     <VersionSuffix></VersionSuffix>
     <DevelopmentDependency>true</DevelopmentDependency>
     <PackageType>Dependency;MSBuildSdk</PackageType>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.Library.props b/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.Library.props
new file mode 100644
index 00000000..43fd910e
--- /dev/null
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.Library.props
@@ -0,0 +1,38 @@
+<!--
+SPDX-FileCopyrightText: 2022 smdn <smdn@smdn.jp>
+SPDX-License-Identifier: MIT
+-->
+<Project>
+  <PropertyGroup Condition=" '$(IsTestProject)' != 'true' " Label="Properties for the library project">
+    <!-- assembly defaults -->
+    <AssemblyCLSCompliant>true</AssemblyCLSCompliant>
+
+    <!-- project defaults -->
+    <!-- enables generating documentation file; also intended to suppressing the following warning: -->
+    <!-- CSC : warning EnableGenerateDocumentationFile: Set MSBuild property 'GenerateDocumentationFile' to 'true' in project file to enable IDE0005 (Remove unnecessary usings/imports) on build (https://github.com/dotnet/roslyn/issues/41640) -->
+    <GenerateDocumentationFile>true</GenerateDocumentationFile>
+
+    <!-- code analysis defaults -->
+    <!-- ref: https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#code-analysis-properties -->
+    <AnalysisLevel>latest</AnalysisLevel>
+    <AnalysisMode>Recommended</AnalysisMode>
+    <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
+
+    <!-- source link defaults -->
+    <!-- ref: https://github.com/dotnet/sourcelink -->
+    <PublishRepositoryUrl>true</PublishRepositoryUrl>
+    <EmbedUntrackedSources>true</EmbedUntrackedSources>
+    <DebugType>embedded</DebugType>
+
+    <!-- package defaults -->
+    <EnablePackageValidation>true</EnablePackageValidation>
+    <GeneratePackageReadmeFile>true</GeneratePackageReadmeFile>
+    <Authors>smdn</Authors>
+
+    <!-- trimming defaults -->
+    <!-- ref: https://learn.microsoft.com/dotnet/core/deploying/trimming/prepare-libraries-for-trimming -->
+    <EnableTrimAnalyzer
+      Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net6.0'))"
+    >true</EnableTrimAnalyzer>
+  </PropertyGroup>
+</Project>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.Test.props b/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.Test.props
new file mode 100644
index 00000000..64f6c46b
--- /dev/null
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.Test.props
@@ -0,0 +1,108 @@
+<!--
+SPDX-FileCopyrightText: 2022 smdn <smdn@smdn.jp>
+SPDX-License-Identifier: MIT
+-->
+<Project>
+  <PropertyGroup Condition=" '$(IsTestProject)' == 'true' " Label="Properties for the test project">
+    <IsPackable>false</IsPackable>
+
+    <!-- code analysis defaults -->
+    <AnalysisLevel>latest</AnalysisLevel>
+    <AnalysisModeDesign>None</AnalysisModeDesign>
+    <AnalysisModeDocumentation>None</AnalysisModeDocumentation>
+    <AnalysisModeGlobalization>Recommended</AnalysisModeGlobalization>
+    <AnalysisModeInteroperability>Recommended</AnalysisModeInteroperability>
+    <AnalysisModeMaintainability>Recommended</AnalysisModeMaintainability>
+    <AnalysisModeNaming>None</AnalysisModeNaming>
+    <AnalysisModePerformance>None</AnalysisModePerformance>
+    <AnalysisModeSingleFile>None</AnalysisModeSingleFile>
+    <AnalysisModeReliability>Recommended</AnalysisModeReliability>
+    <AnalysisModeSecurity>Recommended</AnalysisModeSecurity>
+    <AnalysisModeStyle>Recommended</AnalysisModeStyle>
+    <AnalysisModeUsage>None</AnalysisModeUsage>
+
+    <!--
+      The property `SmdnTestTargetProjectXxx` resolves the path to the test target project
+      based on properties for current test project such as the name.
+
+      For example, from the test project path `tests\Smdn.Example.Tests\Smdn.Example.Tests.csproj`,
+      attempts to resolve the test target project `src\Smdn.Example.Tests\Smdn.Example.csproj`.
+    -->
+
+    <!--
+      SmdnTestTargetProjectName:
+        The name of the test target project.
+        If a value has already been set, that value will be used.
+        Otherwise, the default value will be used.
+
+      Default value:
+        Determines from the test project file name.
+        (e.g., `Smdn.Example.Tests.*proj` -> `Smdn.Example`)
+    -->
+    <SmdnTestTargetProjectName
+      Condition=" $(SmdnTestTargetProjectName) == '' and $(MSBuildProjectFile.EndsWith('.Tests$(MSBuildProjectExtension)'))"
+    >$(MSBuildProjectFile.Replace('.Tests$(MSBuildProjectExtension)', ''))</SmdnTestTargetProjectName>
+
+    <!--
+      SmdnTestTargetProjectFile:
+        The file name of the test target project, including file extension.
+        If a value has already been set, that value will be used.
+        Otherwise, the default value will be used.
+
+      Default value:
+        Determines from the value of `SmdnTestTargetProjectName` and `MSBuildProjectExtension`.
+        (e.g., `Smdn.Example` -> `Smdn.Example.*proj`)
+    -->
+    <SmdnTestTargetProjectFile
+      Condition=" $(SmdnTestTargetProjectFile) == '' and $(SmdnTestTargetProjectName) != '' "
+    >$(SmdnTestTargetProjectName)$(MSBuildProjectExtension)</SmdnTestTargetProjectFile>
+
+    <!--
+      SmdnTestTargetProjectDirectory:
+        The absolute path to the directory of the test target project.
+        If a value has already been set, that value will be used.
+        Otherwise, the default value will be used.
+
+      Default value:
+        Determines from the value of `MSBuildProjectDirectory` and `SmdnTestTargetProjectName`.
+        It is assumed that the default directory structure is used.
+        (e.g., `tests\Smdn.Example.Tests\..\..\src\Smdn.Example\`)
+    -->
+    <SmdnTestTargetProjectDirectory
+      Condition=" $(SmdnTestTargetProjectDirectory) == '' and $(SmdnTestTargetProjectName) != '' "
+    >$([System.IO.Path]::GetFullPath(
+      $([System.IO.Path]::Join(
+        '$(MSBuildProjectDirectory)',
+        '..\..\src\$(SmdnTestTargetProjectName)\'
+      ))
+    ))</SmdnTestTargetProjectDirectory>
+
+    <!--
+      SmdnTestTargetProjectFullPath:
+        The absolute path to the test target project.
+        If a value has already been set, that value will be used.
+        Otherwise, the default value will be used.
+
+      Default value:
+        Determines from the value of `SmdnTestTargetProjectDirectory` and `SmdnTestTargetProjectFile`
+        (e.g., `tests\Smdn.Example.Tests\Smdn.Example.Tests.csproj` -> `tests\Smdn.Example.Tests\..\..\src\Smdn.Example\Smdn.Example.csproj`)
+    -->
+    <SmdnTestTargetProjectFullPath
+      Condition=" $(SmdnTestTargetProjectFullPath) == '' and $(SmdnTestTargetProjectDirectory) != '' and $(SmdnTestTargetProjectFile) != '' "
+    >$([System.IO.Path]::GetFullPath(
+      $([System.IO.Path]::Join(
+        '$(SmdnTestTargetProjectDirectory)',
+        '$(SmdnTestTargetProjectFile)'
+      ))
+    ))</SmdnTestTargetProjectFullPath>
+
+    <!--
+      If the test target project does not exist (the path cannot be resolved),
+      set the values of each property to empty.
+    -->
+    <SmdnTestTargetProjectName        Condition="!Exists('$(SmdnTestTargetProjectFullPath)')" />
+    <SmdnTestTargetProjectFile        Condition="!Exists('$(SmdnTestTargetProjectFullPath)')" />
+    <SmdnTestTargetProjectDirectory   Condition="!Exists('$(SmdnTestTargetProjectFullPath)')" />
+    <SmdnTestTargetProjectFullPath    Condition="!Exists('$(SmdnTestTargetProjectFullPath)')" />
+  </PropertyGroup>
+</Project>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.props b/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.props
index a68363d5..6fb3263c 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.props
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.props
@@ -6,66 +6,21 @@ SPDX-License-Identifi...
Read more

Smdn.MSBuild.ProjectAssets.Common version 1.6.0

03 Jul 21:51
30ad332

Choose a tag to compare

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 3d8a651d..cac87d18 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.5.0</VersionPrefix>
+    <VersionPrefix>1.6.0</VersionPrefix>
     <VersionSuffix></VersionSuffix>
     <DevelopmentDependency>true</DevelopmentDependency>
     <PackageType>Dependency;MSBuildSdk</PackageType>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Common/project/Project.targets b/src/Smdn.MSBuild.ProjectAssets.Common/project/Project.targets
index 5095b8e6..e780accb 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Common/project/Project.targets
+++ b/src/Smdn.MSBuild.ProjectAssets.Common/project/Project.targets
@@ -3,19 +3,23 @@ SPDX-FileCopyrightText: 2022 smdn <smdn@smdn.jp>
 SPDX-License-Identifier: MIT
 -->
 <Project>
+  <!-- import .targets file for the all projects -->
   <ImportGroup>
     <Import Project="$(MSBuildThisFileDirectory)targets\GetRepositoryProperties.targets" />
     <Import Project="$(MSBuildThisFileDirectory)targets\AssemblyAttributes.GenerateCLSCompliant.targets" />
+    <Import Project="$(MSBuildThisFileDirectory)targets\Assets.Deploy.targets" />
+    <Import Project="$(MSBuildThisFileDirectory)targets\ProjectOrPackageReference.targets" />
+  </ImportGroup>
+
+  <!-- import .targets file for the projects except test projects -->
+  <ImportGroup Condition=" '$(IsTestProject)' != 'true' ">
     <Import Project="$(MSBuildThisFileDirectory)targets\AssemblyAttributes.GenerateMetadata.Repository.targets" />
     <Import Project="$(MSBuildThisFileDirectory)targets\AssemblyAttributes.SetDefaults.targets" />
-    <Import Project="$(MSBuildThisFileDirectory)targets\Assets.Deploy.targets" />
     <Import Project="$(MSBuildThisFileDirectory)targets\GetNuGetPackageLatestVersion.targets" />
     <Import Project="$(MSBuildThisFileDirectory)targets\GenerateNuspecDifference.targets" />
     <Import Project="$(MSBuildThisFileDirectory)targets\NewRelease.targets" />
-    <Import Project="$(MSBuildThisFileDirectory)targets\Nupkg.SetProjectReferenceVersionRange.targets" />
     <Import Project="$(MSBuildThisFileDirectory)targets\Nupkg.WarnPackConfiguration.targets" />
     <Import Project="$(MSBuildThisFileDirectory)targets\Nupkg.GenerateRepositoryProperties.targets" />
     <Import Project="$(MSBuildThisFileDirectory)targets\Nupkg.SetDefaults.targets" />
-    <Import Project="$(MSBuildThisFileDirectory)targets\ProjectOrPackageReference.targets" />
   </ImportGroup>
 </Project>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Common/project/targets/Nupkg.SetProjectReferenceVersionRange.targets b/src/Smdn.MSBuild.ProjectAssets.Common/project/targets/Nupkg.SetProjectReferenceVersionRange.targets
deleted file mode 100644
index 00e456dd..00000000
--- a/src/Smdn.MSBuild.ProjectAssets.Common/project/targets/Nupkg.SetProjectReferenceVersionRange.targets
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
-SPDX-FileCopyrightText: 2021 smdn <smdn@smdn.jp>
-SPDX-License-Identifier: MIT
--->
-<Project>
-  <!-- Replaces %(ProjectReferencesWithVersions.ProjectVersion) with custom defined metadata %(ProjectReference.VersionRange) -->
-  <!-- ref: https://github.com/NuGet/Home/issues/5556 -->
-  <Target
-    Name="Nupkg_SetProjectReferenceVersionRange"
-    BeforeTargets="GenerateNuspec"
-    DependsOnTargets="_GetProjectReferenceVersions"
-  >
-    <ItemGroup>
-      <_ProjectReferencesWithVersionsToUpdate
-        Include="@(ProjectReference->'%(FullPath)')"
-        ProjectVersion="%(ProjectReference.VersionRange)"
-        Condition=" '%(ProjectReference.VersionRange)' != '' "
-      />
-
-      <_ProjectReferencesWithVersions
-        Remove="%(_ProjectReferencesWithVersionsToUpdate.Identity)"
-      />
-      <_ProjectReferencesWithVersions
-        Include="%(_ProjectReferencesWithVersionsToUpdate.Identity)"
-        ProjectVersion="%(_ProjectReferencesWithVersionsToUpdate.ProjectVersion)"
-      />
-    </ItemGroup>
-
-    <!-- warn use of VersionRange with ProjectReference -->
-    <Warning
-      Text="ProjectReference.VersionRange is obsolete. Replace with &lt;ProjectOrPackageReference Include=&quot;%(ProjectReference.Identity)&quot; ReferencePackageVersion=&quot;%(ProjectReference.VersionRange)&quot; /&gt;"
-      File="$(MSBuildProjectFullPath)"
-      Condition=" '%(ProjectReference.VersionRange)' != '' "
-    />
-  </Target>
-</Project>

Notes

Full Changelog: releases/Smdn.MSBuild.ProjectAssets.Common-1.5.0...releases/Smdn.MSBuild.ProjectAssets.Common-1.6.0

Smdn.MSBuild.ProjectAssets.Library version 1.8.0

02 Jul 21:20
e6aa2a0

Choose a tag to compare

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/Sdk/Sdk.props b/src/Smdn.MSBuild.ProjectAssets.Library/Sdk/Sdk.props
new file mode 100644
index 00000000..735ceba3
--- /dev/null
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/Sdk/Sdk.props
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+SPDX-FileCopyrightText: 2025 smdn <smdn@smdn.jp>
+SPDX-License-Identifier: MIT
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import
+    Project="$(CustomBeforeSmdnMSBuildProjectAssetsLibraryProps)"
+    Condition=" '$(CustomBeforeSmdnMSBuildProjectAssetsLibraryProps)' != '' And Exists('$(CustomBeforeSmdnMSBuildProjectAssetsLibraryProps)') "
+  />
+
+  <Import Project="$(MSBuildThisFileDirectory)..\project\Project.props"/>
+
+  <Import
+    Project="$(CustomAfterSmdnMSBuildProjectAssetsLibraryProps)"
+    Condition=" '$(CustomAfterSmdnMSBuildProjectAssetsLibraryProps)' != '' And Exists('$(CustomAfterSmdnMSBuildProjectAssetsLibraryProps)') "
+  />
+</Project>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/Sdk/Sdk.targets b/src/Smdn.MSBuild.ProjectAssets.Library/Sdk/Sdk.targets
new file mode 100644
index 00000000..186ebd86
--- /dev/null
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/Sdk/Sdk.targets
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+SPDX-FileCopyrightText: 2025 smdn <smdn@smdn.jp>
+SPDX-License-Identifier: MIT
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import
+    Project="$(CustomBeforeSmdnMSBuildProjectAssetsLibraryTargets)"
+    Condition=" '$(CustomBeforeSmdnMSBuildProjectAssetsLibraryTargets)' != '' And Exists('$(CustomBeforeSmdnMSBuildProjectAssetsLibraryTargets)') "
+  />
+
+  <Import Project="$(MSBuildThisFileDirectory)..\project\Project.targets"/>
+
+  <Import
+    Project="$(CustomAfterSmdnMSBuildProjectAssetsLibraryTargets)"
+    Condition=" '$(CustomAfterSmdnMSBuildProjectAssetsLibraryTargets)' != '' And Exists('$(CustomAfterSmdnMSBuildProjectAssetsLibraryTargets)') "
+  />
+</Project>
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 41c3a976..589219f8 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/Smdn.MSBuild.ProjectAssets.Library.csproj
@@ -6,23 +6,26 @@ SPDX-License-Identifier: MIT
   <Import Project="$(MSBuildThisFileDirectory)..\..\eng\ProjectSettings.NoAssembliesNoBuild.props" />
 
   <PropertyGroup>
-    <VersionPrefix>1.7.5</VersionPrefix>
+    <VersionPrefix>1.8.0</VersionPrefix>
     <VersionSuffix></VersionSuffix>
     <DevelopmentDependency>true</DevelopmentDependency>
+    <PackageType>Dependency;MSBuildSdk</PackageType>
   </PropertyGroup>
 
   <PropertyGroup Label="assembly attributes">
-    <Description>A package of MSBuild asset files common to the library projects.</Description>
+    <Description>Provides MSBuild project SDK that includes configurations commonly used by the library projects.</Description>
     <CopyrightYear>2022</CopyrightYear>
   </PropertyGroup>
 
   <PropertyGroup Label="package properties">
-    <PackageTags>MSBuild;project-assets;build-assets</PackageTags>
+    <PackageTags>MSBuild;MSBuildSDK;project-assets;build-assets</PackageTags>
+    <GenerateNupkgReadmeFileDependsOnTargets>$(GenerateNupkgReadmeFileDependsOnTargets);GenerateReadmeFileContent</GenerateNupkgReadmeFileDependsOnTargets>
   </PropertyGroup>
 
   <ItemGroup>
     <None Include="assets\**" Pack="false" Visible="true" />
     <None Include="project\**" Pack="false" Visible="true" />
+    <None Include="Sdk\**" Pack="false" Visible="true" />
 
     <None Include="assets\src\include.editorconfig"       Pack="true" PackagePath="assets\src\.editorconfig" />
     <None Include="assets\tests\include.editorconfig"     Pack="true" PackagePath="assets\tests\.editorconfig" />
@@ -32,5 +35,28 @@ SPDX-License-Identifier: MIT
     <None Include="project\StyleCop.Analyzers.ruleset"    Pack="true" PackagePath="project\" />
     <None Include="project\stylecop.json"                 Pack="true" PackagePath="project\" />
     <None Include="project\TestReport.template.liquid.md" Pack="true" PackagePath="project\" />
+    <None Include="Sdk\Sdk.props"                         Pack="true" PackagePath="Sdk\" />
+    <None Include="Sdk\Sdk.targets"                       Pack="true" PackagePath="Sdk\" />
   </ItemGroup>
+
+  <Target Name="GenerateReadmeFileContent">
+    <PropertyGroup>
+      <PackageReadmeFileContent><![CDATA[# $(PackageId) $(PackageVersion)
+$(Description)
+
+**Note that the package [Smdn.MSBuild.ProjectAssets.Common](https://www.nuget.org/packages/Smdn.MSBuild.ProjectAssets.Common) must also be imported in order to use this package.**
+
+This package can be used as an [MSBuild project SDK](https://learn.microsoft.com/visualstudio/msbuild/how-to-use-project-sdk) and includes the following files:
+
+- MSBuild files (`.props` and `.targets`)
+  - Default configuration (items and properties) for library projects
+  - Default configuration for code analyzers
+  - Tools and MSBuild tasks for building, testing and packaging
+- Other asset files
+  - Default .editorconfig (including analyzer rule settings)
+
+See [GitHub repository]($(RepositoryUrl)/tree/$(RepositoryBranch)/src/$(PackageId)/) for detail.
+]]></PackageReadmeFileContent>
+    </PropertyGroup>
+  </Target>
 </Project>

Notes

Full Changelog: releases/Smdn.MSBuild.ProjectAssets.Library-1.7.5...releases/Smdn.MSBuild.ProjectAssets.Library-1.8.0

Smdn.MSBuild.ProjectAssets.Common version 1.5.0

02 Jul 21:19
a72f670

Choose a tag to compare

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/Sdk/Sdk.props b/src/Smdn.MSBuild.ProjectAssets.Common/Sdk/Sdk.props
new file mode 100644
index 00000000..fa4f2906
--- /dev/null
+++ b/src/Smdn.MSBuild.ProjectAssets.Common/Sdk/Sdk.props
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+SPDX-FileCopyrightText: 2025 smdn <smdn@smdn.jp>
+SPDX-License-Identifier: MIT
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import
+    Project="$(CustomBeforeSmdnMSBuildProjectAssetsCommonProps)"
+    Condition=" '$(CustomBeforeSmdnMSBuildProjectAssetsCommonProps)' != '' And Exists('$(CustomBeforeSmdnMSBuildProjectAssetsCommonProps)') "
+  />
+
+  <Import Project="$(MSBuildThisFileDirectory)..\project\Project.props"/>
+
+  <Import
+    Project="$(CustomAfterSmdnMSBuildProjectAssetsCommonProps)"
+    Condition=" '$(CustomAfterSmdnMSBuildProjectAssetsCommonProps)' != '' And Exists('$(CustomAfterSmdnMSBuildProjectAssetsCommonProps)') "
+  />
+</Project>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Common/Sdk/Sdk.targets b/src/Smdn.MSBuild.ProjectAssets.Common/Sdk/Sdk.targets
new file mode 100644
index 00000000..591d1bf5
--- /dev/null
+++ b/src/Smdn.MSBuild.ProjectAssets.Common/Sdk/Sdk.targets
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+SPDX-FileCopyrightText: 2025 smdn <smdn@smdn.jp>
+SPDX-License-Identifier: MIT
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import
+    Project="$(CustomBeforeSmdnMSBuildProjectAssetsCommonTargets)"
+    Condition=" '$(CustomBeforeSmdnMSBuildProjectAssetsCommonTargets)' != '' And Exists('$(CustomBeforeSmdnMSBuildProjectAssetsCommonTargets)') "
+  />
+
+  <Import Project="$(MSBuildThisFileDirectory)..\project\Project.targets"/>
+
+  <Import
+    Project="$(CustomAfterSmdnMSBuildProjectAssetsCommonTargets)"
+    Condition=" '$(CustomAfterSmdnMSBuildProjectAssetsCommonTargets)' != '' And Exists('$(CustomAfterSmdnMSBuildProjectAssetsCommonTargets)') "
+  />
+</Project>
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 8d8cebcb..3d8a651d 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Common/Smdn.MSBuild.ProjectAssets.Common.csproj
+++ b/src/Smdn.MSBuild.ProjectAssets.Common/Smdn.MSBuild.ProjectAssets.Common.csproj
@@ -6,24 +6,27 @@ SPDX-License-Identifier: MIT
   <Import Project="$(MSBuildThisFileDirectory)..\..\eng\ProjectSettings.NoAssembliesNoBuild.props" />
 
   <PropertyGroup>
-    <VersionPrefix>1.4.1</VersionPrefix>
+    <VersionPrefix>1.5.0</VersionPrefix>
     <VersionSuffix></VersionSuffix>
     <DevelopmentDependency>true</DevelopmentDependency>
+    <PackageType>Dependency;MSBuildSdk</PackageType>
     <NoWarn>NU5110;NU5111;$(NoWarn)</NoWarn>
   </PropertyGroup>
 
   <PropertyGroup Label="assembly attributes">
-    <Description>A package of MSBuild asset files common to the various projects.</Description>
+    <Description>Provides MSBuild project SDK that includes configurations commonly used by the various .NET projects.</Description>
     <CopyrightYear>2022</CopyrightYear>
   </PropertyGroup>
 
   <PropertyGroup Label="package properties">
-    <PackageTags>MSBuild;project-assets;build-assets</PackageTags>
+    <PackageTags>MSBuild;MSBuildSDK;project-assets;build-assets</PackageTags>
+    <GenerateNupkgReadmeFileDependsOnTargets>$(GenerateNupkgReadmeFileDependsOnTargets);GenerateReadmeFileContent</GenerateNupkgReadmeFileDependsOnTargets>
   </PropertyGroup>
 
   <ItemGroup>
     <None Include="assets\**" Pack="false" Visible="true" />
     <None Include="project\**" Pack="false" Visible="true" />
+    <None Include="Sdk\**" Pack="false" Visible="true" />
 
     <None Include="assets\include.editorconfig"            Pack="true" PackagePath="assets\.editorconfig" />
     <None Include="project\Project.props"                  Pack="true" PackagePath="project\" />
@@ -32,5 +35,27 @@ SPDX-License-Identifier: MIT
     <None Include="project\images\package-icon.png"        Pack="true" PackagePath="project\images\package-icon.png" />
     <None Include="project\scripts\*.ps1"                  Pack="true" PackagePath="project\scripts\" />
     <None Include="project\scripts\**\*.psm1"              Pack="true" PackagePath="project\scripts\" />
+    <None Include="Sdk\Sdk.props"                          Pack="true" PackagePath="Sdk\" />
+    <None Include="Sdk\Sdk.targets"                        Pack="true" PackagePath="Sdk\" />
   </ItemGroup>
+
+  <Target Name="GenerateReadmeFileContent">
+    <PropertyGroup>
+      <PackageReadmeFileContent><![CDATA[# $(PackageId) $(PackageVersion)
+$(Description)
+
+This package can be used as an [MSBuild project SDK](https://learn.microsoft.com/visualstudio/msbuild/how-to-use-project-sdk) and includes the following files:
+
+- MSBuild files (`.props` and `.targets`)
+  - Default configuration (items and properties) for .NET projects
+  - Default configuration for code analyzers
+  - Tools and MSBuild tasks for building and packaging
+- Other asset files
+  - Default .editorconfig (including analyzer rule settings)
+  - Icon images used in nupkg files, etc.
+
+See [GitHub repository]($(RepositoryUrl)/tree/$(RepositoryBranch)/src/$(PackageId)/) for detail.
+]]></PackageReadmeFileContent>
+    </PropertyGroup>
+  </Target>
 </Project>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Common/assets/include.editorconfig b/src/Smdn.MSBuild.ProjectAssets.Common/assets/include.editorconfig
index 2d0504aa..0e2a2257 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Common/assets/include.editorconfig
+++ b/src/Smdn.MSBuild.ProjectAssets.Common/assets/include.editorconfig
@@ -20,11 +20,17 @@ indent_brace_style = K&R
 charset = utf-8-bom
 end_of_line = crlf
 
-[*.{csproj,vbproj,proj,props,targets,ruleset}]
+[*.{csproj,vbproj,proj,slnx,props,targets,ruleset}]
 charset = utf-8-bom
 indent_size = 2
 end_of_line = crlf
 
+[global.json]
+charset = utf-8
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+
 [*.sh]
 end_of_line = lf
 indent_size = 2
diff --git a/src/Smdn.MSBuild.ProjectAssets.Common/project/targets/GetRepositoryProperties.targets b/src/Smdn.MSBuild.ProjectAssets.Common/project/targets/GetRepositoryProperties.targets
index 92cd8402..42494553 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Common/project/targets/GetRepositoryProperties.targets
+++ b/src/Smdn.MSBuild.ProjectAssets.Common/project/targets/GetRepositoryProperties.targets
@@ -24,6 +24,6 @@ SPDX-License-Identifier: MIT
   </Target>
 
   <Target Name="GetRepositoryProperties_VersionOrRepositoryTypeNotSupported" Condition="('$(RepositoryBranch)' == '') and ('$(RepositoryCommit)' == '')">
-    <Error Text="could not get repositry properties (type: $(RepositoryType))" />
+    <Error Text="could not get repository properties (type: $(RepositoryType))" />
   </Target>
 </Project>

Notes

What's Changed

  • Bump dawidd6/action-download-artifact from 3.0.0 to 6 in /.github/workflows by @dependabot in #230
  • Bump dawidd6/action-download-artifact from 7 to 8 by @dependabot in #237
  • Bump smdn/Smdn.Fundamentals/.github/workflows/generate-release-target.yml@workflows/release-target/v1.10.1 from 1.10.1 to 1.10.2 by @dependabot in #238
  • Bump smdn/Smdn.Fundamentals/.github/workflows/publish-release.yml@workflows/release-target/v1.10.1 from 1.10.1 to 1.10.2 by @dependabot in #240
  • Bump smdn/Smdn.Fundamentals/.github/workflows/publish-release-target.yml@workflows/release-target/v1.10.1 from 1.10.1 to 1.10.2 by @dependabot in #239
  • Bump actions/setup-dotnet from 4.2.0 to 4.3.0 by @dependabot in #241
  • Bump actions/cache from 4.2.0 to 4.2.1 by @dependabot in #242
  • Bump actions/upload-artifact from 4.6.0 to 4.6.1 by @dependabot in #243
  • Bump actions/cache from 4.2.1 to 4.2.2 by @dependabot in #244
  • Bump dawidd6/action-download-artifact from 8 to 9 by @dependabot in #245
  • Bump actions/setup-dotnet from 4.3.0 to 4.3.1 by @dependabot in #246
  • Bump act...
Read more

Smdn.MSBuild.ProjectAssets.Library version 1.7.5

30 Jun 13:33
eaeba96

Choose a tag to compare

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 ffd9633a..41c3a976 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.7.4</VersionPrefix>
+    <VersionPrefix>1.7.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 6fb2fe28..9853ea33 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.5.0</APIListPackageVersion>
+    <APIListPackageVersion Condition=" '$(APIListPackageVersion)' == '' ">1.6.0</APIListPackageVersion>
     <APIListLoadIntoReflectionOnlyContext Condition=" '$(APIListLoadIntoReflectionOnlyContext)' == '' ">false</APIListLoadIntoReflectionOnlyContext>
 
     <_APIListDoGenerate>$(APIListEnableGenerating)</_APIListDoGenerate>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.NUnitAnalyzers.props b/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.NUnitAnalyzers.props
index cb061f6c..19d970a2 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.NUnitAnalyzers.props
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/CodeAnalysis.NUnitAnalyzers.props
@@ -4,7 +4,7 @@ SPDX-License-Identifier: MIT
 -->
 <Project>
   <ItemGroup Label="NUnit Analyzers code analysis">
-    <PackageReference Include="NUnit.Analyzers" Version="4.4.0">
+    <PackageReference Include="NUnit.Analyzers" Version="4.9.1">
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
     </PackageReference>
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/LiquidTestReports.props b/src/Smdn.MSBuild.ProjectAssets.Library/project/LiquidTestReports.props
index 5af1cb5e..4e97e4fd 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/LiquidTestReports.props
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/LiquidTestReports.props
@@ -8,7 +8,7 @@ SPDX-License-Identifier: MIT
     <EnableLiquidTestReportsGitHubStepSummary Condition=" '$(EnableLiquidTestReportsGitHubStepSummary)' == '' ">true</EnableLiquidTestReportsGitHubStepSummary><!-- by default, enables outputting reports to GITHUB_STEP_SUMMARY -->
     <LiquidTestReportsTemplateFile Condition=" '$(LiquidTestReportsTemplateFile)' == '' ">$(MSBuildThisFileDirectory)TestReport.template.liquid.md</LiquidTestReportsTemplateFile><!-- default test report template file for LiquidTestReports -->
     <LiquidTestReportsCustomPackageReferenceVersion Condition=" '$(LiquidTestReportsCustomPackageReferenceVersion)' == '' ">1.0.9</LiquidTestReportsCustomPackageReferenceVersion>
-    <DotLiquidPackageReferenceVersion Condition=" '$(DotLiquidPackageReferenceVersion)' == '' " >2.2.677</DotLiquidPackageReferenceVersion>
+    <DotLiquidPackageReferenceVersion Condition=" '$(DotLiquidPackageReferenceVersion)' == '' " >2.3.197</DotLiquidPackageReferenceVersion>
     <LiquidTestReportsOmitPassedTestResults Condition=" '$(LiquidTestReportsOmitPassedTestResults)' == '' " >true</LiquidTestReportsOmitPassedTestResults> <!-- whether or not to let LiquidTestReports omit output tests that passed -->
     <LiquidTestReportsEmitTestMessages Condition=" '$(LiquidTestReportsEmitTestMessages)' == '' " >true</LiquidTestReportsEmitTestMessages> <!-- whether to let LiquidTestReports output test messages or not -->
     <LiquidTestReportsEmitTestCaseResultMessages Condition=" '$(LiquidTestReportsEmitTestCaseResultMessages)' == '' ">true</LiquidTestReportsEmitTestCaseResultMessages> <!-- whether to let LiquidTestReports output test messages or not -->
diff --git a/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.props b/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.props
index 62d80fc4..a68363d5 100644
--- a/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.props
+++ b/src/Smdn.MSBuild.ProjectAssets.Library/project/Project.props
@@ -17,7 +17,7 @@ SPDX-License-Identifier: MIT
     <AssemblyCLSCompliant>true</AssemblyCLSCompliant>
 
     <!-- project defaults -->
-    <!-- enables generating documentation file; also intended to supressing the following warning: -->
+    <!-- enables generating documentation file; also intended to suppressing the following warning: -->
     <!-- CSC : warning EnableGenerateDocumentationFile: Set MSBuild property 'GenerateDocumentationFile' to 'true' in project file to enable IDE0005 (Remove unnecessary usings/imports) on build (https://github.com/dotnet/roslyn/issues/41640) -->
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
 

Notes

What's Changed

  • Bump dawidd6/action-download-artifact from 7 to 8 by @dependabot in #237
  • Bump smdn/Smdn.Fundamentals/.github/workflows/generate-release-target.yml@workflows/release-target/v1.10.1 from 1.10.1 to 1.10.2 by @dependabot in #238
  • Bump smdn/Smdn.Fundamentals/.github/workflows/publish-release.yml@workflows/release-target/v1.10.1 from 1.10.1 to 1.10.2 by @dependabot in #240
  • Bump smdn/Smdn.Fundamentals/.github/workflows/publish-release-target.yml@workflows/release-target/v1.10.1 from 1.10.1 to 1.10.2 by @dependabot in #239
  • Bump actions/setup-dotnet from 4.2.0 to 4.3.0 by @dependabot in #241
  • Bump actions/cache from 4.2.0 to 4.2.1 by @dependabot in #242
  • Bump actions/upload-artifact from 4.6.0 to 4.6.1 by @dependabot in #243
  • Bump actions/cache from 4.2.1 to 4.2.2 by @dependabot in #244
  • Bump dawidd6/action-download-artifact from 8 to 9 by @dependabot in #245
  • Bump actions/setup-dotnet from 4.3.0 to 4.3.1 by @dependabot in #246
  • Bump actions/upload-artifact from 4.6.1 to 4.6.2 by @dependabot in #248
  • Bump actions/cache from 4.2.2 to 4.2.3 by @dependabot in #247
  • Bump dawidd6/action-download-artifact from 9 to 10 by @dependabot in #250
  • Bump dawidd6/action-download-artifact from 10 to 11 by @dependabot in #256
  • Bump smdn/Smdn.Fundamentals/.github/workflows/test.yml@workflows/test/v1.4.1 from 1.4.1 to 1.4.2 by @dependabot in #259
  • Bump smdn/Smdn.Fundamentals/.github/workflows/publish-release.yml@workflows/release-target/v1.10.2 from 1.10.2 to 1.10.3 by @dependabot in #261
  • Bump smdn/Smdn.Fundamentals/.github/workflows/generate-release-target.yml@workflows/release-target/v1.10.2 from 1.10.2 to 1.10.3 by @dependabot in #260
  • Bump smdn/Smdn.Fundamentals/.github/workflows/publish-release-target.yml@workflows/release-target/v1.10.2 from 1.10.2 to 1.10.3 by @dependabot in #258

Full Changelog: releases/Smdn.MSBuild.ProjectAssets.Library-1.7.4...releases/Smdn.MSBuild.ProjectAssets.Library-1.7.5