diff --git a/.github/workflows/pr-analysis.yml b/.github/workflows/pr-analysis.yml new file mode 100644 index 000000000000..b74a99c9799b --- /dev/null +++ b/.github/workflows/pr-analysis.yml @@ -0,0 +1,14 @@ +name: PR Analysis +on: + pull_request: + types: [opened, synchronize, labeled, unlabeled] +permissions: + contents: read + pull-requests: read +jobs: + allowed-labels: + runs-on: ubuntu-latest + steps: + - name: Return error if branch is in lockdown or 'do not merge' label is present + run: echo "Labels on this PR prevent it from being merged. Please contact the repo owners for more information." && exit 1 + if: ${{ contains(github.event.pull_request.labels.*.name, 'Branch Lockdown') || contains(github.event.pull_request.labels.*.name, 'DO NOT MERGE') }} diff --git a/NuGet.config b/NuGet.config index 06af156ec6af..4be9187139c7 100644 --- a/NuGet.config +++ b/NuGet.config @@ -24,24 +24,24 @@ - + - + - + - + - + - + @@ -68,13 +68,13 @@ - + - + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5ab03534c957..07ef799dcbc1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,56 +1,56 @@ - + https://github.com/dotnet/templating - a2862fdcaf86b098da8025439e8317417290e610 + 43c42acfb25c93e471d53f7c1ba27463a96246fd - + https://github.com/dotnet/templating - a2862fdcaf86b098da8025439e8317417290e610 + 43c42acfb25c93e471d53f7c1ba27463a96246fd - + https://github.com/dotnet/templating - a2862fdcaf86b098da8025439e8317417290e610 + 43c42acfb25c93e471d53f7c1ba27463a96246fd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 @@ -59,154 +59,154 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - + https://github.com/dotnet/emsdk - dad5528e5bdf92a05a5a404c5f7939523390b96d + 78be8cdf4f0bfd93018fd7a87f8282a41d041298 - + https://github.com/dotnet/emsdk - dad5528e5bdf92a05a5a404c5f7939523390b96d + 78be8cdf4f0bfd93018fd7a87f8282a41d041298 - + https://github.com/dotnet/msbuild - 1c202646288e077c489d41e00e67c458cf9245f7 + a4ef1e90fef9b56473708b7d308f982c7c9f46d9 - + https://github.com/dotnet/msbuild - 1c202646288e077c489d41e00e67c458cf9245f7 + a4ef1e90fef9b56473708b7d308f982c7c9f46d9 - + https://github.com/dotnet/msbuild - 1c202646288e077c489d41e00e67c458cf9245f7 + a4ef1e90fef9b56473708b7d308f982c7c9f46d9 - + https://github.com/dotnet/fsharp - 3d780e06fbae1bc106cb90088fa9605ea4a42eed + 82a3f54f7140a62e6398403451098c4517747c02 - + https://github.com/dotnet/fsharp - 3d780e06fbae1bc106cb90088fa9605ea4a42eed + 82a3f54f7140a62e6398403451098c4517747c02 - + https://github.com/dotnet/roslyn - afe5bc4a827030229ab79ec596b3cb91d4e87872 + 398aa319196d4684c751a3d7c75c847e519a393c - + https://github.com/dotnet/roslyn - afe5bc4a827030229ab79ec596b3cb91d4e87872 + 398aa319196d4684c751a3d7c75c847e519a393c - + https://github.com/dotnet/roslyn - afe5bc4a827030229ab79ec596b3cb91d4e87872 + 398aa319196d4684c751a3d7c75c847e519a393c - + https://github.com/dotnet/roslyn - afe5bc4a827030229ab79ec596b3cb91d4e87872 + 398aa319196d4684c751a3d7c75c847e519a393c - + https://github.com/dotnet/roslyn - afe5bc4a827030229ab79ec596b3cb91d4e87872 + 398aa319196d4684c751a3d7c75c847e519a393c - + https://github.com/dotnet/roslyn - afe5bc4a827030229ab79ec596b3cb91d4e87872 + 398aa319196d4684c751a3d7c75c847e519a393c - + https://github.com/dotnet/roslyn - afe5bc4a827030229ab79ec596b3cb91d4e87872 + 398aa319196d4684c751a3d7c75c847e519a393c - + https://github.com/dotnet/roslyn - afe5bc4a827030229ab79ec596b3cb91d4e87872 + 398aa319196d4684c751a3d7c75c847e519a393c - + https://github.com/dotnet/roslyn - afe5bc4a827030229ab79ec596b3cb91d4e87872 + 398aa319196d4684c751a3d7c75c847e519a393c - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce - + https://github.com/nuget/nuget.client - 3d42754f2962b30deac1ec48e5415aa83c071b37 + 5d81cb8da82eda8a6b47aae92d1e6f888de982ce https://github.com/microsoft/vstest @@ -226,143 +226,143 @@ e8cf3808d0b16dea8d6e1a9b77f1660a5ff45e13 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 1c33258cdd6220239735d6a7a18ef6adc082038c + ef0ddf89991072267608f432ca2163ac54fdecab - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 1c33258cdd6220239735d6a7a18ef6adc082038c + ef0ddf89991072267608f432ca2163ac54fdecab - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 1c33258cdd6220239735d6a7a18ef6adc082038c + ef0ddf89991072267608f432ca2163ac54fdecab - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 1c33258cdd6220239735d6a7a18ef6adc082038c + ef0ddf89991072267608f432ca2163ac54fdecab - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - f58f709bc102a0d15aa6ffe4d9a7435bebd3079e + 33f5371cc258de0a72569adf1e9fbcbf04256a17 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://github.com/dotnet/razor - 90f580c3fa0908ad7d593a4ca7622e78a61aa927 + 41f62d0b8021cafc33bdefdb7e0198c8d2eb59ac - + https://github.com/dotnet/razor - 90f580c3fa0908ad7d593a4ca7622e78a61aa927 + 41f62d0b8021cafc33bdefdb7e0198c8d2eb59ac - + https://github.com/dotnet/razor - 90f580c3fa0908ad7d593a4ca7622e78a61aa927 + 41f62d0b8021cafc33bdefdb7e0198c8d2eb59ac - + https://github.com/dotnet/razor - 90f580c3fa0908ad7d593a4ca7622e78a61aa927 + 41f62d0b8021cafc33bdefdb7e0198c8d2eb59ac - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-winforms - 5bf1bff0e58e41f748a8a6d7c666ed28e033e318 + ca42d9e58480ab4ebb845027c44c6b4f10e0539d - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - f58f709bc102a0d15aa6ffe4d9a7435bebd3079e + 33f5371cc258de0a72569adf1e9fbcbf04256a17 https://github.com/dotnet/xdt @@ -374,16 +374,16 @@ 63ae81154c50a1cf9287cc47d8351d55b4289e6d - + https://github.com/dotnet/roslyn-analyzers 16865ea61910500f1022ad2b96c499e5df02c228 - + https://github.com/dotnet/roslyn-analyzers 16865ea61910500f1022ad2b96c499e5df02c228 - + https://github.com/dotnet/roslyn-analyzers 16865ea61910500f1022ad2b96c499e5df02c228 @@ -469,125 +469,125 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - b96167fbfe8bd45d94e4dcda42c7d09eb5745459 + d5dc8a13cc618b9cbdc1e5744b4806c594d49553 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://github.com/dotnet/arcade-services @@ -597,14 +597,14 @@ https://github.com/dotnet/arcade-services 47e3672c762970073e4282bd563233da86bcca3e - + https://github.com/dotnet/scenario-tests - f219fd635f701e3142be92cb0bb4039cadb39d4d + 75f784a5484a2d4e00905069160954f686dcc8e3 - + https://github.com/dotnet/scenario-tests - f219fd635f701e3142be92cb0bb4039cadb39d4d + 75f784a5484a2d4e00905069160954f686dcc8e3 @@ -34,7 +34,7 @@ 17 36 20 - $([MSBuild]::Add($(VersionFeature), 13)) + $([MSBuild]::Add($(VersionFeature), 12)) <_NET70ILLinkPackVersion>7.0.100-1.23211.1 @@ -80,73 +80,73 @@ - 9.0.3-servicing.25112.2 + 9.0.4-servicing.25163.12 - 9.0.3 - 9.0.3-servicing.25111.13 - 9.0.3 - 9.0.3 - 9.0.3-servicing.25111.13 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 + 9.0.4 + 9.0.4-servicing.25163.5 + 9.0.4 + 9.0.4 + 9.0.4-servicing.25163.5 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 8.0.0-rc.1.23414.4 - 9.0.3-servicing.25111.13 - 9.0.3-servicing.25111.13 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 + 9.0.4-servicing.25163.5 + 9.0.4-servicing.25163.5 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 2.1.0 - 9.0.3 + 9.0.4 8.0.0 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 8.0.0 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 8.0.4 - 9.0.3 - 9.0.3 + 9.0.4 + 9.0.4 - 9.0.3-servicing.25113.2 - 9.0.3-servicing.25113.2 - 9.0.3 - 9.0.3 + 9.0.4-servicing.25164.6 + 9.0.4-servicing.25164.6 + 9.0.4 + 9.0.4 - 6.13.1-rc.1 - 6.13.1-rc.1 - 6.13.1-rc.1 - 6.13.1-rc.1 - 6.13.1-rc.1 - 6.13.1-rc.1 - 6.13.1-rc.1 - 6.13.1-rc.1 - 6.13.1-rc.1 - 6.13.1-rc.1 - 6.13.1-rc.1 - 6.13.1-rc.1 + 6.13.2-rc.1 + 6.13.2-rc.1 + 6.13.2-rc.1 + 6.13.2-rc.1 + 6.13.2-rc.1 + 6.13.2-rc.1 + 6.13.2-rc.1 + 6.13.2-rc.1 + 6.13.2-rc.1 + 6.13.2-rc.1 + 6.13.2-rc.1 + 6.13.2-rc.1 @@ -156,8 +156,8 @@ - 9.0.0-preview.25076.2 - 3.11.0-beta1.25076.2 + 9.0.0-preview.25123.1 + 3.11.0-beta1.25123.1 @@ -178,65 +178,65 @@ At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> - 17.13.13 - 17.13.13-preview-25112-07 + 17.13.20 + 17.13.20-preview-25162-14 17.11.4 17.12 - 9.0.201 + 9.0.203 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.201-servicing.25112.5 + 9.0.203-servicing.25163.4 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) - 13.9.201-beta.25070.3 + 13.9.202-beta.25154.2 - 4.13.0-3.25112.7 - 4.13.0-3.25112.7 - 4.13.0-3.25112.7 - 4.13.0-3.25112.7 - 4.13.0-3.25112.7 - 4.13.0-3.25112.7 - 4.13.0-3.25112.7 - 4.13.0-3.25112.7 + 4.13.0-3.25155.17 + 4.13.0-3.25155.17 + 4.13.0-3.25155.17 + 4.13.0-3.25155.17 + 4.13.0-3.25155.17 + 4.13.0-3.25155.17 + 4.13.0-3.25155.17 + 4.13.0-3.25155.17 - 9.0.3 - 9.0.3-servicing.25112.20 - 9.0.3-servicing.25112.20 - 9.0.3-servicing.25112.20 - 9.0.3-servicing.25112.20 - 9.0.3-servicing.25112.20 - 9.0.3 - 9.0.3 - 9.0.3-servicing.25112.20 - 9.0.3-servicing.25112.20 - 9.0.3-servicing.25112.20 - 9.0.3-servicing.25112.20 - 9.0.3-servicing.25112.20 + 9.0.4 + 9.0.4-servicing.25164.3 + 9.0.4-servicing.25164.3 + 9.0.4-servicing.25164.3 + 9.0.4-servicing.25164.3 + 9.0.4-servicing.25164.3 + 9.0.4 + 9.0.4 + 9.0.4-servicing.25164.3 + 9.0.4-servicing.25164.3 + 9.0.4-servicing.25164.3 + 9.0.4-servicing.25164.3 + 9.0.4-servicing.25164.3 - 9.0.0-preview.25078.1 - 9.0.0-preview.25078.1 - 9.0.0-preview.25078.1 + 9.0.0-preview.25123.6 + 9.0.0-preview.25123.6 + 9.0.0-preview.25123.6 - 9.0.3-rtm.25113.4 - 9.0.3-rtm.25113.4 + 9.0.4-rtm.25164.2 + 9.0.4-rtm.25164.2 @@ -259,7 +259,7 @@ 2.2.0-beta.19072.10 2.0.0 - 9.0.0-preview.25112.2 + 9.0.0-preview.25163.1 @@ -268,10 +268,10 @@ - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 @@ -329,7 +329,7 @@ 15.0.9617 18.0.9617 - 9.0.3 + 9.0.4 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) 9.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-(?!rtm)[A-z]*[\.]*\d*`)) diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml index d938b60e1bb5..56a090094824 100644 --- a/eng/common/core-templates/steps/generate-sbom.yml +++ b/eng/common/core-templates/steps/generate-sbom.yml @@ -38,7 +38,7 @@ steps: PackageName: ${{ parameters.packageName }} BuildDropPath: ${{ parameters.buildDropPath }} PackageVersion: ${{ parameters.packageVersion }} - ManifestDirPath: ${{ parameters.manifestDirPath }} + ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME) ${{ if ne(parameters.IgnoreDirectories, '') }}: AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}' diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1 index 3e5c1c74a1c5..a0c7d792a76f 100644 --- a/eng/common/generate-sbom-prep.ps1 +++ b/eng/common/generate-sbom-prep.ps1 @@ -4,18 +4,26 @@ Param( . $PSScriptRoot\pipeline-logging-functions.ps1 +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. +$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" +$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_' +$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName + +Write-Host "Artifact name before : $ArtifactName" +Write-Host "Artifact name after : $SafeArtifactName" + Write-Host "Creating dir $ManifestDirPath" + # create directory for sbom manifest to be placed -if (!(Test-Path -path $ManifestDirPath)) +if (!(Test-Path -path $SbomGenerationDir)) { - New-Item -ItemType Directory -path $ManifestDirPath - Write-Host "Successfully created directory $ManifestDirPath" + New-Item -ItemType Directory -path $SbomGenerationDir + Write-Host "Successfully created directory $SbomGenerationDir" } else{ Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." } Write-Host "Updating artifact name" -$artifact_name = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" -replace '["/:<>\\|?@*"() ]', '_' -Write-Host "Artifact name $artifact_name" -Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$artifact_name" +Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName" diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh index d5c76dc827b4..b8ecca72bbf5 100644 --- a/eng/common/generate-sbom-prep.sh +++ b/eng/common/generate-sbom-prep.sh @@ -14,19 +14,24 @@ done scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" . $scriptroot/pipeline-logging-functions.sh + +# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. +artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" +safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" manifest_dir=$1 -if [ ! -d "$manifest_dir" ] ; then - mkdir -p "$manifest_dir" - echo "Sbom directory created." $manifest_dir +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. +sbom_generation_dir="$manifest_dir/$safe_artifact_name" + +if [ ! -d "$sbom_generation_dir" ] ; then + mkdir -p "$sbom_generation_dir" + echo "Sbom directory created." $sbom_generation_dir else Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." fi -artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" echo "Artifact name before : "$artifact_name -# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. -safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" echo "Artifact name after : "$safe_artifact_name export ARTIFACT_NAME=$safe_artifact_name echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name" diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index 605692d2fb77..817555505aa6 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -16,6 +16,7 @@ jobs: parameters: PackageVersion: ${{ parameters.packageVersion }} BuildDropPath: ${{ parameters.buildDropPath }} + ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom publishArtifacts: false # publish artifacts diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index a46b6deb7598..22b49e09d09b 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -42,7 +42,7 @@ [bool]$useInstalledDotNetCli = if (Test-Path variable:useInstalledDotNetCli) { $useInstalledDotNetCli } else { $true } # Enable repos to use a particular version of the on-line dotnet-install scripts. -# default URL: https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.ps1 +# default URL: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.ps1 [string]$dotnetInstallScriptVersion = if (Test-Path variable:dotnetInstallScriptVersion) { $dotnetInstallScriptVersion } else { 'v1' } # True to use global NuGet cache instead of restoring packages to repository-local directory. @@ -262,7 +262,7 @@ function GetDotNetInstallScript([string] $dotnetRoot) { if (!(Test-Path $installScript)) { Create-Directory $dotnetRoot $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit - $uri = "https://dotnet.microsoft.com/download/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1" + $uri = "https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1" Retry({ Write-Host "GET $uri" diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 1159726a10fd..01b09b65796c 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -54,7 +54,7 @@ warn_as_error=${warn_as_error:-true} use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} # Enable repos to use a particular version of the on-line dotnet-install scripts. -# default URL: https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh +# default URL: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. @@ -295,7 +295,7 @@ function with_retries { function GetDotNetInstallScript { local root=$1 local install_script="$root/dotnet-install.sh" - local install_script_url="https://dotnet.microsoft.com/download/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh" + local install_script_url="https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh" if [[ ! -a "$install_script" ]]; then mkdir -p "$root" diff --git a/global.json b/global.json index 8156db5f7137..4100043a4e4e 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "tools": { - "dotnet": "9.0.103", + "dotnet": "9.0.104", "runtimes": { "dotnet": [ "$(VSRedistCommonNetCoreSharedFrameworkx6490PackageVersion)" @@ -17,8 +17,8 @@ "cmake": "latest" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25111.5", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25111.5", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25164.2", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25164.2", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24217.1" } diff --git a/src/Cli/dotnet/NugetPackageDownloader/NuGetPackageDownloader.cs b/src/Cli/dotnet/NugetPackageDownloader/NuGetPackageDownloader.cs index 87de51b002fe..33a27993dfd1 100644 --- a/src/Cli/dotnet/NugetPackageDownloader/NuGetPackageDownloader.cs +++ b/src/Cli/dotnet/NugetPackageDownloader/NuGetPackageDownloader.cs @@ -38,6 +38,10 @@ internal class NuGetPackageDownloader : INuGetPackageDownloader private readonly Dictionary _sourceRepositories; private readonly bool _shouldUsePackageSourceMapping; + /// + /// If true, the package downloader will verify the signatures of the packages it downloads. + /// Temporarily disabled for macOS and Linux. + /// private readonly bool _verifySignatures; private readonly VerbosityOptions _verbosityOptions; private readonly string _currentWorkingDirectory; @@ -65,7 +69,9 @@ public NuGetPackageDownloader( _restoreActionConfig = restoreActionConfig ?? new RestoreActionConfig(); _retryTimer = timer; _sourceRepositories = new(); - _verifySignatures = verifySignatures; + // If windows or env variable is set, verify signatures + _verifySignatures = verifySignatures && (OperatingSystem.IsWindows() ? true + : bool.TryParse(Environment.GetEnvironmentVariable(NuGetSignatureVerificationEnabler.DotNetNuGetSignatureVerification), out var shouldVerifySignature) ? shouldVerifySignature : OperatingSystem.IsLinux()); _cacheSettings = new SourceCacheContext { @@ -130,8 +136,17 @@ public async Task DownloadPackageAsync(PackageId packageId, packageVersion.ToNormalizedString())); } - await VerifySigning(nupkgPath, repository); - + // Delete file if verification fails + try + { + await VerifySigning(nupkgPath, repository); + } + catch (NuGetPackageInstallerException) + { + File.Delete(nupkgPath); + throw; + } + return nupkgPath; } diff --git a/src/Cli/dotnet/ReleasePropertyProjectLocator.cs b/src/Cli/dotnet/ReleasePropertyProjectLocator.cs index 2d52334b58f1..b09d0a345e6f 100644 --- a/src/Cli/dotnet/ReleasePropertyProjectLocator.cs +++ b/src/Cli/dotnet/ReleasePropertyProjectLocator.cs @@ -176,7 +176,7 @@ public IEnumerable GetCustomDefaultConfigurationValueIfSpecified() Parallel.ForEach(sln.SolutionProjects.AsEnumerable(), (project, state) => { #pragma warning disable CS8604 // Possible null reference argument. - string projectFullPath = Path.Combine(Path.GetDirectoryName(slnFullPath), project.FilePath); + string projectFullPath = Path.GetFullPath(project.FilePath, Path.GetDirectoryName(slnFullPath)); #pragma warning restore CS8604 // Possible null reference argument. if (IsUnanalyzableProjectInSolution(project, projectFullPath)) return; @@ -220,7 +220,7 @@ public IEnumerable GetCustomDefaultConfigurationValueIfSpecified() foreach (var project in sln.SolutionProjects.AsEnumerable()) { #pragma warning disable CS8604 // Possible null reference argument. - string projectFullPath = Path.Combine(Path.GetDirectoryName(slnPath), project.FilePath); + string projectFullPath = Path.GetFullPath(project.FilePath, Path.GetDirectoryName(slnPath)); #pragma warning restore CS8604 // Possible null reference argument. if (IsUnanalyzableProjectInSolution(project, projectFullPath)) continue; diff --git a/src/Cli/dotnet/commands/dotnet-workload/restore/WorkloadRestoreCommand.cs b/src/Cli/dotnet/commands/dotnet-workload/restore/WorkloadRestoreCommand.cs index f25690d52963..40e61778c979 100644 --- a/src/Cli/dotnet/commands/dotnet-workload/restore/WorkloadRestoreCommand.cs +++ b/src/Cli/dotnet/commands/dotnet-workload/restore/WorkloadRestoreCommand.cs @@ -136,10 +136,11 @@ internal static List DiscoverAllProjects(string currentDirectory, .Select(Path.GetFullPath).ToList(); } - foreach (string file in slnFiles) + foreach (string solutionFilePath in slnFiles) { - var solutionFile = SlnFileFactory.CreateFromFileOrDirectory(file); - projectFiles.AddRange(solutionFile.SolutionProjects.Select(p => p.FilePath)); + var solutionFile = SlnFileFactory.CreateFromFileOrDirectory(solutionFilePath); + projectFiles.AddRange(solutionFile.SolutionProjects.Select( + p => Path.GetFullPath(p.FilePath, Path.GetDirectoryName(solutionFilePath)))); } if (projectFiles.Count == 0) diff --git a/src/Containers/Microsoft.NET.Build.Containers/Resources/Strings.Designer.cs b/src/Containers/Microsoft.NET.Build.Containers/Resources/Strings.Designer.cs index ec4966caaa27..6a4c5f63a1e5 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/Resources/Strings.Designer.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/Resources/Strings.Designer.cs @@ -654,7 +654,6 @@ internal static string NormalizedContainerName { } } - /// /// Looks up a localized string similar to Unable to create tarball for oci image with multiple tags.. /// diff --git a/src/Containers/Microsoft.NET.Build.Containers/Tasks/CreateNewImage.cs b/src/Containers/Microsoft.NET.Build.Containers/Tasks/CreateNewImage.cs index 4c01694e7604..f981281448c7 100644 --- a/src/Containers/Microsoft.NET.Build.Containers/Tasks/CreateNewImage.cs +++ b/src/Containers/Microsoft.NET.Build.Containers/Tasks/CreateNewImage.cs @@ -143,6 +143,24 @@ internal async Task ExecuteAsync(CancellationToken cancellationToken) } } + // forcibly change the media type if required + if (ImageFormat is not null) + { + if (Enum.TryParse(ImageFormat, out var imageFormat)) + { + imageBuilder.ManifestMediaType = imageFormat switch + { + KnownImageFormats.Docker => SchemaTypes.DockerManifestV2, + KnownImageFormats.OCI => SchemaTypes.OciManifestV1, + _ => imageBuilder.ManifestMediaType // should be impossible unless we add to the enum + }; + } + else + { + Log.LogErrorWithCodeFromResources(nameof(Strings.InvalidContainerImageFormat), ImageFormat, string.Join(",", Enum.GetValues())); + } + } + Layer newLayer = Layer.FromDirectory(PublishDirectory, WorkingDirectory, imageBuilder.IsWindows, imageBuilder.ManifestMediaType); imageBuilder.AddLayer(newLayer); imageBuilder.SetWorkingDirectory(WorkingDirectory); diff --git a/src/Containers/packaging/build/Microsoft.NET.Build.Containers.targets b/src/Containers/packaging/build/Microsoft.NET.Build.Containers.targets index 694e1dc8372f..e2176eae697c 100644 --- a/src/Containers/packaging/build/Microsoft.NET.Build.Containers.targets +++ b/src/Containers/packaging/build/Microsoft.NET.Build.Containers.targets @@ -255,8 +255,8 @@ BaseRegistry="$(ContainerBaseRegistry)" BaseImageName="$(ContainerBaseName)" BaseImageTag="$(ContainerBaseTag)" - ImageFormat="$(ContainerImageFormat)" BaseImageDigest="$(ContainerBaseDigest)" + ImageFormat="$(ContainerImageFormat)" LocalRegistry="$(LocalRegistry)" OutputRegistry="$(ContainerRegistry)" ArchiveOutputPath="$(ContainerArchiveOutputPath)" diff --git a/src/SourceBuild/content/eng/finish-source-only.proj b/src/SourceBuild/content/eng/finish-source-only.proj index a1d68f88d40b..67f3dae1fe93 100644 --- a/src/SourceBuild/content/eng/finish-source-only.proj +++ b/src/SourceBuild/content/eng/finish-source-only.proj @@ -114,12 +114,22 @@ Outputs="$(BaseIntermediateOutputPath)ReportPoisonUsage.complete" > - - + + - + - + + + + + + + + + + + diff --git a/test/Microsoft.NET.Build.Tests/GivenThatWeWantMSBuildToRespectCustomCulture.cs b/test/Microsoft.NET.Build.Tests/GivenThatWeWantMSBuildToRespectCustomCulture.cs index b52fdb9dfecc..f273b92e7b49 100644 --- a/test/Microsoft.NET.Build.Tests/GivenThatWeWantMSBuildToRespectCustomCulture.cs +++ b/test/Microsoft.NET.Build.Tests/GivenThatWeWantMSBuildToRespectCustomCulture.cs @@ -27,11 +27,9 @@ public void SupportRespectAlreadyAssignedItemCulture_ByDefault_ForDotnet9(string new FileInfo(Path.Combine(outputDirectory, "test-2", "MSBuildCultureResourceGeneration.resources.dll")).Should().Exist(); } + [Theory] [InlineData("net7.0")] [InlineData("net6.0")] - // Until MSBuild 17.13 is merged into FullFW MSBuild in sdk tests - the WarnOnCultureOverwritten - // is not supported - and the build will fail copy (more details in the last test). - [CoreMSBuildOnlyTheory] public void SupportRespectAlreadyAssignedItemCulture_IsNotSupported_BuildShouldWarn(string targetFramework) { var testAsset = _testAssetsManager @@ -46,25 +44,5 @@ public void SupportRespectAlreadyAssignedItemCulture_IsNotSupported_BuildShouldW // warning MSB3002: Explicitly set culture "test-1" for item "Resources.test-1.resx" was overwritten with inferred culture "", because 'RespectAlreadyAssignedItemCulture' property was not set. .HaveStdOutContaining("warning MSB3002:"); } - - [Theory] - [InlineData("net7.0")] - [InlineData("net6.0")] - // Is this Failing? Check if WarnOnCultureOverwritten hasn't been made a default opt-in in sdk or MSBuild. - // - // Without explicit opt-in via WarnOnCultureOverwritten - the test will fail, as - // proper recognition of custom cultures in RAR is not supported and hence the build will fail during copy: - // - // Microsoft.Common.CurrentVersion.targets(4959,5): error MSB3030: Could not copy the file "obj\Debug\net7.0\test-1\MSBuildCultureResourceGeneration.resources.dll" because it was not found. - public void SupportRespectAlreadyAssignedItemCulture_IsNotSupported_BuildShouldFail(string targetFramework) - { - var testAsset = _testAssetsManager - .CopyTestAsset("MSBuildCultureResourceGeneration", identifier: targetFramework) - .WithSource() - .WithTargetFramework(targetFramework); - - var buildCommand = new BuildCommand(testAsset); - buildCommand.Execute().Should().Fail(); - } } } diff --git a/test/TestAssets/TestProjects/TestAppWithSlnAndCsprojInParentDir/Dir/App.sln b/test/TestAssets/TestProjects/TestAppWithSlnAndCsprojInParentDir/Dir/App.sln new file mode 100644 index 000000000000..8eca2536691f --- /dev/null +++ b/test/TestAssets/TestProjects/TestAppWithSlnAndCsprojInParentDir/Dir/App.sln @@ -0,0 +1,5 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26006.2 +MinimumVisualStudioVersion = 10.0.40219.1 diff --git a/test/TestAssets/TestProjects/TestAppWithSlnAndCsprojInParentDir/Dir/App.slnx b/test/TestAssets/TestProjects/TestAppWithSlnAndCsprojInParentDir/Dir/App.slnx new file mode 100644 index 000000000000..4e2253ddceed --- /dev/null +++ b/test/TestAssets/TestProjects/TestAppWithSlnAndCsprojInParentDir/Dir/App.slnx @@ -0,0 +1 @@ + diff --git a/test/TestAssets/TestProjects/TestAppWithSlnAndCsprojInParentDir/Lib/Lib.csproj b/test/TestAssets/TestProjects/TestAppWithSlnAndCsprojInParentDir/Lib/Lib.csproj new file mode 100644 index 000000000000..c350d4032840 --- /dev/null +++ b/test/TestAssets/TestProjects/TestAppWithSlnAndCsprojInParentDir/Lib/Lib.csproj @@ -0,0 +1,7 @@ + + + + netstandard1.4 + + + diff --git a/test/TestAssets/TestProjects/TestAppWithSlnAndCsprojInParentDir/Lib/Library.cs b/test/TestAssets/TestProjects/TestAppWithSlnAndCsprojInParentDir/Lib/Library.cs new file mode 100644 index 000000000000..71a4d48322c7 --- /dev/null +++ b/test/TestAssets/TestProjects/TestAppWithSlnAndCsprojInParentDir/Lib/Library.cs @@ -0,0 +1,15 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System; + +namespace Lib +{ + public class Library + { + public static string GetMessage() + { + return "Message from Lib"; + } + } +} diff --git a/test/dotnet-sln.Tests/GivenDotnetSlnAdd.cs b/test/dotnet-sln.Tests/GivenDotnetSlnAdd.cs index 6009f9c04b97..ebb82381c743 100644 --- a/test/dotnet-sln.Tests/GivenDotnetSlnAdd.cs +++ b/test/dotnet-sln.Tests/GivenDotnetSlnAdd.cs @@ -244,10 +244,11 @@ public void WhenNestedProjectIsAddedSolutionFoldersAreCreated(string solutionCom } [Theory] - [InlineData("sln", true, ".sln")] - [InlineData("sln", false, ".sln")] - [InlineData("solution", true, ".sln")] - [InlineData("solution", false, ".sln")] + // needs https://github.com/microsoft/vs-solutionpersistence/pull/101 + // [InlineData("sln", true, ".sln")] + // [InlineData("sln", false, ".sln")] + // [InlineData("solution", true, ".sln")] + // [InlineData("solution", false, ".sln")] [InlineData("sln", true, ".slnx")] [InlineData("solution", false, ".slnx")] public void WhenNestedProjectIsAddedSolutionFoldersAreCreatedBuild(string solutionCommand, bool fooFirst, string solutionExtension) @@ -1096,6 +1097,29 @@ public void WhenSolutionFolderIsPassedWithDirectorySeparatorFolderStructureIsCor .Should().BeVisuallyEquivalentTo(expectedSlnContents); } + [Theory] + [InlineData("sln", ".sln")] + [InlineData("sln", ".slnx")] + [InlineData("solution", ".sln")] + [InlineData("solution", ".slnx")] + public async Task WhenAddingProjectOutsideDirectoryItShouldNotAddSolutionFolders(string solutionCommand, string solutionExtension) + { + var projectDirectory = _testAssetsManager + .CopyTestAsset("TestAppWithSlnAndCsprojInParentDir", identifier: $"GivenDotnetSlnAdd-{solutionCommand}{solutionExtension}") + .WithSource() + .Path; + var projectToAdd = Path.Combine("..", "Lib", "Lib.csproj"); + var cmd = new DotnetCommand(Log) + .WithWorkingDirectory(Path.Join(projectDirectory, "Dir")) + .Execute(solutionCommand, $"App{solutionExtension}", "add", projectToAdd); + cmd.Should().Pass(); + // Should have no solution folders + ISolutionSerializer serializer = SolutionSerializers.GetSerializerByMoniker(Path.Join(projectDirectory, "Dir", $"App{solutionExtension}")); + SolutionModel solution = await serializer.OpenAsync(Path.Join(projectDirectory, "Dir", $"App{solutionExtension}"), CancellationToken.None); + solution.SolutionProjects.Count.Should().Be(1); + solution.SolutionFolders.Count.Should().Be(0); + } + private string GetExpectedSlnContents( string slnPath, string slnTemplateName,