Releases: smdn/Smdn.Fundamentals
Smdn.MSBuild.ProjectAssets.Library version 1.11.0
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2025-11-28 update package version
- 2025-11-28 update README
- 2025-11-28 improve project SDK to import Smdn.MSBuild.ProjectAssets.Common implicitly
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>< 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
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2025-11-26 ensure that the directory must be created before writing the file
- 2025-11-26 update package version
- 2025-11-26 simplify importing .targets files
- 2025-11-26 disable adding $(DefineConstants) while building and packing
- 2025-11-26 add support for configuring whether enable or disable adding $(DefineConstants)
- 2025-11-26 add CompareOptions.NumericOrdering
- 2025-11-26 add support for .NET 9.0/10.0
- 2025-07-22 improve to use the line break characters that are not dependent on the local environment
- 2025-07-13 use Microsoft.Build.NoTargets instead
- 2025-06-30 drop the target framework netstandard1.x and use netstandard2.0 as the baseline instead
- 2025-06-08 fix typo and replace to more better word
- 2025-06-08 add entry to correct EqualityComparer.Create
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
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
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2025-07-06 update package version
- 2025-07-06 enhance AnalysisMode from Recommended to All
- 2025-07-06 add new rules
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
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2025-07-06 update package version
- 2025-07-06 add new rules
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 lambdaNotes
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
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2025-07-04 update package version
- 2025-07-04 improve determining the property values for the test target project
- 2025-07-03 empty the root namespace for all C# projects by default
- 2025-07-03 enable nullable for all C# project by default
- 2025-07-03 allow validation of IDE0130 for test projects as well
- 2025-07-03 split properties for library and test projects into separate props files
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...Smdn.MSBuild.ProjectAssets.Common version 1.6.0
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2025-07-04 update package version
- 2025-07-03 refactor to reduce importing unnecessary .targets files
- 2025-07-03 delete obsolete targets
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 <ProjectOrPackageReference Include="%(ProjectReference.Identity)" ReferencePackageVersion="%(ProjectReference.VersionRange)" />"
- 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
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2025-07-03 update package version
- 2025-07-03 improve package description and README.md
- 2025-07-03 add files and configuration to enable use as MSBuild project SDKs
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>< 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
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2025-07-03 update package version
- 2025-07-03 add .editorconfig settings for global.json
- 2025-07-03 add .editorconfig settings for slnx
- 2025-07-03 improve package description and README.md
- 2025-07-03 add files and configuration to enable use as MSBuild project SDKs
- 2025-06-29 fix typo
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>< 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...
Smdn.MSBuild.ProjectAssets.Library version 1.7.5
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2025-06-30 update package version
- 2025-06-30 bump Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks up to 1.6.0
- 2025-06-29 bump DotLiquid up to 2.3.197
- 2025-06-29 bump NUnit.Analyzers up to 4.9.1
- 2025-06-29 fix typo
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