diff --git a/.config/git-merge-flow-config.jsonc b/.config/git-merge-flow-config.jsonc index 03c303d37e9..6650f6299ff 100644 --- a/.config/git-merge-flow-config.jsonc +++ b/.config/git-merge-flow-config.jsonc @@ -33,7 +33,7 @@ // Automate opening PRs to merge msbuild's vs17.12 (SDK 9.0.1xx) into vs17.13 (SDK 9.0.2xx) "vs17.12": { "MergeToBranch": "vs17.13" - } + }, // MSBuild latest release to main "vs17.13": { "MergeToBranch": "main" diff --git a/.config/tsaoptions.json b/.config/tsaoptions.json index 4069463a23e..53a4a691178 100644 --- a/.config/tsaoptions.json +++ b/.config/tsaoptions.json @@ -2,9 +2,9 @@ "instanceUrl": "https://devdiv.visualstudio.com/", "template": "TFSDEVDIV", "projectName": "DEVDIV", - "areaPath": "DevDiv\\NET Tools\\MSBuild", + "areaPath": "DevDiv\\NET Tools Prague\\MSBuild", "iterationPath": "DevDiv", "notificationAliases": [ "msbtm@microsoft.com" ], "repositoryName": "MSBuild", "codebaseName": "MSBuild" -} \ No newline at end of file +} diff --git a/azure-pipelines/vs-insertion-experimental.yml b/azure-pipelines/vs-insertion-experimental.yml index 4d39eb27c24..ab2ce364131 100644 --- a/azure-pipelines/vs-insertion-experimental.yml +++ b/azure-pipelines/vs-insertion-experimental.yml @@ -17,6 +17,23 @@ resources: name: 1ESPipelineTemplates/1ESPipelineTemplates ref: refs/tags/release +parameters: + - name: TargetBranch + type: string + default: main + displayName: 'Insertion Target Branch (select for manual insertion)' + values: + - main + - rel/d17.14 + - rel/d17.13 + - rel/d17.12 + - rel/d17.11 + - rel/d17.10 + - rel/d17.8 + - rel/d17.6 + - rel/d17.3 + - rel/d17.0 + variables: - name: TeamName value: msbuild @@ -29,7 +46,7 @@ variables: - name: ArtifactPackagesPath value: $(Build.ArtifactStagingDirectory)/PackageArtifacts - - name: MSBuildPackagePattern + - name: MSBuildPackagePattern value: '$(ArtifactPackagesPath)/Microsoft.Build.*.nupkg' - name: StringToolsPackagePattern value: '$(ArtifactPackagesPath)/Microsoft.NET.StringTools*.nupkg' @@ -118,7 +135,7 @@ extends: LinkWorkItemsToPR: true TeamName: $(TeamName) TeamEmail: $(TeamEmail) - TargetBranch: main + TargetBranch: ${{ parameters.TargetBranch }} InsertionPayloadName: $(InsertPayloadName) PackagePropsValues: VS.ExternalAPIs.MSBuild=$(MSBuild_ExtApisPackageVersion);Microsoft.Build=$(MicrosoftNETStringToolsPackageVersion);Microsoft.Build.Framework=$(MicrosoftNETStringToolsPackageVersion);Microsoft.Build.Tasks.Core=$(MicrosoftNETStringToolsPackageVersion);Microsoft.Build.Utilities.Core=$(MicrosoftNETStringToolsPackageVersion);Microsoft.NET.StringTools=$(MicrosoftNETStringToolsPackageVersion) InsertionDescription: $(InsertDescription) @@ -126,4 +143,4 @@ extends: DefaultConfigValues: $(InsertConfigValues) InsertionReviewers: MSBuild CustomScriptExecutionCommand: $(InsertCustomScriptExecutionCommand) - InsertionBuildPolicy: Request Perf DDRITs \ No newline at end of file + InsertionBuildPolicy: Request Perf DDRITs diff --git a/documentation/release-checklist.md b/documentation/release-checklist.md index fe64e8b61c2..e68725deee1 100644 --- a/documentation/release-checklist.md +++ b/documentation/release-checklist.md @@ -13,33 +13,45 @@ ## At release time Before starting the process: -- [ ] If the release is being cut more than a few days before the VS-side snap, run insertions manually OR redirect MSBuild release branch +- [ ] If the release is being cut more than a few days before the VS-side snap, run insertions manually OR redirect MSBuild release branch - [ ] Disable scheduled run of [MSBuild VS Insertion pipeline](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=24295) (our {{NEXT_VERSION}} builds don't have a place to go in VS yet) by: Edit -> ... -> Triggers -> add a schedule on a dead branch (this overrides the YAML defined once-per-day schedule for main). Manual pipeline run: select as input resource the to-be-inserted "MSBuild" pipeline run on branch `vs{{THIS_RELEASE_VERSION}}` and VS TargetBranch `main`. OR - [ ] If the release is being cut more than couple of weeks modify [YAML](https://github.com/dotnet/msbuild/tree/main/azure-pipelines/vs-insertion.yml) (and merge to affected MSBuild branches) of the [VS insertion pipeline](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=24295) so that it schedules insertions from MSBuild `vs{{THIS_RELEASE_VERSION}}` to VS `main`. Keep scheduled daily insertions to simplify your workflow and exclude `vs{{THIS_RELEASE_VERSION}}` from triggering insertion on each commit. ### Branching from main +- [ ] Ensure planned branch association to the channel + - [ ] Check if the association exist (it is now recommended to create it as a part of the previous release checklist):\ + `darc get-default-channels --channel "VS {{THIS_RELEASE_VERSION}}" --branch vs{{THIS_RELEASE_VERSION}} --source-repo https://github.com/dotnet/msbuild` + - [ ] This step is done if output shows active expected association such as:\ + `(5997) https://github.com/dotnet/msbuild @ vs17.13 -> VS 17.13` + - [ ] If the association is missing - we'll see output similar to:\ + `No matching channels were found.` + - [ ] In such case - associate the `vs{{THIS_RELEASE_VERSION}}` branch with the next VS {{THIS_RELEASE_VERSION}} release channel \ + `darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" --branch vs{{THIS_RELEASE_VERSION}} --repo https://github.com/dotnet/msbuild` - [ ] If the new version's branch was created before the Visual Studio fork: fast-forward merge the correct commit (the one that is currently inserted to VS main) to the `vs{{THIS_RELEASE_VERSION}}` branch \ e.g.: `git push upstream 2e6f2ff7ea311214255b6b2ca5cc0554fba1b345:refs/heads/vs17.10` \ _(This is for the case where we create the branch too early and want it to be based actually on a different commit. If you waited until a good point in time with `main` in a clean state, just branch off and you are done. The branch should point to a good, recent spot, so the final-branding PR goes in on top of the right set of commits.)_ - [ ] Update the branch merge flow in `.config/git-merge-flow-config.jsonc` file to have the currently-in-servicing branches. -- [ ] Create {{NEXT_VERSION}} branding PR (in main) including public API baseline package version change: {{URL_OF_NEXT_VERSION_BRANDING_PR}}. +- [ ] Create {{NEXT_VERSION}} branding PR (in main) including public API baseline package version change: {{URL_OF_NEXT_VERSION_BRANDING_PR}}. - In the file `eng/Versions.props` Update the `VersionPrefix` to `{{NEXT_VERSION}}` and `PackageValidationBaselineVersion` set to a latest internally available {{THIS_RELEASE_VERSION}} preview version in the [internal dnceng dotnet-tools feed](https://dev.azure.com/dnceng/internal/_artifacts/feed/dotnet-tools-internal). It might be needed to update `CompatibilitySuppressions.xml` files. See [this documentation](https://learn.microsoft.com/en-us/dotnet/fundamentals/apicompat/overview) for more details. You can update `CompatibilitySuppressions.xml` files by running -`dotnet pack MSBuild.Dev.slnf /p:ApiCompatGenerateSuppressionFile=true`. +`dotnet pack MSBuild.Dev.slnf /p:ApiCompatGenerateSuppressionFile=true`. - [ ] When VS main snaps to {{THIS_RELEASE_VERSION}} and updates its version to {{NEXT_VERSION}}, modify the [MSBuild VS Insertion pipeline](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=24295) YAML so that it flows from MSBuild main to VS main. - - [ ] Update AutoTargetBranch selection in the [YAML](https://github.com/dotnet/msbuild/tree/main/azure-pipelines/vs-insertion.yml) (add to parameters and make new AutoTargetBranch rule by copying it from existing ones) of the [MSBuild VS Insertion pipeline](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=24295) to insert MSBuild `vs{{THIS_RELEASE_VERSION}}` to the corresponding VS branch `rel/d{{THIS_RELEASE_VERSION}}`. + - [ ] Update AutoTargetBranch selection in the [YAML](../azure-pipelines/vs-insertion.yml) (add to parameters and make new AutoTargetBranch rule by copying it from existing ones) of the [MSBuild VS Insertion pipeline](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=24295) to insert MSBuild `vs{{THIS_RELEASE_VERSION}}` to the corresponding VS branch `rel/d{{THIS_RELEASE_VERSION}}`. + - [ ] Add `rel/d{{THIS_RELEASE_VERSION}}` case to TargetBranch parameter in [Experimental insertion](../azure-pipelines/vs-insertion-experimental.yml) - [ ] Set scheduled insertion for main and remove exclusion of `vs{{THIS_RELEASE_VERSION}}` triggering on each commit if added earlier. -- [ ] Merge {{NEXT_VERSION}} branding PR +- [ ] Merge {{NEXT_VERSION}} branding PR ### Adjust DARC channels and subscriptions - [ ] Remove the `main` to old release channel ({{THIS_RELEASE_VERSION}}) default channel \ `darc delete-default-channel --repo https://github.com/dotnet/msbuild --branch main --channel "VS {{THIS_RELEASE_VERSION}}"` - [ ] Associate the `main` branch with the next release channel \ -`darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" --branch main --repo https://github.com/dotnet/msbuild` +`darc add-default-channel --channel "VS {{NEXT_VERSION}}" --branch main --repo https://github.com/dotnet/msbuild` +- [ ] Prepare the same channel association as well for the next release branch (vs{{NEXT_VERSION}}) - as a preparation for a next release:\ + `darc add-default-channel --channel "VS {{NEXT_VERSION}}" --branch vs{{NEXT_VERSION}} --repo https://github.com/dotnet/msbuild` - [ ] Check subscriptions for the forward-looking channel `VS {{NEXT_VERSION}}` and update as necessary (for instance, SDK's `main` branch should usually be updated, whereas release branches often should not be \ `darc get-subscriptions --exact --source-repo https://github.com/dotnet/msbuild --channel "VS {{THIS_RELEASE_VERSION}}"` -- [ ] Update channel VS {{THIS_RELEASE_VERSION}} to VS {{NEXT_VERSION}} for the sdk main subscription and any others from the previous step -`darc update-subscription --id sdk_main_branch_id` + - [ ] Update channel VS {{THIS_RELEASE_VERSION}} to VS {{NEXT_VERSION}} for the sdk main subscription and any others from the previous step + `darc update-subscription --id --channel "VS {{NEXT_VERSION}}"` - [ ] Ensure that the current release channel `VS {{THIS_RELEASE_VERSION}}` is associated with the correct release branch\ `darc get-default-channels --source-repo https://github.com/dotnet/msbuild --branch vs{{THIS_RELEASE_VERSION}}` \ if it is not, `darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" --branch vs{{THIS_RELEASE_VERSION}} --repo https://github.com/dotnet/msbuild` @@ -56,10 +68,12 @@ if it is not, `darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" - [ ] Arcade: - Based on .NET version channel--does not change every MSBuild release - `darc get-subscriptions --exact --target-repo https://github.com/dotnet/msbuild --source-repo https://github.com/dotnet/arcade` +- [ ] Make sure the non-infrastructure dependencies (currently Roslyn and Nuget) are set to 'disabled' (` - Enabled: False` in the `darc get-subscriptions` output) - we do not want to automatically bump them. The version updates should be explicitly driven by SDK or VS. +- [ ] Any missing subscription need to be added via `darc add-subscription` command, any misconfigured subscription needs to be edit via `darc update-subscription` command (for additional required and optional parameters run with `--help`) ### Adjust pipelines / releases - [ ] Fix OptProf data flow for the new vs{{THIS_RELEASE_VERSION}} branch - - [ ] Run the [official build](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=9434) for vs{{THIS_RELEASE_VERSION}} without OptProf (set `SkipApplyOptimizationData` variable in 'Advanced options' section of the 'Run pipeline' menu to `true`) or alternatively with the latest Opt-Prof collected for the main branch (set `Optional OptProfDrop Override` to the drop path of the collected data, which could be found in the logs of the pipeline: Windows_NT -> Build -> search for `OptimizationData`). + - [ ] Run the [official build](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=9434) for vs{{THIS_RELEASE_VERSION}} without OptProf (set `SkipApplyOptimizationData` variable in 'Advanced options' section of the 'Run pipeline' menu to `true`) or alternatively with the latest Opt-Prof collected for the main branch (set `Optional OptProfDrop Override` to the drop path of the collected data, which could be found in the logs of the pipeline: Windows_NT -> Build -> search for `OptimizationData`). - [ ] Check that the [OptProf data collection](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=17389) pipeline run is triggered for vs{{THIS_RELEASE_VERSION}}. If not, run manually ('Run pipeline' in upper right) - [ ] Run the [official build](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=9434) for vs{{THIS_RELEASE_VERSION}} with no extra customization - OptProf should succeed now - [ ] Restore [MSBuild VS Insertion pipeline](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=24295) to the default [YAML](https://github.com/dotnet/msbuild/tree/main/azure-pipelines/vs-insertion.yml) defined schedule, by removing all triggers from Edit -> ... -> Triggers. @@ -71,14 +85,17 @@ if it is not, `darc add-default-channel --channel "VS {{THIS_RELEASE_VERSION}}" - [ ] Create and merge a PR in main to update a localization version comment in setting [`EnableReleaseOneLocBuild`](https://github.com/dotnet/msbuild/blob/main/.vsts-dotnet.yml) to set up the merge conflict when this line will be updated in the release branch. ### Final branding -- [ ] Prepare final branding PR for `vs{{THIS_RELEASE_VERSION}}`: {{URL_OF_FINAL_BRANDING_PR}} +- [ ] Prepare final branding PR for `vs{{THIS_RELEASE_VERSION}}`: {{URL_OF_FINAL_BRANDING_PR}} \ + Edit Version.props file - add `release` as a suffix (on same line! - to intentionaly make it merge conflict on flows to main) after the `VersionPrefix` \ + e.g.: #11130, #10697 - [ ] Merge final branding to `vs{{THIS_RELEASE_VERSION}}` branch - [ ] Update perfstar MSBuild insertions configuration: [example PR](https://dev.azure.com/devdiv/DevDiv/_git/dotnet-perfstar/pullrequest/522843): {{URL_OF_PERFSTAR_PR}} -- [ ] Note down the build (will be helpful for requesting nuget packages publishing): {{URL_OF_BUILD}} - [ ] Get M2 or QB approval as necessary per the VS schedule - [ ] Merge to VS (babysit the automatically generated VS insertion PR https://devdiv.visualstudio.com/DevDiv/_git/VS/pullrequests for the MSBuild commit noted in above step): {{URL_OF_VS_INSERTION}} + The PR will be helpful for requesting nuget packages publishing - as it contains the inserted packages versions + - [ ] Respond to the 'VS xyz package stabilization' email - with the merged insertion PR (as nowVS is on stable version). - [ ] Update the PackageValidationBaselineVersion to the latest released version ({{THIS_RELEASE_VERSION}}.0) - this might require temporary addition of the [build artifacts feed](https://github.com/dotnet/msbuild/blob/29397b577e3ec0fe0c7650c3ab0400909655dc88/NuGet.config#L9) as the new version is not yet added to the official feeds (this is post release). This can trigger a high severity CG error (https://eng.ms/docs/cloud-ai-platform/devdiv/one-engineering-system-1es/1es-docs/secure-supply-chain/how-to-securely-configure-package-source-files) - however it should be fine to keep this temporary feed untill the release. -- [ ] Update the requested SDK version for bootstrap folder (the `BootstrapSdkVersion` property in [Versions.props](https://github.com/dotnet/msbuild/blob/main/eng/Versions.props)) and buildToolCommand/_InitializeBuildToolCommand values in cibuild_bootstrapped_msbuild scripts if a fresh sdk was released (released runtimes and associated sdk versions can be checked here - https://dotnet.microsoft.com/download/visual-studio-sdks - make sure to always check the details of the appropriate targeted version of .NET for the matching latest version of SDK). +- [ ] Update the requested SDK version for bootstrap folder (the `BootstrapSdkVersion` property in [Versions.props](https://github.com/dotnet/msbuild/blob/main/eng/Versions.props)) if a fresh sdk was released (released runtimes and associated sdk versions can be checked here - https://dotnet.microsoft.com/download/visual-studio-sdks - make sure to always check the details of the appropriate targeted version of .NET for the matching latest version of SDK). ## ASAP On/After GA: @@ -86,7 +103,7 @@ Timing based on the [(Microsoft-internal) release schedule](https://dev.azure.co - [ ] Push packages to nuget.org (not currently automated, contact dnceng - search "Publish MSBuild 17.6 to NuGet.org" email subject for template). - Following packages should be published (`THIS_RELEASE_EXACT_VERSION` is equal to `VersionPrefix` that comes form the eng\Version.props, that were part of the build we are trying to get published): + Following packages should be published (`THIS_RELEASE_EXACT_VERSION` is equal to `VersionPrefix` that comes form the eng\Version.props, that were part of the build we are trying to get published, it is as well part of the VS insertion PR noted above): - Microsoft.Build.Utilities.Core.{{THIS_RELEASE_EXACT_VERSION}}.nupkg - Microsoft.Build.{{THIS_RELEASE_EXACT_VERSION}}.nupkg - Microsoft.Build.Framework.{{THIS_RELEASE_EXACT_VERSION}}.nupkg @@ -94,7 +111,7 @@ Timing based on the [(Microsoft-internal) release schedule](https://dev.azure.co - Microsoft.Build.Tasks.Core.{{THIS_RELEASE_EXACT_VERSION}}.nupkg - Microsoft.NET.StringTools.{{THIS_RELEASE_EXACT_VERSION}}.nupkg - Microsoft.Build.Templates.{{THIS_RELEASE_EXACT_VERSION}}.nupkg - + **Note:** Microsoft.Build.Conversion.Core and Microsoft.Build.Engine are **not** part of the list. Microsoft.Build.Templates **is** part of the list. Those 3 packages are a difference to the historic publishing list. - [ ] Publish docs: submit reference request at https://aka.ms/publishondocs diff --git a/documentation/specs/proposed/telemetry-onepager.md b/documentation/specs/proposed/telemetry-onepager.md new file mode 100644 index 00000000000..5bc8f22f9ce --- /dev/null +++ b/documentation/specs/proposed/telemetry-onepager.md @@ -0,0 +1,77 @@ +# Telemetry + +We want to implement telemetry collection for VS/MSBuild.exe scenarios where we are currently not collecting data. VS OpenTelemetry initiative provides a good opportunity to use their infrastructure and library. +There is some data we collect via SDK which we want to make accessible. + +## Goals and Motivation + +We have limited data about usage of MSBuild by our customers in VS and no data about usage of standalone msbuild.exe. +This limits us in prioritization of features and scenarios to optimize performance for. +Over time we want to have comprehensive insight into how MSBuild is used in all scenarios. Collecting such a data without any constraints nor limitations would however be prohibitively expensive (from the data storage PoV and possibly as well from the client side performance impact PoV). Ability to sample / configure the collection is an important factor in deciding the instrumentation and collection tech stack. Implementing telemetry via VS OpenTelemetry initiative would give us this ability in the future. + +Goal: To have relevant data in that is actionable for decisions about development. Measuring real world performance impact of features (e.g. BuildCheck). Easily extensible telemetry infrastructure if we want to measure a new datapoint. + +## Impact +- Better planning of deployment of forces in MSBuild by product/team management. +- Customers can subscribe to telemetry locally to have data in standardized OpenTelemetry format + +## Stakeholders +- @Jan(Krivanek|Provaznik) design and implementation of telemetry via VS OTel. @ - using data we already have from SDK. +- @maridematte - documenting + dashboarding currently existing datapoints. +- MSBuild Team+Management – want insights from builds in VS +- VS OpenTelemetry team – provide support for VS OpenTelemetry collector library, want successful adoption +- SourceBuild – consulting and approving usage of OpenTelemetry +- MSBuild PM @baronfel – representing customers who want to monitor their builds locally + +### V1 Successful handover +- Shipped to Visual Studio +- Data queryable in Kusto +- Dashboards (even for pre-existing data - not introduced by this work) +- Customers are able to monitor with OpenTelemetry collector of choice (can be cut) + +## Risks +- Performance regression risks - it's another thing MSBuild would do and if the perf hit would be too bad it would need mitigation effort. +- It introduces a closed source dependency for VS and MSBuild.exe distribution methods which requires workarounds to remain compatible with SourceBuild policy (conditional compilation/build). +- Using a new VS API - might have gaps +- storage costs +- Potential additional costs and delays due to compliance with SourceBuild/VS data. + +## V1 Cost +5 months of .5 developer's effort ~ 50 dev days (dd) + +20-30dd JanPro OTel design + implementation, 10-15dd JanK design + implementation, 5-10dd Mariana/someone getting available data in order/"data science"/dashboards + external documentation + +Uncertainties: +It’s an exploratory project for VS OpenTelemetry, we'll be their first OSS component, so there might come up issues. SourceBuild compliance could introduce delays. + +## Plan +### V1 scope +- Collected data point definition +- Instrumented data points (as an example how the instrumentation and collection works) +- Telemetry sent to VS Telemetry in acceptable quantity +- Dashboards for collected data +- Hooking of customer's telemetry collection +- Documenting and leveraging pre-existing telemetry + +#### Out of scope +- Unifying telemetry for SDK MSBuild and MSBuild.exe/VS MSBuild. +- Thorough instrumentation of MSBuild +- Using MSBuild server +- Distributed tracing + +### Detailed cost +- Prototyping the libraries/mechanism for collecting telemetry data (month 1) 10dd + +- Defining usful data points (month 1) 5dd + +- Design and approval of hooking VSTelemetry collectors and OTel collectors (month 2) 10dd + +- Formalizing, agreeing to sourcebuild and other external requirements (month 2) 5dd + +- Instrumenting MSBuild with defined datapoints (month 3) 7dd + +- Creating dashboards/insights (month 4) 5dd + +- Documenting for customers how to hook their own telemetry collection (month 4) 3dd + +- Buffer for discovered issues (VSData Platform, SourceBuild, OpenTelemetry) and more investments (month 5) 5dd diff --git a/documentation/wiki/ChangeWaves.md b/documentation/wiki/ChangeWaves.md index ad791807d9c..1dfe8a21f13 100644 --- a/documentation/wiki/ChangeWaves.md +++ b/documentation/wiki/ChangeWaves.md @@ -6,6 +6,7 @@ Opt-out is a better approach for us because we'd likely get limited feedback whe ## How do they work? The opt-out comes in the form of setting the environment variable `MSBUILDDISABLEFEATURESFROMVERSION` to the Change Wave (or version) that contains the feature you want **disabled**. This version happens to be the version of MSBuild that the features were developed for. See the mapping of change waves to features below. +The opt-out should be just a *temporary* workaround for a problem - as the feature will anyways become permanent eventually. For this reason - **please make sure to create or upvote a bug describing the issue making you opt-out**. ## When do they become permanent? A wave of features is set to "rotate out" (i.e. become standard functionality) two bands after its release. For example, wave 16.8 stayed opt-out through wave 16.10, becoming standard functionality when wave 17.0 is introduced. diff --git a/eng/BootStrapMsBuild.targets b/eng/BootStrapMsBuild.targets index b50575e1ef0..d4330ba658d 100644 --- a/eng/BootStrapMsBuild.targets +++ b/eng/BootStrapMsBuild.targets @@ -239,6 +239,4 @@ - - diff --git a/eng/SourceBuildPrebuiltBaseline.xml b/eng/SourceBuildPrebuiltBaseline.xml index 6693866df16..1421f999956 100644 --- a/eng/SourceBuildPrebuiltBaseline.xml +++ b/eng/SourceBuildPrebuiltBaseline.xml @@ -18,7 +18,7 @@ - + diff --git a/eng/TestAssets.targets b/eng/TestAssets.targets deleted file mode 100644 index 797bd751c93..00000000000 --- a/eng/TestAssets.targets +++ /dev/null @@ -1,37 +0,0 @@ - - - - $(ArtifactsBinDir)Microsoft.Build.BuildCheck.UnitTests\CustomChecks - - - - - - - - - - - - - - - - - - - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9e196e8b5ae..bfbbe6c3c9c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -2,9 +2,9 @@ - + https://github.com/dotnet/source-build-reference-packages - c81acaa80719d0ecfadfe41e3c0e3548bdc4e78d + e2b1d16fd66540b3a5813ec0ac1fd166688c3e0a @@ -71,36 +71,36 @@ - + https://github.com/dotnet/arcade - b41381d5cd633471265e9cd72e933a7048e03062 + e0e05154656254a735ebf19ffa5a37a8b915039b - + https://github.com/dotnet/arcade - b41381d5cd633471265e9cd72e933a7048e03062 + e0e05154656254a735ebf19ffa5a37a8b915039b - + https://github.com/dotnet/arcade - b41381d5cd633471265e9cd72e933a7048e03062 + e0e05154656254a735ebf19ffa5a37a8b915039b - + https://github.com/nuget/nuget.client - acc521c647aa484fc2202024f624c7a56bf9fe0f + 89781a27ff255553766e4b9403ea7947072b4335 - + https://github.com/dotnet/roslyn - 31f8433cb625e2aa74d148005003b21d5e3f67b7 + 911cf5f462960bdd01df1ea3c0d0c217b3c3838b - + https://github.com/dotnet/roslyn - 31f8433cb625e2aa74d148005003b21d5e3f67b7 + 911cf5f462960bdd01df1ea3c0d0c217b3c3838b - + https://github.com/dotnet/arcade - b41381d5cd633471265e9cd72e933a7048e03062 + e0e05154656254a735ebf19ffa5a37a8b915039b diff --git a/eng/Versions.props b/eng/Versions.props index 6523774e70a..ff8dfac0904 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -20,27 +20,22 @@ true - - - - 4.6.0 - 6.1.0 - - - + + 1.0.9 + 8.0.0 + 8.0.0 + 8.0.1 - 4.5.5 + 4.6.0 6.0.0 - 6.0.1 - 1.0.9 + 6.1.0 + 1.0.28 8.0.0 8.0.0 8.0.1 @@ -48,6 +43,7 @@ 8.0.0 8.0.0 8.0.0 + 6.1.0 5.0.0 7.0.0 4.3.1 @@ -61,9 +57,9 @@ Otherwise, this version of dotnet will not be installed and the build will error out. --> $([System.Text.RegularExpressions.Regex]::Match($([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)..\global.json')), '"dotnet": "([^"]*)"').Groups.get_Item(1)) 4.2.0-1.22102.8 - 9.0.0-beta.24572.2 - 4.13.0-3.24607.3 - 6.13.0-rc.93 + 9.0.0-beta.24623.3 + 4.13.0-3.25057.3 + 6.13.0-rc.108 9.0.200-preview.0.24603.3 diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index 9a4e285a5ae..9a7ecfbd42c 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -40,7 +40,7 @@ if(TARGET_ARCH_NAME STREQUAL "arm") set(TOOLCHAIN "arm-linux-gnueabihf") endif() if(TIZEN) - set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf/9.2.0") + set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf") endif() elseif(TARGET_ARCH_NAME STREQUAL "arm64") set(CMAKE_SYSTEM_PROCESSOR aarch64) @@ -49,7 +49,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64") elseif(LINUX) set(TOOLCHAIN "aarch64-linux-gnu") if(TIZEN) - set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0") + set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu") endif() elseif(FREEBSD) set(triple "aarch64-unknown-freebsd12") @@ -58,7 +58,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "armel") set(CMAKE_SYSTEM_PROCESSOR armv7l) set(TOOLCHAIN "arm-linux-gnueabi") if(TIZEN) - set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/9.2.0") + set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi") endif() elseif(TARGET_ARCH_NAME STREQUAL "armv6") set(CMAKE_SYSTEM_PROCESSOR armv6l) @@ -81,7 +81,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "riscv64") else() set(TOOLCHAIN "riscv64-linux-gnu") if(TIZEN) - set(TIZEN_TOOLCHAIN "riscv64-tizen-linux-gnu/13.1.0") + set(TIZEN_TOOLCHAIN "riscv64-tizen-linux-gnu") endif() endif() elseif(TARGET_ARCH_NAME STREQUAL "s390x") @@ -98,7 +98,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64") elseif(LINUX) set(TOOLCHAIN "x86_64-linux-gnu") if(TIZEN) - set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu/9.2.0") + set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu") endif() elseif(FREEBSD) set(triple "x86_64-unknown-freebsd12") @@ -115,7 +115,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86") set(TOOLCHAIN "i686-linux-gnu") endif() if(TIZEN) - set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu/9.2.0") + set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu") endif() else() message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only arm, arm64, armel, armv6, ppc64le, riscv64, s390x, x64 and x86 are supported!") @@ -127,30 +127,25 @@ endif() # Specify include paths if(TIZEN) - if(TARGET_ARCH_NAME STREQUAL "arm") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7hl-tizen-linux-gnueabihf) - endif() - if(TARGET_ARCH_NAME STREQUAL "armel") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7l-tizen-linux-gnueabi) - endif() - if(TARGET_ARCH_NAME STREQUAL "arm64") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/aarch64-tizen-linux-gnu) - endif() - if(TARGET_ARCH_NAME STREQUAL "x86") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/i586-tizen-linux-gnu) - endif() - if(TARGET_ARCH_NAME STREQUAL "x64") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/x86_64-tizen-linux-gnu) - endif() - if(TARGET_ARCH_NAME STREQUAL "riscv64") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/riscv64-tizen-linux-gnu) + function(find_toolchain_dir prefix) + # Dynamically find the version subdirectory + file(GLOB DIRECTORIES "${prefix}/*") + list(GET DIRECTORIES 0 FIRST_MATCH) + get_filename_component(TOOLCHAIN_VERSION ${FIRST_MATCH} NAME) + + set(TIZEN_TOOLCHAIN_PATH "${prefix}/${TOOLCHAIN_VERSION}" PARENT_SCOPE) + endfunction() + + if(TARGET_ARCH_NAME MATCHES "^(arm|armel|x86)$") + find_toolchain_dir("${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + else() + find_toolchain_dir("${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") endif() + + message(STATUS "TIZEN_TOOLCHAIN_PATH set to: ${TIZEN_TOOLCHAIN_PATH}") + + include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++) + include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++/${TIZEN_TOOLCHAIN}) endif() if(ANDROID) @@ -272,21 +267,21 @@ endif() if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$") if(TIZEN) - add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib") - add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}") endif() elseif(TARGET_ARCH_NAME MATCHES "^(arm64|x64|riscv64)$") if(TIZEN) - add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib64") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64") - add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}") add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/lib64") add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64") - add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-Wl,--rpath-link=${TIZEN_TOOLCHAIN_PATH}") endif() elseif(TARGET_ARCH_NAME STREQUAL "s390x") add_toolchain_linker_flag("--target=${TOOLCHAIN}") @@ -297,10 +292,10 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86") endif() add_toolchain_linker_flag(-m32) if(TIZEN) - add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib") - add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}") endif() elseif(ILLUMOS) add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib/amd64") diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index aa94fb17459..a46b6deb759 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -320,7 +320,7 @@ function InstallDotNet([string] $dotnetRoot, $variations += @($installParameters) $dotnetBuilds = $installParameters.Clone() - $dotnetbuilds.AzureFeed = "https://dotnetbuilds.azureedge.net/public" + $dotnetbuilds.AzureFeed = "https://ci.dot.net/public" $variations += @($dotnetBuilds) if ($runtimeSourceFeed) { diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 00473c9f918..1159726a10f 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -232,7 +232,7 @@ function InstallDotNet { local public_location=("${installParameters[@]}") variations+=(public_location) - local dotnetbuilds=("${installParameters[@]}" --azure-feed "https://dotnetbuilds.azureedge.net/public") + local dotnetbuilds=("${installParameters[@]}" --azure-feed "https://ci.dot.net/public") variations+=(dotnetbuilds) if [[ -n "${6:-}" ]]; then diff --git a/global.json b/global.json index ce078f63210..8d2ec6f0928 100644 --- a/global.json +++ b/global.json @@ -10,6 +10,6 @@ "xcopy-msbuild": "17.12.0" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24572.2" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24623.3" } } diff --git a/src/Build/BackEnd/BuildManager/BuildManager.cs b/src/Build/BackEnd/BuildManager/BuildManager.cs index e3aa23a4780..10cf3577bf1 100644 --- a/src/Build/BackEnd/BuildManager/BuildManager.cs +++ b/src/Build/BackEnd/BuildManager/BuildManager.cs @@ -37,6 +37,7 @@ using Microsoft.Build.Shared; using Microsoft.Build.Shared.Debugging; using Microsoft.NET.StringTools; +using ExceptionHandling = Microsoft.Build.Shared.ExceptionHandling; using ForwardingLoggerRecord = Microsoft.Build.Logging.ForwardingLoggerRecord; using LoggerDescription = Microsoft.Build.Logging.LoggerDescription; @@ -819,6 +820,15 @@ void Callback(object? state) ThreadPoolExtensions.QueueThreadPoolWorkItemWithCulture(Callback, parentThreadCulture, parentThreadUICulture); } + /// + /// Point in time snapshot of all worker processes leveraged by this BuildManager. + /// This is meant to be used by VS. External users should not this is only best-effort, point-in-time functionality + /// without guarantee of 100% correctness and safety. + /// + /// Enumeration of objects that were valid during the time of call to this function. + public IEnumerable GetWorkerProcesses() + => (_nodeManager?.GetProcesses() ?? []).Concat(_taskHostNodeManager?.GetProcesses() ?? []); + /// /// Clears out all of the cached information. /// diff --git a/src/Build/BackEnd/Components/Communications/NodeProviderOutOfProc.cs b/src/Build/BackEnd/Components/Communications/NodeProviderOutOfProc.cs index 3fb64eb9fb4..dbafe43db2a 100644 --- a/src/Build/BackEnd/Components/Communications/NodeProviderOutOfProc.cs +++ b/src/Build/BackEnd/Components/Communications/NodeProviderOutOfProc.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; @@ -94,7 +94,7 @@ public IList CreateNodes(int nextNodeId, INodePacketFactory factory, F // want to start up just a standard MSBuild out-of-proc node. // Note: We need to always pass /nodeReuse to ensure the value for /nodeReuse from msbuild.rsp // (next to msbuild.exe) is ignored. - string commandLineArgs = $"/nologo /nodemode:1 /nodeReuse:{ComponentHost.BuildParameters.EnableNodeReuse.ToString().ToLower()} /low:{ComponentHost.BuildParameters.LowPriority.ToString().ToLower()}"; + string commandLineArgs = $"/noautoresponse /nologo /nodemode:1 /nodeReuse:{ComponentHost.BuildParameters.EnableNodeReuse.ToString().ToLower()} /low:{ComponentHost.BuildParameters.LowPriority.ToString().ToLower()}"; CommunicationsUtilities.Trace("Starting to acquire {1} new or existing node(s) to establish nodes from ID {0} to {2}...", nextNodeId, numberOfNodesToCreate, nextNodeId + numberOfNodesToCreate - 1); diff --git a/src/Build/BackEnd/Components/ProjectCache/ProjectCacheService.cs b/src/Build/BackEnd/Components/ProjectCache/ProjectCacheService.cs index 446f5ef644f..bd1cb0fd8d7 100644 --- a/src/Build/BackEnd/Components/ProjectCache/ProjectCacheService.cs +++ b/src/Build/BackEnd/Components/ProjectCache/ProjectCacheService.cs @@ -22,6 +22,7 @@ using Microsoft.Build.Graph; using Microsoft.Build.Internal; using Microsoft.Build.Shared; +using ExceptionHandling = Microsoft.Build.Shared.ExceptionHandling; namespace Microsoft.Build.Experimental.ProjectCache { diff --git a/src/Build/BackEnd/Components/RequestBuilder/TargetBuilder.cs b/src/Build/BackEnd/Components/RequestBuilder/TargetBuilder.cs index deafed17428..7cd08affeb2 100644 --- a/src/Build/BackEnd/Components/RequestBuilder/TargetBuilder.cs +++ b/src/Build/BackEnd/Components/RequestBuilder/TargetBuilder.cs @@ -484,7 +484,7 @@ private async Task ProcessTargetStack(ITaskBuilder taskBuilder) // Execute all of the tasks on this target. MSBuildEventSource.Log.TargetStart(currentTargetEntry.Name); await currentTargetEntry.ExecuteTarget(taskBuilder, _requestEntry, _projectLoggingContext, _cancellationToken); - MSBuildEventSource.Log.TargetStop(currentTargetEntry.Name); + MSBuildEventSource.Log.TargetStop(currentTargetEntry.Name, currentTargetEntry.Result?.TargetResultCodeToString() ?? string.Empty); } break; diff --git a/src/Build/BackEnd/Shared/TargetResult.cs b/src/Build/BackEnd/Shared/TargetResult.cs index d251633ab56..17b187d1d3a 100644 --- a/src/Build/BackEnd/Shared/TargetResult.cs +++ b/src/Build/BackEnd/Shared/TargetResult.cs @@ -136,6 +136,22 @@ public TargetResultCode ResultCode } } + public string TargetResultCodeToString() + { + switch (ResultCode) + { + case TargetResultCode.Failure: + return nameof(TargetResultCode.Failure); + case TargetResultCode.Skipped: + return nameof(TargetResultCode.Skipped); + case TargetResultCode.Success: + return nameof(TargetResultCode.Success); + default: + Debug.Fail($"Unknown enum value: {ResultCode}"); + return ResultCode.ToString(); + } + } + /// /// Returns the internal result for the target. /// diff --git a/src/Build/Construction/Solution/SolutionFile.cs b/src/Build/Construction/Solution/SolutionFile.cs index 909feaf74a6..63ce5b9dcee 100644 --- a/src/Build/Construction/Solution/SolutionFile.cs +++ b/src/Build/Construction/Solution/SolutionFile.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; @@ -302,28 +302,36 @@ internal void ParseUsingNewParser() { ISolutionSerializer serializer = SolutionSerializers.GetSerializerByMoniker(FullPath); - if (serializer != null) + if (serializer == null) + { + ProjectFileErrorUtilities.ThrowInvalidProjectFile( + new BuildEventFileInfo(FullPath), + $"InvalidProjectFile", + $"No solution serializer was found for {FullPath}"); + } + else { try { - SolutionModel solutionModel = serializer.OpenAsync(FullPath, CancellationToken.None).Result; + SolutionModel solutionModel = serializer.OpenAsync(FullPath, CancellationToken.None).GetAwaiter().GetResult(); ReadSolutionModel(solutionModel); } + catch (SolutionException solutionEx) + { + var errorLocation = ElementLocation.Create(FullPath, solutionEx.Line ?? 0, solutionEx.Column ?? 0); + ProjectFileErrorUtilities.ThrowInvalidProjectFile( + new BuildEventFileInfo(errorLocation), + "InvalidProjectFile", + solutionEx.ToString()); + } catch (Exception ex) { ProjectFileErrorUtilities.ThrowInvalidProjectFile( - new BuildEventFileInfo(FullPath), - $"InvalidProjectFile", - ex.ToString()); + new BuildEventFileInfo(FullPath), + "InvalidProjectFile", + ex.ToString()); } } - else if (serializer == null) - { - ProjectFileErrorUtilities.ThrowInvalidProjectFile( - new BuildEventFileInfo(FullPath), - $"InvalidProjectFile", - $"No solution serializer was found for {FullPath}"); - } } /// diff --git a/src/Build/Evaluation/Expander.cs b/src/Build/Evaluation/Expander.cs index aef481962ab..05ad3902a6f 100644 --- a/src/Build/Evaluation/Expander.cs +++ b/src/Build/Evaluation/Expander.cs @@ -129,7 +129,7 @@ internal enum ExpanderOptions /// /// Type of the properties used. /// Type of the items used. - internal class Expander + internal partial class Expander where P : class, IProperty where I : class, IItem { @@ -952,7 +952,7 @@ internal static string ExpandMetadataLeaveEscaped(string expression, IMetadataTa // if there are no item vectors in the string // run a simpler Regex to find item metadata references MetadataMatchEvaluator matchEvaluator = new MetadataMatchEvaluator(metadata, options, elementLocation, loggingContext); - result = RegularExpressions.ItemMetadataPattern.Value.Replace(expression, new MatchEvaluator(matchEvaluator.ExpandSingleMetadata)); + result = RegularExpressions.ItemMetadataRegex.Replace(expression, new MatchEvaluator(matchEvaluator.ExpandSingleMetadata)); } else { @@ -983,7 +983,7 @@ internal static string ExpandMetadataLeaveEscaped(string expression, IMetadataTa // Extract the part of the expression that appears before the item vector expression // e.g. the ABC in ABC@(foo->'%(FullPath)') string subExpressionToReplaceIn = expression.Substring(start, itemVectorExpressions[n].Index - start); - string replacementResult = RegularExpressions.NonTransformItemMetadataPattern.Value.Replace(subExpressionToReplaceIn, new MatchEvaluator(matchEvaluator.ExpandSingleMetadata)); + string replacementResult = RegularExpressions.NonTransformItemMetadataRegex.Replace(subExpressionToReplaceIn, new MatchEvaluator(matchEvaluator.ExpandSingleMetadata)); // Append the metadata replacement finalResultBuilder.Append(replacementResult); @@ -991,7 +991,7 @@ internal static string ExpandMetadataLeaveEscaped(string expression, IMetadataTa // Expand any metadata that appears in the item vector expression's separator if (itemVectorExpressions[n].Separator != null) { - vectorExpression = RegularExpressions.NonTransformItemMetadataPattern.Value.Replace(itemVectorExpressions[n].Value, new MatchEvaluator(matchEvaluator.ExpandSingleMetadata), -1, itemVectorExpressions[n].SeparatorStart); + vectorExpression = RegularExpressions.NonTransformItemMetadataRegex.Replace(itemVectorExpressions[n].Value, new MatchEvaluator(matchEvaluator.ExpandSingleMetadata), -1, itemVectorExpressions[n].SeparatorStart); } // Append the item vector expression as is @@ -1008,7 +1008,7 @@ internal static string ExpandMetadataLeaveEscaped(string expression, IMetadataTa if (start < expression.Length) { string subExpressionToReplaceIn = expression.Substring(start); - string replacementResult = RegularExpressions.NonTransformItemMetadataPattern.Value.Replace(subExpressionToReplaceIn, new MatchEvaluator(matchEvaluator.ExpandSingleMetadata)); + string replacementResult = RegularExpressions.NonTransformItemMetadataRegex.Replace(subExpressionToReplaceIn, new MatchEvaluator(matchEvaluator.ExpandSingleMetadata)); finalResultBuilder.Append(replacementResult); } @@ -2719,7 +2719,7 @@ internal static IEnumerable> ExpandQuotedExpressionFunct { matchEvaluator = new MetadataMatchEvaluator(item.Key, item.Value, elementLocation); - include = RegularExpressions.ItemMetadataPattern.Value.Replace(arguments[0], matchEvaluator.GetMetadataValueFromMatch); + include = RegularExpressions.ItemMetadataRegex.Replace(arguments[0], matchEvaluator.GetMetadataValueFromMatch); } // Include may be empty. Historically we have created items with empty include @@ -3086,13 +3086,19 @@ internal string GetMetadataValueFromMatch(Match match) /// Regular expressions used by the expander. /// The expander currently uses regular expressions rather than a parser to do its work. /// - private static class RegularExpressions + private static partial class RegularExpressions { /************************************************************************************************************************** * WARNING: The regular expressions below MUST be kept in sync with the expressions in the ProjectWriter class -- if the * description of an item vector changes, the expressions must be updated in both places. *************************************************************************************************************************/ + + +#if NET7_0_OR_GREATER + [GeneratedRegex(ItemMetadataSpecification, RegexOptions.IgnorePatternWhitespace | RegexOptions.ExplicitCapture)] + internal static partial Regex ItemMetadataPattern(); +#else /// /// Regular expression used to match item metadata references embedded in strings. /// For example, %(Compile.DependsOn) or %(DependsOn). @@ -3100,10 +3106,23 @@ private static class RegularExpressions internal static readonly Lazy ItemMetadataPattern = new Lazy( () => new Regex(ItemMetadataSpecification, RegexOptions.IgnorePatternWhitespace | RegexOptions.ExplicitCapture | RegexOptions.Compiled)); +#endif - /// - /// Name of the group matching the "name" of a metadatum. - /// + internal static Regex ItemMetadataRegex + { + get + { +#if NET7_0_OR_GREATER + return ItemMetadataPattern(); +#else + return ItemMetadataPattern.Value; +#endif + } + } + + /// + /// Name of the group matching the "name" of a metadatum. + /// internal const string NameGroup = "NAME"; /// @@ -3116,18 +3135,35 @@ private static class RegularExpressions /// internal const string ItemTypeGroup = "ITEM_TYPE"; + internal const string NonTransformItemMetadataSpecification = @"((?<=" + ItemVectorWithTransformLHS + @")" + ItemMetadataSpecification + @"(?!" + + ItemVectorWithTransformRHS + @")) | ((? /// regular expression used to match item metadata references outside of item vector transforms. /// /// PERF WARNING: this Regex is complex and tends to run slowly. internal static readonly Lazy NonTransformItemMetadataPattern = new Lazy( - () => new Regex( - @"((?<=" + ItemVectorWithTransformLHS + @")" + ItemMetadataSpecification + @"(?!" + - ItemVectorWithTransformRHS + @")) | ((? new Regex(NonTransformItemMetadataSpecification, + RegexOptions.IgnorePatternWhitespace | RegexOptions.ExplicitCapture | RegexOptions.Compiled)); +#endif + internal static Regex NonTransformItemMetadataRegex + { + get + { +#if NET7_0_OR_GREATER + return NonTransformItemMetadataPattern(); +#else + return NonTransformItemMetadataPattern.Value; +#endif + } + } /// /// Complete description of an item metadata reference, including the optional qualifying item type. diff --git a/src/Build/Microsoft.Build.csproj b/src/Build/Microsoft.Build.csproj index 2f6a8ee8a5a..d3faea7600a 100644 --- a/src/Build/Microsoft.Build.csproj +++ b/src/Build/Microsoft.Build.csproj @@ -22,6 +22,7 @@ false full true + True $(NoWarn);NU5104 diff --git a/src/Build/Resources/Strings.resx b/src/Build/Resources/Strings.resx index 01ebc97d203..afa2052daca 100644 --- a/src/Build/Resources/Strings.resx +++ b/src/Build/Resources/Strings.resx @@ -2147,7 +2147,7 @@ Utilization: {0} Average Utilization: {1:###.0} Two projects should not share their 'OutputPath' nor 'IntermediateOutputPath' locations. - 'OutputPath' and 'IntermediateOutputPath' not to be translated. + 'OutputPath' and 'IntermediateOutputPath' not to be translated. Projects {0} and {1} have conflicting output paths: {2}. @@ -2166,7 +2166,7 @@ Utilization: {0} Average Utilization: {1:###.0} '{0}' with value: '{1}' - Will be used as a parameter {0} in previous message. + Will be used as a parameter {0} in previous message. A project should not be referenced via 'Reference' to its output, but rather directly via 'ProjectReference'. @@ -2192,11 +2192,11 @@ Utilization: {0} Average Utilization: {1:###.0} 'TargetFramework' (singular) and 'TargetFrameworks' (plural) properties should not be specified in the scripts at the same time. - Terms in quotes are not to be translated. + Terms in quotes are not to be translated. Project {0} specifies 'TargetFrameworks' property '{1}' and 'TargetFramework' property '{2}' at the same time. This will lead to 'TargetFrameworks' being ignored and build will behave as single-targeted. - Terms in quotes are not to be translated. + Terms in quotes are not to be translated. A property that is accessed should be declared first. @@ -2216,6 +2216,12 @@ Utilization: {0} Average Utilization: {1:###.0} Property: '{0}' was declared/initialized, but it was never used. + + An exception occurred while expanding a fileSpec with globs: fileSpec: "{0}", assuming it is a file name. Exception: {1} + + + Logging type {0} is not understood by {1}. + diff --git a/src/Framework/MSBuildEventSource.cs b/src/Framework/MSBuildEventSource.cs index efe948081a3..4b403ebdf1d 100644 --- a/src/Framework/MSBuildEventSource.cs +++ b/src/Framework/MSBuildEventSource.cs @@ -362,10 +362,11 @@ public void TargetStart(string targetName) } /// The name of the target being executed. - [Event(44, Keywords = Keywords.All | Keywords.PerformanceLog)] - public void TargetStop(string targetName) + /// Target stop result. + [Event(44, Keywords = Keywords.All | Keywords.PerformanceLog, Version = 1)] + public void TargetStop(string targetName, string result) { - WriteEvent(44, targetName); + WriteEvent(44, targetName, result); } /// diff --git a/src/Framework/Microsoft.Build.Framework.csproj b/src/Framework/Microsoft.Build.Framework.csproj index 736cccac2f1..271026705ba 100644 --- a/src/Framework/Microsoft.Build.Framework.csproj +++ b/src/Framework/Microsoft.Build.Framework.csproj @@ -11,6 +11,7 @@ false full true + True diff --git a/src/MSBuild/MSBuild/Microsoft.Build.CommonTypes.xsd b/src/MSBuild/MSBuild/Microsoft.Build.CommonTypes.xsd index 642660e5f6c..607f6acafe9 100644 --- a/src/MSBuild/MSBuild/Microsoft.Build.CommonTypes.xsd +++ b/src/MSBuild/MSBuild/Microsoft.Build.CommonTypes.xsd @@ -2199,7 +2199,7 @@ elementFormDefault="qualified"> - + @@ -2293,6 +2293,111 @@ elementFormDefault="qualified"> + + + + Set to 'true' to use VSTest. The default is 'false' which uses MSTest runner. This property is only applicable when using MSTest.Sdk. + + + + + Enables or disables the use of the MSTest runner. The default is 'true' when using MSTest.Sdk, and 'false' otherwise. Supported in MSTest 3.2 and later versions. + + + + + Set this property to 'false' to disable the automatic generation of entry point for Microsoft.Testing.Platform. + + + + + Set this property to 'false' to disable auto registration of extensions through the 'AddSelfRegisteredExtensions'. + + + + + Set this property to 'false' to disable the automatic generation of entry point for VSTest. + + + + + + Controls the set of extensions that are enabled. Note that 'AllMicrosoft' enables all extensions, even those with a restrictive license. + + + + + + + + + + + + Enables the Microsoft.Testing.Extensions.CrashDump extension. This is not supported by VSTest. + + + + + Enables the Microsoft.Testing.Extensions.CodeCoverage extension. This is not supported by VSTest + + + + + Enables the Microsoft.Testing.Extensions.TrxReport extension. This is not supported by VSTest. + + + + + Enables the Microsoft.Testing.Extensions.HangDump extension. This is not supported by VSTest. + + + + + Enables the Microsoft.Testing.Extensions.HotReload extension (it has restrictive license). This is not supported by VSTest. + + + + + Enables the Microsoft.Testing.Extensions.Retry extension (it has restrictive license). This is not supported by VSTest. + + + + + Enables the testing support for .NET Aspire application model. This adds a reference to 'Aspire.Hosting.Testing' NuGet package. + + + + + Enables end-to-end testing for modern web apps using Playwright. This adds a reference to 'Microsoft.Playwright.MSTest' NuGet package. + + + + + Controls whether the application is a test application. Set it to 'false' in a non-test project that references a test project to avoid error CS8892. + + + + + The command-line arguments to pass for the test executable. This is not supported by VSTest. + + + + + This property controls whether all console output that a test executable writes is captured and hidden from the user when you use 'dotnet test' to run 'Microsoft.Testing.Platform' tests. By default, the console output is hidden. This is not supported by VSTest. + + + + + This property controls whether VSTest is used when you use 'dotnet test' to run tests. If you set this property to 'true', VSTest is disabled and all 'Microsoft.Testing.Platform' tests are run directly. This is not supported by VSTest. + + + + + This property controls whether a single failure or all errors in a failed test are reported when you use `dotnet test` to run tests. By default, test failures are summarized into a log file, and a single failure per test project is reported to MSBuild. To show errors per failed test, set this property to 'true'. This is not supported by VSTest. + + + diff --git a/src/MSBuild/Resources/xlf/Strings.cs.xlf b/src/MSBuild/Resources/xlf/Strings.cs.xlf index ae1cc82bcde..cf608d268e5 100644 --- a/src/MSBuild/Resources/xlf/Strings.cs.xlf +++ b/src/MSBuild/Resources/xlf/Strings.cs.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + Souhrn sestavení: A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/Resources/xlf/Strings.de.xlf b/src/MSBuild/Resources/xlf/Strings.de.xlf index 9a6f40c211a..8cdef174367 100644 --- a/src/MSBuild/Resources/xlf/Strings.de.xlf +++ b/src/MSBuild/Resources/xlf/Strings.de.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + Build-Zusammenfassung: A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/Resources/xlf/Strings.es.xlf b/src/MSBuild/Resources/xlf/Strings.es.xlf index a4efc5fbe67..ed508d49fd7 100644 --- a/src/MSBuild/Resources/xlf/Strings.es.xlf +++ b/src/MSBuild/Resources/xlf/Strings.es.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + Resumen de la compilación: A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/Resources/xlf/Strings.fr.xlf b/src/MSBuild/Resources/xlf/Strings.fr.xlf index 25303575605..eec15d4d2ff 100644 --- a/src/MSBuild/Resources/xlf/Strings.fr.xlf +++ b/src/MSBuild/Resources/xlf/Strings.fr.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + Résumé de la build : A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/Resources/xlf/Strings.it.xlf b/src/MSBuild/Resources/xlf/Strings.it.xlf index 1d6ba50eb0d..1700cf2e875 100644 --- a/src/MSBuild/Resources/xlf/Strings.it.xlf +++ b/src/MSBuild/Resources/xlf/Strings.it.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + Riepilogo build: A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/Resources/xlf/Strings.ja.xlf b/src/MSBuild/Resources/xlf/Strings.ja.xlf index d0ddddead98..0681526a4e5 100644 --- a/src/MSBuild/Resources/xlf/Strings.ja.xlf +++ b/src/MSBuild/Resources/xlf/Strings.ja.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + ビルドの概要: A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/Resources/xlf/Strings.ko.xlf b/src/MSBuild/Resources/xlf/Strings.ko.xlf index 8e6560daf49..276327b19c2 100644 --- a/src/MSBuild/Resources/xlf/Strings.ko.xlf +++ b/src/MSBuild/Resources/xlf/Strings.ko.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + 빌드 요약: A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/Resources/xlf/Strings.pl.xlf b/src/MSBuild/Resources/xlf/Strings.pl.xlf index a42e0e4f5e5..36da70fd656 100644 --- a/src/MSBuild/Resources/xlf/Strings.pl.xlf +++ b/src/MSBuild/Resources/xlf/Strings.pl.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + Podsumowanie kompilacji: A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/Resources/xlf/Strings.pt-BR.xlf b/src/MSBuild/Resources/xlf/Strings.pt-BR.xlf index be0a3cfcdf5..44f14597a37 100644 --- a/src/MSBuild/Resources/xlf/Strings.pt-BR.xlf +++ b/src/MSBuild/Resources/xlf/Strings.pt-BR.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + Resumo da compilação: A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/Resources/xlf/Strings.ru.xlf b/src/MSBuild/Resources/xlf/Strings.ru.xlf index a6abaa1f4a0..3e5f3a5c98f 100644 --- a/src/MSBuild/Resources/xlf/Strings.ru.xlf +++ b/src/MSBuild/Resources/xlf/Strings.ru.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + Сводка сборки: A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/Resources/xlf/Strings.tr.xlf b/src/MSBuild/Resources/xlf/Strings.tr.xlf index 5ba264c7cc6..62c19884023 100644 --- a/src/MSBuild/Resources/xlf/Strings.tr.xlf +++ b/src/MSBuild/Resources/xlf/Strings.tr.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + Derleme özeti: A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/Resources/xlf/Strings.zh-Hans.xlf b/src/MSBuild/Resources/xlf/Strings.zh-Hans.xlf index 921a7a50e3f..464d639afcd 100644 --- a/src/MSBuild/Resources/xlf/Strings.zh-Hans.xlf +++ b/src/MSBuild/Resources/xlf/Strings.zh-Hans.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + 生成摘要: A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/Resources/xlf/Strings.zh-Hant.xlf b/src/MSBuild/Resources/xlf/Strings.zh-Hant.xlf index e83d5bbd6d7..43815fdeb50 100644 --- a/src/MSBuild/Resources/xlf/Strings.zh-Hant.xlf +++ b/src/MSBuild/Resources/xlf/Strings.zh-Hant.xlf @@ -69,7 +69,7 @@ Build summary: - Build summary: + 組建摘要: A header used by Terminal Logger to introduce the build summary. diff --git a/src/MSBuild/app.amd64.config b/src/MSBuild/app.amd64.config index 339dfe620bf..c923ec791de 100644 --- a/src/MSBuild/app.amd64.config +++ b/src/MSBuild/app.amd64.config @@ -1,4 +1,4 @@ - +
@@ -39,8 +39,8 @@ - - + + @@ -81,8 +81,8 @@ - - + + @@ -93,13 +93,13 @@ - - + + - - + + @@ -118,8 +118,8 @@ - - + + diff --git a/src/MSBuild/app.config b/src/MSBuild/app.config index 9bc9a4c595c..34303ede8b5 100644 --- a/src/MSBuild/app.config +++ b/src/MSBuild/app.config @@ -37,7 +37,7 @@ - + @@ -49,7 +49,7 @@ - + @@ -58,11 +58,11 @@ - + - + @@ -78,7 +78,7 @@ - + diff --git a/src/Shared/FileMatcher.cs b/src/Shared/FileMatcher.cs index 4cda8fc8a4e..d6cd177e8ad 100644 --- a/src/Shared/FileMatcher.cs +++ b/src/Shared/FileMatcher.cs @@ -1896,6 +1896,7 @@ public TaskOptions(int maxTasks) public int MaxTasksPerIteration; } +#nullable enable /// /// Given a filespec, find the files that match. /// Will never throw IO exceptions: if there is no match, returns the input verbatim. @@ -1903,16 +1904,16 @@ public TaskOptions(int maxTasks) /// The project directory. /// Get files that match the given file spec. /// Exclude files that match this file spec. - /// The search action, array of files, and Exclude file spec (if applicable). - internal (string[] FileList, SearchAction Action, string ExcludeFileSpec) GetFiles( - string projectDirectoryUnescaped, + /// The search action, array of files, Exclude file spec (if applicable), and glob failure message (if applicable) . + internal (string[] FileList, SearchAction Action, string ExcludeFileSpec, string? GlobFailure) GetFiles( + string? projectDirectoryUnescaped, string filespecUnescaped, - List excludeSpecsUnescaped = null) + List? excludeSpecsUnescaped = null) { // For performance. Short-circuit iff there is no wildcard. if (!HasWildcards(filespecUnescaped)) { - return (CreateArrayWithSingleItemIfNotExcluded(filespecUnescaped, excludeSpecsUnescaped), SearchAction.None, string.Empty); + return (CreateArrayWithSingleItemIfNotExcluded(filespecUnescaped, excludeSpecsUnescaped), SearchAction.None, string.Empty, null); } if (_cachedGlobExpansions == null) @@ -1925,10 +1926,11 @@ public TaskOptions(int maxTasks) var enumerationKey = ComputeFileEnumerationCacheKey(projectDirectoryUnescaped, filespecUnescaped, excludeSpecsUnescaped); - IReadOnlyList files; + IReadOnlyList? files; string[] fileList; SearchAction action = SearchAction.None; string excludeFileSpec = string.Empty; + string? globFailure = null; if (!_cachedGlobExpansions.TryGetValue(enumerationKey, out files)) { // avoid parallel evaluations of the same wildcard by using a unique lock for each wildcard @@ -1941,7 +1943,7 @@ public TaskOptions(int maxTasks) enumerationKey, (_) => { - (fileList, action, excludeFileSpec) = GetFilesImplementation( + (fileList, action, excludeFileSpec, globFailure) = GetFilesImplementation( projectDirectoryUnescaped, filespecUnescaped, excludeSpecsUnescaped); @@ -1955,8 +1957,9 @@ public TaskOptions(int maxTasks) // Copy the file enumerations to prevent outside modifications of the cache (e.g. sorting, escaping) and to maintain the original method contract that a new array is created on each call. var filesToReturn = files.ToArray(); - return (filesToReturn, action, excludeFileSpec); + return (filesToReturn, action, excludeFileSpec, globFailure); } +#nullable disable private static string ComputeFileEnumerationCacheKey(string projectDirectoryUnescaped, string filespecUnescaped, List excludes) { @@ -2354,6 +2357,7 @@ private static string[] CreateArrayWithSingleItemIfNotExcluded(string filespecUn return [filespecUnescaped]; } +#nullable enable /// /// Given a filespec, find the files that match. /// Will never throw IO exceptions: if there is no match, returns the input verbatim. @@ -2361,11 +2365,11 @@ private static string[] CreateArrayWithSingleItemIfNotExcluded(string filespecUn /// The project directory. /// Get files that match the given file spec. /// Exclude files that match this file spec. - /// The search action, array of files, and Exclude file spec (if applicable). - private (string[] FileList, SearchAction Action, string ExcludeFileSpec) GetFilesImplementation( - string projectDirectoryUnescaped, + /// The search action, array of files, Exclude file spec (if applicable), and glob failure message (if applicable). + private (string[] FileList, SearchAction Action, string ExcludeFileSpec, string? globFailureEvent) GetFilesImplementation( + string? projectDirectoryUnescaped, string filespecUnescaped, - List excludeSpecsUnescaped) + List? excludeSpecsUnescaped) { // UNDONE (perf): Short circuit the complex processing when we only have a path and a wildcarded filename @@ -2377,15 +2381,15 @@ private static string[] CreateArrayWithSingleItemIfNotExcluded(string filespecUn if (action == SearchAction.ReturnEmptyList) { - return ([], action, string.Empty); + return ([], action, string.Empty, null); } else if (action == SearchAction.ReturnFileSpec) { - return (CreateArrayWithSingleItemIfNotExcluded(filespecUnescaped, excludeSpecsUnescaped), action, string.Empty); + return (CreateArrayWithSingleItemIfNotExcluded(filespecUnescaped, excludeSpecsUnescaped), action, string.Empty, null); } else if (action == SearchAction.FailOnDriveEnumeratingWildcard) { - return ([], action, string.Empty); + return ([], action, string.Empty, null); } else if ((action != SearchAction.RunSearch) && (action != SearchAction.LogDriveEnumeratingWildcard)) { @@ -2393,17 +2397,17 @@ private static string[] CreateArrayWithSingleItemIfNotExcluded(string filespecUn throw new NotSupportedException(action.ToString()); } - List searchesToExclude = null; + List? searchesToExclude = null; // Exclude searches which will become active when the recursive search reaches their BaseDirectory. // The BaseDirectory of the exclude search is the key for this dictionary. - Dictionary> searchesToExcludeInSubdirs = null; + Dictionary>? searchesToExcludeInSubdirs = null; // Track the search action and exclude file spec for proper detection and logging of drive enumerating wildcards. SearchAction trackSearchAction = action; string trackExcludeFileSpec = string.Empty; - HashSet resultsToExclude = null; + HashSet? resultsToExclude = null; if (excludeSpecsUnescaped != null) { searchesToExclude = new List(); @@ -2430,7 +2434,7 @@ private static string[] CreateArrayWithSingleItemIfNotExcluded(string filespecUn } else if (excludeAction == SearchAction.FailOnDriveEnumeratingWildcard) { - return ([], excludeAction, excludeSpec); + return ([], excludeAction, excludeSpec, null); } else if (excludeAction == SearchAction.LogDriveEnumeratingWildcard) { @@ -2477,7 +2481,7 @@ private static string[] CreateArrayWithSingleItemIfNotExcluded(string filespecUn { searchesToExcludeInSubdirs = new Dictionary>(StringComparer.OrdinalIgnoreCase); } - List listForSubdir; + List? listForSubdir; if (!searchesToExcludeInSubdirs.TryGetValue(excludeBaseDirectory, out listForSubdir)) { listForSubdir = new List(); @@ -2594,14 +2598,23 @@ private static string[] CreateArrayWithSingleItemIfNotExcluded(string filespecUn // Flatten to get exceptions than are thrown inside a nested Parallel.ForEach if (ex.Flatten().InnerExceptions.All(ExceptionHandling.IsIoRelatedException)) { - return (CreateArrayWithSingleItemIfNotExcluded(filespecUnescaped, excludeSpecsUnescaped), trackSearchAction, trackExcludeFileSpec); + return ( + CreateArrayWithSingleItemIfNotExcluded(filespecUnescaped, excludeSpecsUnescaped), + trackSearchAction, + trackExcludeFileSpec, + ResourceUtilities.FormatResourceStringIgnoreCodeAndKeyword("GlobExpansionFailed", filespecUnescaped, ex.ToString())); } + throw; } catch (Exception ex) when (ExceptionHandling.IsIoRelatedException(ex)) { - // Assume it's not meant to be a path - return (CreateArrayWithSingleItemIfNotExcluded(filespecUnescaped, excludeSpecsUnescaped), trackSearchAction, trackExcludeFileSpec); + // Assume it's not meant to be a path, but pass the information about the failure to expand + return ( + CreateArrayWithSingleItemIfNotExcluded(filespecUnescaped, excludeSpecsUnescaped), + trackSearchAction, + trackExcludeFileSpec, + ResourceUtilities.FormatResourceStringIgnoreCodeAndKeyword("GlobExpansionFailed", filespecUnescaped, ex.ToString())); } /* @@ -2610,9 +2623,9 @@ private static string[] CreateArrayWithSingleItemIfNotExcluded(string filespecUn var files = resultsToExclude != null ? listOfFiles.SelectMany(list => list).Where(f => !resultsToExclude.Contains(f)).ToArray() : listOfFiles.SelectMany(list => list).ToArray(); - - return (files, trackSearchAction, trackExcludeFileSpec); + return (files, trackSearchAction, trackExcludeFileSpec, null); } +#nullable disable private bool InnerExceptionsAreAllIoRelated(AggregateException ex) { diff --git a/src/Shared/FrameworkLocationHelper.cs b/src/Shared/FrameworkLocationHelper.cs index 8901b0def29..b0b620ad68a 100644 --- a/src/Shared/FrameworkLocationHelper.cs +++ b/src/Shared/FrameworkLocationHelper.cs @@ -1392,8 +1392,8 @@ public virtual string GetPathToDotNetFramework(DotNetFrameworkArchitecture archi // Context: https://github.com/dotnet/msbuild/pull/7689 if (this._hasMsBuild && generatedPathToDotNetFramework != null && - (!FileSystems.Default.FileExists(Path.Combine(generatedPathToDotNetFramework, NativeMethodsShared.IsWindows ? "MSBuild.exe" : "mcs.exe")) && - !FileSystems.Default.FileExists(Path.Combine(generatedPathToDotNetFramework, "Microsoft.Build.dll")))) + (!File.Exists(Path.Combine(generatedPathToDotNetFramework, NativeMethodsShared.IsWindows ? "MSBuild.exe" : "mcs.exe")) && + !File.Exists(Path.Combine(generatedPathToDotNetFramework, "Microsoft.Build.dll")))) { return null; } diff --git a/src/Shared/Resources/Strings.shared.resx b/src/Shared/Resources/Strings.shared.resx index 3b091e485d0..a4a6c77b65b 100644 --- a/src/Shared/Resources/Strings.shared.resx +++ b/src/Shared/Resources/Strings.shared.resx @@ -188,7 +188,7 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.cs.xlf b/src/Shared/Resources/xlf/Strings.shared.cs.xlf index b8eb609791a..6112e7fc577 100644 --- a/src/Shared/Resources/xlf/Strings.shared.cs.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.cs.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: Nepodařilo se odstranit dočasný soubor {0}. {1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: Nepodařilo se odstranit dočasný soubor {0}. {1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.de.xlf b/src/Shared/Resources/xlf/Strings.shared.de.xlf index 2403a3e5472..be05ce4a4ed 100644 --- a/src/Shared/Resources/xlf/Strings.shared.de.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.de.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: Fehler beim Löschen der temporären Datei "{0}". {1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: Fehler beim Löschen der temporären Datei „{0}“. {1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.es.xlf b/src/Shared/Resources/xlf/Strings.shared.es.xlf index a93c81f506d..f8c5d9b5028 100644 --- a/src/Shared/Resources/xlf/Strings.shared.es.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.es.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: No se pudo eliminar el archivo temporal "{0}". {1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: No se pudo eliminar el archivo temporal "{0}". {1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.fr.xlf b/src/Shared/Resources/xlf/Strings.shared.fr.xlf index cc8dcec1d97..89b1346466e 100644 --- a/src/Shared/Resources/xlf/Strings.shared.fr.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.fr.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: Impossible de supprimer le fichier temporaire "{0}". {1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: Impossible de supprimer le fichier temporaire « {0} ». {1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.it.xlf b/src/Shared/Resources/xlf/Strings.shared.it.xlf index 44811a6d6bb..943424a181a 100644 --- a/src/Shared/Resources/xlf/Strings.shared.it.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.it.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: non è stato possibile eliminare il file temporaneo "{0}". {1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: non è stato possibile eliminare il file temporaneo "{0}". {1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.ja.xlf b/src/Shared/Resources/xlf/Strings.shared.ja.xlf index 756494d5448..e392ac1eff6 100644 --- a/src/Shared/Resources/xlf/Strings.shared.ja.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.ja.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: 一時ファイル "{0}" を削除できませんでした。{1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: 一時ファイル "{0}" を削除できませんでした。{1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.ko.xlf b/src/Shared/Resources/xlf/Strings.shared.ko.xlf index 6535777301b..b03debaa45e 100644 --- a/src/Shared/Resources/xlf/Strings.shared.ko.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.ko.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: 임시 파일 "{0}"을(를) 삭제하지 못했습니다. {1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: 임시 파일 "{0}"을(를) 삭제하지 못했습니다. {1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.pl.xlf b/src/Shared/Resources/xlf/Strings.shared.pl.xlf index 833406cf7f0..6731c418bbc 100644 --- a/src/Shared/Resources/xlf/Strings.shared.pl.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.pl.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: Nie można usunąć pliku tymczasowego „{0}”. {1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: nie można usunąć pliku tymczasowego „{0}”. {1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.pt-BR.xlf b/src/Shared/Resources/xlf/Strings.shared.pt-BR.xlf index 54b0024c1a7..f8cc9843098 100644 --- a/src/Shared/Resources/xlf/Strings.shared.pt-BR.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.pt-BR.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: Falha ao excluir o arquivo temporário "{0}". {1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: falha ao excluir o arquivo temporário "{0}". {1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.ru.xlf b/src/Shared/Resources/xlf/Strings.shared.ru.xlf index 1e017cd3a60..bbffde258e5 100644 --- a/src/Shared/Resources/xlf/Strings.shared.ru.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.ru.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: не удалось удалить временный файл "{0}". {1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: не удалось удалить временный файл "{0}". {1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.tr.xlf b/src/Shared/Resources/xlf/Strings.shared.tr.xlf index b3afdcac482..72a139c0b26 100644 --- a/src/Shared/Resources/xlf/Strings.shared.tr.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.tr.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: "{0}" geçici dosyası silinemedi. {1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: "{0}" geçici dosyası silinemedi. {1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.zh-Hans.xlf b/src/Shared/Resources/xlf/Strings.shared.zh-Hans.xlf index 71e7e3a3419..8be5cf61c86 100644 --- a/src/Shared/Resources/xlf/Strings.shared.zh-Hans.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.zh-Hans.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: 未能删除临时文件“{0}”。{1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: 未能删除临时文件“{0}”。{1} {2} {StrBegin="MSB5018: "} diff --git a/src/Shared/Resources/xlf/Strings.shared.zh-Hant.xlf b/src/Shared/Resources/xlf/Strings.shared.zh-Hant.xlf index a38c783e8a0..e08a6eea736 100644 --- a/src/Shared/Resources/xlf/Strings.shared.zh-Hant.xlf +++ b/src/Shared/Resources/xlf/Strings.shared.zh-Hant.xlf @@ -126,8 +126,8 @@ {StrBegin="MSB5003: "} - MSB5018: Failed to delete the temporary file "{0}". {1} - MSB5018: 無法刪除暫存檔 "{0}"。{1} + MSB5018: Failed to delete the temporary file "{0}". {1} {2} + MSB5018: 無法刪除暫存檔 "{0}"。{1}{2} {StrBegin="MSB5018: "} diff --git a/src/Shared/UnitTests/FileMatcher_Tests.cs b/src/Shared/UnitTests/FileMatcher_Tests.cs index 391ca21cc28..6d43904420f 100644 --- a/src/Shared/UnitTests/FileMatcher_Tests.cs +++ b/src/Shared/UnitTests/FileMatcher_Tests.cs @@ -1353,7 +1353,7 @@ private void DriveEnumeratingWildcardFailsAndReturns(string directoryPart, strin // Set env var to fail on drive enumerating wildcard detection Helpers.ResetStateForDriveEnumeratingWildcardTests(env, "1"); - (string[] fileList, FileMatcher.SearchAction action, string excludeFileSpec) = FileMatcher.Default.GetFiles( + (string[] fileList, FileMatcher.SearchAction action, string excludeFileSpec, _) = FileMatcher.Default.GetFiles( string.Empty, driveEnumeratingWildcard); @@ -1362,7 +1362,7 @@ private void DriveEnumeratingWildcardFailsAndReturns(string directoryPart, strin excludeFileSpec.ShouldBe(string.Empty); // Handle failing with drive enumerating exclude - (fileList, action, excludeFileSpec) = FileMatcher.Default.GetFiles( + (fileList, action, excludeFileSpec, _) = FileMatcher.Default.GetFiles( string.Empty, @"/*/*.cs", new List { driveEnumeratingWildcard }); @@ -1394,7 +1394,7 @@ public void DriveEnumeratingWildcardIsLoggedOnWindows(string driveEnumeratingWil // Set env var to log on drive enumerating wildcard detection Helpers.ResetStateForDriveEnumeratingWildcardTests(env, "0"); - (_, FileMatcher.SearchAction action, string excludeFileSpec) = FileMatcher.Default.GetFiles( + (_, FileMatcher.SearchAction action, string excludeFileSpec, _) = FileMatcher.Default.GetFiles( string.Empty, driveEnumeratingWildcard); @@ -1402,7 +1402,7 @@ public void DriveEnumeratingWildcardIsLoggedOnWindows(string driveEnumeratingWil excludeFileSpec.ShouldBe(string.Empty); // Handle logging with drive enumerating exclude - (_, action, excludeFileSpec) = FileMatcher.Default.GetFiles( + (_, action, excludeFileSpec, _) = FileMatcher.Default.GetFiles( string.Empty, @"/*/*.cs", new List { driveEnumeratingWildcard }); diff --git a/src/StringTools/StringTools.csproj b/src/StringTools/StringTools.csproj index 2eabf9a73b7..4809373c67c 100644 --- a/src/StringTools/StringTools.csproj +++ b/src/StringTools/StringTools.csproj @@ -14,6 +14,8 @@ true + True + Microsoft.NET.StringTools This package contains the $(AssemblyName) assembly which implements common string-related functionality such as weak interning. diff --git a/src/StringTools/WeakStringCache.Concurrent.cs b/src/StringTools/WeakStringCache.Concurrent.cs index bf9373e798c..423cd0f1389 100644 --- a/src/StringTools/WeakStringCache.Concurrent.cs +++ b/src/StringTools/WeakStringCache.Concurrent.cs @@ -14,6 +14,7 @@ namespace Microsoft.NET.StringTools internal sealed partial class WeakStringCache : IDisposable { private readonly ConcurrentDictionary _stringsByHashCode; + private int _count; public WeakStringCache() { @@ -62,11 +63,15 @@ public string GetOrCreateEntry(ref InternableString internable, out bool cacheHi handle = new StringWeakHandle(); handle.SetString(result); - _stringsByHashCode.TryAdd(hashCode, handle); + if (_stringsByHashCode.TryAdd(hashCode, handle)) + { + Interlocked.Increment(ref _count); + } + // Remove unused handles if our heuristic indicates that it would be productive. int scavengeThreshold = _scavengeThreshold; - if (_stringsByHashCode.Count >= scavengeThreshold) + if (_count >= scavengeThreshold) { // Before we start scavenging set _scavengeThreshold to a high value to effectively lock other threads from // running Scavenge at the same time. @@ -81,6 +86,12 @@ public string GetOrCreateEntry(ref InternableString internable, out bool cacheHi { // And do this again when the number of handles reaches double the current after-scavenge number. _scavengeThreshold = _stringsByHashCode.Count * 2; + + // This count is not exact, since there can be some Interlocked.Increment(ref _count); + // calls happening due to this not being behind a lock. + // e.g. code checks if (_stringsByHashCode.TryAdd(hashCode, handle)), we set the _count here and the code increments + // however since this is just a threshold to scavenge, it should be fine to be off by few even if that happens. + _count = _stringsByHashCode.Count; } } } diff --git a/src/Tasks/Copy.cs b/src/Tasks/Copy.cs index bc2dc2279a9..e553d1765af 100644 --- a/src/Tasks/Copy.cs +++ b/src/Tasks/Copy.cs @@ -754,7 +754,11 @@ private bool InitializeDestinationFiles() string src = FileUtilities.NormalizePath(sourceFolder.ItemSpec); string srcName = Path.GetFileName(src); - (string[] filesInFolder, _, _) = FileMatcher.Default.GetFiles(src, "**"); + (string[] filesInFolder, _, _, string globFailure) = FileMatcher.Default.GetFiles(src, "**"); + if (globFailure != null) + { + Log.LogMessage(MessageImportance.Low, globFailure); + } foreach (string file in filesInFolder) { diff --git a/src/Tasks/CreateItem.cs b/src/Tasks/CreateItem.cs index bb259445d96..56cb7b1c021 100644 --- a/src/Tasks/CreateItem.cs +++ b/src/Tasks/CreateItem.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; @@ -94,6 +94,7 @@ public override bool Execute() return !Log.HasLoggedErrors; } +#nullable enable /// /// Create the list of output items. /// @@ -137,11 +138,10 @@ private List CreateOutputItems(Dictionary metadataTab /// /// Expand wildcards in the item list. /// - private (ITaskItem[] Element, bool NoLoggedErrors) TryExpandWildcards(ITaskItem[] expand, string attributeType) + private (ITaskItem[]? Element, bool NoLoggedErrors) TryExpandWildcards(ITaskItem[]? expand, string attributeType) { // Used to detect and log drive enumerating wildcard patterns. string[] files; - FileMatcher.SearchAction action = FileMatcher.SearchAction.None; string itemSpec = string.Empty; if (expand == null) @@ -178,7 +178,11 @@ private List CreateOutputItems(Dictionary metadataTab } else if (isLegalFileSpec) { - (files, action, _) = FileMatcher.Default.GetFiles(null /* use current directory */, i.ItemSpec); + (files, _, _, string? globFailure) = FileMatcher.Default.GetFiles(null /* use current directory */, i.ItemSpec); + if (globFailure != null) + { + Log.LogMessage(MessageImportance.Low, globFailure); + } foreach (string file in files) { diff --git a/src/Tasks/Microsoft.Common.CurrentVersion.targets b/src/Tasks/Microsoft.Common.CurrentVersion.targets index 2e40e7cd86c..3fdfff8ac43 100644 --- a/src/Tasks/Microsoft.Common.CurrentVersion.targets +++ b/src/Tasks/Microsoft.Common.CurrentVersion.targets @@ -2568,6 +2568,24 @@ Copyright (C) Microsoft Corporation. All rights reserved. $(_GenerateBindingRedirectsIntermediateAppConfig) + + true + true + + + + + + + + diff --git a/src/Tasks/Resources/xlf/Strings.cs.xlf b/src/Tasks/Resources/xlf/Strings.cs.xlf index 0cad41a5e5e..ed494375293 100644 --- a/src/Tasks/Resources/xlf/Strings.cs.xlf +++ b/src/Tasks/Resources/xlf/Strings.cs.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: Hodnota vlastnosti BaseIntermediateOutputPath byla po použití nástrojem MSBuild upravena, což může vést k neočekávaným výsledkům sestavení. Nástroje jako NuGet budou místo toho zapisovat výstupy do cesty určené parametrem MSBuildProjectExtensionsPath. Chcete-li nastavit tuto vlastnost, je třeba provést před importem souboru Microsoft.Common.props, například pomocí vlastnosti Directory.Build.props. Další informace najdete na https://go.microsoft.com/fwlink/?linkid=869650 {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + Vnitřní chyba MSBuild: Cíl GetTargetFrameworks, který není CrossTargeting, by se neměl používat v sestavení křížového cílení (vnějšího) Skipping unpublishable project. - Skipping unpublishable project. + Přeskakuje se nepublikovatelný projekt. Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + Publikování je platné jenom pro typy projektů Aplikace pro Windows nebo Konzolová aplikace. The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + Vlastnost BaseOutputPath/OutputPath není nastavena pro '{0}' projektu. Zkontrolujte prosím, jestli jste pro tento projekt zadali platnou kombinaci konfigurace a platformy. Configuration='{1}' Platform='{2}'. Tato chyba se může zobrazit i v případě, že se některý jiný projekt pokouší sledovat odkaz mezi projekty na tento projekt, projekt se uvolnil nebo není zahrnutý v řešení a odkazující projekt se nestaví pomocí stejné nebo ekvivalentní konfigurace nebo platformy. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + Vlastnost BaseOutputPath/OutputPath není nastavena pro '{0}' projektu. Zkontrolujte prosím, jestli jste pro tento projekt zadali platnou kombinaci konfigurace a platformy. Configuration='{1}' Platform='{2}'. Tato zpráva se vám může zobrazit, protože se pokoušíte sestavit projekt bez souboru řešení a zadali jste jinou než výchozí konfiguraci nebo platformu, která pro tento projekt neexistuje. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: Hodnota vlastnosti MSBuildProjectExtensionsPath byla po použití nástrojem MSBuild upravena, což může vést k neočekávaným výsledkům sestavení. Chcete-li nastavit tuto vlastnost, je třeba provést před importem souboru Microsoft.Common.props, například pomocí vlastnosti Directory.Build.props. Další informace najdete na https://go.microsoft.com/fwlink/?linkid=869650 {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0}: {1} typ položky je zastaralý. Místo toho vygeneruje položky EmbeddedResource s metadaty WithCulture='{2}', Type='{3}' a optional LogicalName. MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: Možnost PreferNativeArm64 vyžaduje manifest aplikace Win32 a vzájemně se vylučuje s možností NoWin32Manifest. {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: Odkazovaný projekt {0} neexistuje. MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: Pokud je povolená možnost PreferNativeArm64, ujistěte se, že je platforma nastavená na AnyCPU. Aktuální platforma: {0}. {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: Možnosti Prefer32Bit a PreferNativeArm64 se vzájemně vylučují. Povolte prosím jenom jednu z nich. {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + {0} musí končit koncovým lomítkem. Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + Nelze spustit '{0}', protože typ výstupu projektu není '.exe' A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + K publikování tohoto projektu se vyžaduje podpisový klíč. Zadejte hodnotu ManifestKeyFile nebo ManifestCertificateThumbprint. Publikováním z Visual Studio se automaticky nakonfiguruje podpisový klíč pro tento projekt. MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: Zadaná závažnost není relevantní: {0} pro zprávu: {1}. {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0}: {1} typ položky je zastaralý. Použijte místo toho položky EmbeddedResource. diff --git a/src/Tasks/Resources/xlf/Strings.de.xlf b/src/Tasks/Resources/xlf/Strings.de.xlf index cec4283e799..8bd7effeaef 100644 --- a/src/Tasks/Resources/xlf/Strings.de.xlf +++ b/src/Tasks/Resources/xlf/Strings.de.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: Der Wert der Eigenschaft "BaseIntermediateOutputPath" wurde geändert, nachdem er von MSBuild verwendet wurde. Dies kann zu unerwarteten Buildergebnissen führen. Tools wie NuGet schreiben stattdessen Ausgaben in den durch "MSBuildProjectExtensionsPath" angegebenen Pfad. Um diese Eigenschaft festzulegen, müssen Sie dies tun, bevor Microsoft.Common.props importiert wird, z. B. mithilfe von Directory.Build.props. Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=869650" {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + Interner MSBuild-Fehler: Das Nicht-CrossTargeting-GetTargetFrameworks-Ziel darf nicht im Cross-Targeting-Build (outer) verwendet werden. Skipping unpublishable project. - Skipping unpublishable project. + Nicht veröffentlichungsfähiges Projekt wird übersprungen. Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + Die Veröffentlichung ist nur für Projekttypen vom Typ "Windows-Anwendung" oder "Konsolenanwendung" gültig. The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + Die Eigenschaft "BaseOutputPath/OutputPath" ist für das Projekt '{0}' nicht festgelegt. Stellen Sie sicher, dass Sie eine gültige Kombination aus Konfiguration und Plattform für dieses Projekt angegeben haben. Configuration='{1}' Platform='{2}'. Dieser Fehler kann auch auftreten, wenn ein anderes Projekt versucht, einem Projekt-zu-Projekt-Verweis auf dieses Projekt zu folgen, dieses Projekt entladen wurde oder nicht in der Projektmappe enthalten ist und das verweisende Projekt nicht mit derselben oder einer äquivalenten Konfiguration oder Plattform erstellt wird. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + Die Eigenschaft "BaseOutputPath/OutputPath" ist für das Projekt '{0}' nicht festgelegt. Stellen Sie sicher, dass Sie eine gültige Kombination aus Konfiguration und Plattform für dieses Projekt angegeben haben. Configuration='{1}' Platform='{2}'. Diese Meldung wird möglicherweise angezeigt, weil Sie versuchen, ein Projekt ohne Projektmappendatei zu erstellen, und eine nicht standardmäßige Konfiguration oder Plattform angegeben haben, die für dieses Projekt nicht vorhanden ist. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: Der Wert der Eigenschaft "MSBuildProjectExtensionsPath" wurde geändert, nachdem sie von MSBuild verwendet wurde. Dies kann zu unerwarteten Buildergebnissen führen. Um diese Eigenschaft festzulegen, müssen Sie dies tun, bevor Microsoft.Common.props importiert wird, z. B. mithilfe von Directory.Build.props. Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=869650 {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0}: {1} Elementtyp ist veraltet. Geben Sie stattdessen EmbeddedResource-Elemente mit den Metadaten WithCulture='{2}', Type='{3}' und optional LogicalName aus. MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: "PreferNativeArm64" erfordert ein Win32-Anwendungsmanifest und schließt sich mit "NoWin32Manifest" gegenseitig aus. {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: Das referenzierte Projekt {0} ist nicht vorhanden. MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: Wenn "PreferNativeArm64" aktiviert ist, stellen Sie sicher, dass die Plattform auf AnyCPU festgelegt ist. Aktuelle Plattform: {0}. {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: Die Optionen "Prefer32Bit" und "PreferNativeArm64" schließen sich gegenseitig aus. Aktivieren Sie nur eine. {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + Die {0} muss mit einem nachstehenden Schrägstrich enden. Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + '{0}' kann nicht ausgeführt werden, da der Projektausgabetyp nicht '.exe' ist. A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + Zum Veröffentlichen dieses Projekts ist ein Signaturschlüssel erforderlich. Geben Sie einen ManifestKeyFile- oder ManifestCertificateThumbprint-Wert an. Durch die Veröffentlichung über Visual Studio wird automatisch ein Signaturschlüssel für dieses Projekt konfiguriert. MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: Der angegebene Schweregrad ist nicht relevant: "{0}" für die Nachricht: "{1}". {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0}: {1} Elementtyp ist veraltet. Verwenden Sie stattdessen EmbeddedResource-Elemente. diff --git a/src/Tasks/Resources/xlf/Strings.es.xlf b/src/Tasks/Resources/xlf/Strings.es.xlf index 2bd15840d9a..15ef00ad1aa 100644 --- a/src/Tasks/Resources/xlf/Strings.es.xlf +++ b/src/Tasks/Resources/xlf/Strings.es.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: el valor de la propiedad "BaseIntermediateOutputPath" se modificó después de que MSBuild lo usara, lo que puede dar lugar a resultados de compilación inesperados. Las herramientas como NuGet escribirán las salidas en la ruta de acceso especificada por "MSBuildProjectExtensionsPath" en su lugar. Para establecer esta propiedad, debe hacerlo antes de importar Microsoft.Common.props, por ejemplo, mediante Directory.Build.props. Para obtener más información, visite https://go.microsoft.com/fwlink/?linkid=869650" {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + Error interno de MSBuild: el destino GetTargetFrameworks que no es CrossTargeting no debe usarse en la compilación de destinatarios cruzados (externo). Skipping unpublishable project. - Skipping unpublishable project. + Omitiendo el proyecto que no se puede publicar. Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + La publicación solo es válida para los tipos de proyecto "Aplicación de Windows" o "Aplicación de consola". The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + La propiedad BaseOutputPath/OutputPath no está establecida para el proyecto '{0}'. Asegúrese de que ha especificado una combinación válida de configuración y plataforma para este proyecto. Configuration='{1}' Platform='{2}'. Este error también puede aparecer si otro proyecto está intentando seguir una referencia de proyecto a proyecto a este proyecto, este proyecto se ha descargado o no está incluido en la solución y el proyecto al que hace referencia no se compila con la misma configuración o plataforma, o si es equivalente. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + La propiedad BaseOutputPath/OutputPath no está establecida para el proyecto '{0}'. Asegúrese de que ha especificado una combinación válida de configuración y plataforma para este proyecto. Configuration='{1}' Platform='{2}'. Puede que vea este mensaje porque está intentando compilar un proyecto sin un archivo de solución y ha especificado una plataforma o configuración no predeterminada que no existe para este proyecto. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: el valor de la propiedad "MSBuildProjectExtensionsPath" se modificó después de que MSBuild lo usara, lo que puede dar lugar a resultados de compilación inesperados. Para establecer esta propiedad, debe hacerlo antes de importar Microsoft.Common.props, por ejemplo, mediante Directory.Build.props. Para obtener más información, visite https://go.microsoft.com/fwlink/?linkid=869650 {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0}: {1} tipo de elemento está en desuso. Emita elementos EmbeddedResource en su lugar, con los metadatos WithCulture='{2}', Type='{3}' y LogicalName opcional. MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: PreferNativeArm64 requiere un manifiesto de aplicación Win32 y se excluye mutuamente con NoWin32Manifest. {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: el {0} de proyecto al que se hace referencia no existe. MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: cuando PreferNativeArm64 esté habilitado, asegúrese de que la plataforma está establecida en AnyCPU. Plataforma actual: {0}. {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: las opciones Prefer32Bit y PreferNativeArm64 se excluyen mutuamente. Habilite solo una. {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + El {0} debe terminar con una barra diagonal final. Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + No se puede ejecutar '{0}' porque el tipo de salida del proyecto no es '.exe' A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + Se requiere una clave de firma para publicar este proyecto. Especifique un valor manifestKeyFile o ManifestCertificateThumbprint. La publicación desde Visual Studio configurará automáticamente una clave de firma para este proyecto. MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: la gravedad especificada no es relevante: '{0}' para el mensaje: '{1}'. {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0}: {1} tipo de elemento está en desuso. Use los elementos EmbeddedResource en su lugar. diff --git a/src/Tasks/Resources/xlf/Strings.fr.xlf b/src/Tasks/Resources/xlf/Strings.fr.xlf index 457552fe681..023466072c9 100644 --- a/src/Tasks/Resources/xlf/Strings.fr.xlf +++ b/src/Tasks/Resources/xlf/Strings.fr.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: la valeur de la propriété « BaseIntermediateOutputPath » a été modifiée après son utilisation par MSBuild, ce qui peut entraîner des résultats de build inattendus. Les outils tels que NuGet écrivent des sorties dans le chemin spécifié par « MSBuildProjectExtensionsPath » à la place. Pour définir cette propriété, il faut vous y prendre avant l'importation de Microsoft.Common.props, par exemple en utilisant Directory.Build.props. Pour plus d’informations, visitez https://go.microsoft.com/fwlink/?linkid=869650 » {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + Erreur MSBuild interne : la cible GetTargetFrameworks non CrossTargeting ne doit pas être utilisée dans la build de ciblage croisé (externe) Skipping unpublishable project. - Skipping unpublishable project. + Projet non disponible ignoré. Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + La publication n’est valide que pour les types de projet 'Application Windows' ou 'Application console'. The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + La propriété BaseOutputPath/OutputPath n’est pas définie pour le projet '{0}'. Veuillez case activée pour vous assurer que vous avez spécifié une combinaison valide de configuration et de plateforme pour ce projet. Configuration='{1}' Plateforme='{2}'. Cette erreur peut également se produire si un autre projet tente de suivre une référence projet à projet à ce projet, que ce projet a été déchargé ou n’est pas inclus dans la solution, et que le projet de référence ne génère pas à l’aide d’une configuration ou d’une plateforme identique ou équivalente. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + La propriété BaseOutputPath/OutputPath n’est pas définie pour le projet '{0}'. Veuillez case activée pour vous assurer que vous avez spécifié une combinaison valide de configuration et de plateforme pour ce projet. Configuration='{1}' Plateforme='{2}'. Vous voyez peut-être ce message, car vous essayez de générer un projet sans fichier solution et vous avez spécifié une configuration ou une plateforme qui n’existe pas par défaut pour ce projet. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: la valeur de la propriété « MSBuildProjectExtensionsPath » a été modifiée après son utilisation par MSBuild, ce qui peut entraîner des résultats de build inattendus. Pour définir cette propriété, il faut vous y prendre avant l'importation de Microsoft.Common.props, par exemple en utilisant Directory.Build.props. Pour plus d’informations, veuillez consulter https://go.microsoft.com/fwlink/?linkid=869650 {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0} : {1} type d’élément est déconseillé. Émettez des éléments EmbeddedResource à la place, avec des métadonnées WithCulture='{2}', Type='{3}' et LogicalName facultatif. MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: PreferNativeArm64 nécessite un manifeste d’application Win32 et s’exclue mutuellement de NoWin32Manifest. {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: le projet {0} référencé n’existe pas. MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: lorsque PreferNativeArm64 est activé, vérifiez que la plateforme est définie sur AnyCPU. Plateforme actuelle : {0}. {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: les options Prefer32Bit et PreferNativeArm64 s’excluent mutuellement. N’activez qu’un seul. {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + Le {0} doit se terminer par une barre oblique de fin. Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + Impossible d’exécuter '{0}', car le type de sortie du projet n’est pas '.exe' A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + Une clé de signature est nécessaire pour publier ce projet. Spécifiez une valeur ManifestKeyFile ou ManifestCertificateThumbprint. La publication à partir de Visual Studio configurera automatiquement une clé de signature pour ce projet. MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: la gravité spécifiée n’est pas pertinente : «{0}» pour le message : «{1}». {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0} : {1} type d’élément est déconseillé. Utilisez des éléments EmbeddedResource à la place. diff --git a/src/Tasks/Resources/xlf/Strings.it.xlf b/src/Tasks/Resources/xlf/Strings.it.xlf index 6666579d8be..8724e9b865a 100644 --- a/src/Tasks/Resources/xlf/Strings.it.xlf +++ b/src/Tasks/Resources/xlf/Strings.it.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: il valore della proprietà "BaseIntermediateOutputPath" è stato modificato dopo essere stato usato da MSBuild e questo può causare risultati di compilazione imprevisti. Strumenti come NuGet scriveranno gli output nel percorso specificato da "MSBuildProjectExtensionsPath". Per impostare questa proprietà, è necessario eseguire questa operazione prima di importare Microsoft.Common.props, ad esempio usando Directory.Build.props. Per altre informazioni, visita https://go.microsoft.com/fwlink/?linkid=869650" {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + Errore interno di MSBuild: la destinazione GetTargetFrameworks non CrossTargeting non deve essere usata nella compilazione cross-targeting (esterna) Skipping unpublishable project. - Skipping unpublishable project. + Il progetto non pubblicato verrà ignorato. Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + La pubblicazione è valida solo per i tipi di progetto 'Applicazione Windows' o 'Applicazione console'. The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + La proprietà BaseOutputPath/OutputPath non è impostata per il progetto '{0}'. Assicurarsi di aver specificato una combinazione valida di Configurazione e Piattaforma per questo progetto. Configuration='{1}' Platform='{2}'. Questo errore può verificarsi anche se un altro progetto sta tentando di seguire un riferimento da progetto a progetto a questo progetto, se il progetto è stato scaricato o non è incluso nella soluzione e il progetto di riferimento non viene compilato usando la stessa configurazione o una piattaforma equivalente. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + La proprietà BaseOutputPath/OutputPath non è impostata per il progetto '{0}'. Assicurarsi di aver specificato una combinazione valida di Configurazione e Piattaforma per questo progetto. Configuration='{1}' Platform='{2}'. È possibile che questo messaggio venga visualizzato perché si sta tentando di compilare un progetto senza un file di soluzione e si è specificata una configurazione o una piattaforma non predefinita che non esiste per questo progetto. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: il valore della proprietà "MSBuildProjectExtensionsPath" è stato modificato dopo essere stato usato da MSBuild e questo può causare risultati di compilazione imprevisti. Per impostare questa proprietà, è necessario eseguire questa operazione prima di importare Microsoft.Common.props, ad esempio usando Directory.Build.props. Per altre informazioni, visitare https://go.microsoft.com/fwlink/?linkid=869650 {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0}: {1} tipo di elemento è deprecato. Creare gli elementi EmbeddedResource con i metadati WithCulture='{2}', Type='{3}' e LogicalName facoltativo. MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: PreferNativeArm64 richiede un manifesto dell'applicazione Win32 e si esclude a vicenda con NoWin32Manifest. {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: il {0} del progetto a cui si fa riferimento non esiste. MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: quando l'opzione PreferNativeArm64 è abilitata, assicurarsi che la piattaforma sia impostata su AnyCPU. Piattaforma corrente: {0}. {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: le opzioni Prefer32Bit e PreferNativeArm64 si escludono a vicenda. Abilitarne solo una. {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + Il {0} deve terminare con una barra finale. Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + Non è possibile eseguire '{0}' perché il tipo di output del progetto non è '.exe' A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + Per pubblicare il progetto, è necessaria una chiave di firma. Specificare un valore ManifestKeyFile o ManifestCertificateThumbprint. La pubblicazione da Visual Studio configurerà automaticamente una chiave di firma per questo progetto. MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: la gravità specificata non è rilevante: "{0}" per il messaggio: "{1}". {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0}: {1} tipo di elemento è deprecato. Usare gli elementi EmbeddedResource. diff --git a/src/Tasks/Resources/xlf/Strings.ja.xlf b/src/Tasks/Resources/xlf/Strings.ja.xlf index 8f95ab3e130..fb42f9471c7 100644 --- a/src/Tasks/Resources/xlf/Strings.ja.xlf +++ b/src/Tasks/Resources/xlf/Strings.ja.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: プロパティ "BaseIntermediateOutputPath" の値は MSBuild で使用された後に変更されたため、予期しないビルド結果が発生する可能性があります。NuGet などのツールは、代わりに "MSBuildProjectExtensionsPath" で指定されたパスに出力を書き込みます。このプロパティを設定するには、たとえば Directory.Build.props を使用して Microsoft.Common.props をインポートする前に設定する必要があります。 詳細については、https://go.microsoft.com/fwlink/?linkid=869650 をご覧ください。 {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + 内部 MSBuild エラー: CrossTargeting 以外の GetTargetFrameworks ターゲットをクロス ターゲット (外部) ビルドで使用することはできません Skipping unpublishable project. - Skipping unpublishable project. + 発行できないプロジェクトをスキップしています。 Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + 発行は、'Windows アプリケーション' または 'コンソール アプリケーション' プロジェクトの種類に対してのみ有効です。 The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + プロジェクト '{0}' に BaseOutputPath/OutputPath プロパティが設定されていません。 このプロジェクトの構成とプラットフォームの有効な組み合わせが指定されていることを確認チェック。 Configuration='{1}' Platform='{2}'。このエラーは、他のプロジェクトがこのプロジェクトへのプロジェクト間参照に従おうとしている場合、このプロジェクトがアンロードされたか、ソリューションに含まれていない場合、および参照元のプロジェクトが同じまたは同等の構成またはプラットフォームを使用してビルドされていない場合にも表示されます。 LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + プロジェクト '{0}' に BaseOutputPath/OutputPath プロパティが設定されていません。 このプロジェクトの構成とプラットフォームの有効な組み合わせが指定されていることを確認チェック。 Configuration='{1}' Platform='{2}'。ソリューション ファイルを使用せずにプロジェクトをビルドしようとして、このプロジェクトに存在しない既定以外の構成またはプラットフォームを指定したため、このメッセージが表示される可能性があります。 LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: プロパティ "MSBuildProjectExtensionsPath" の値は、MSBuild によって使用された後に変更されたため、予期しないビルド結果が発生する可能性があります。 このプロパティを設定するには、たとえば Directory.Build.props を使用して Microsoft.Common.props をインポートする前に設定する必要があります。 詳細については、https://go.microsoft.com/fwlink/?linkid=869650 にアクセスしてください {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0}: {1} 項目の種類は非推奨です。代わりに、メタデータ WithCulture='{2}'、Type='{3}'、およびオプションの LogicalName を使用して EmbeddedResource 項目を生成します。 MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: PreferNativeArm64 は、Win32 アプリケーション マニフェストを必要とし、NoWin32Manifest と相互に排他的です。 {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: 参照されているプロジェクト {0} が存在しません。 MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: PreferNativeArm64 が有効である場合、プラットフォームが AnyCPU に設定されていることを確認してください。現在のプラットフォーム: {0}。 {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: Prefer32Bit オプションと PreferNativeArm64 オプションは相互に排他的です。1 つだけ有効にしてください。 {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + {0} の末尾はスラッシュにする必要があります。 Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + プロジェクト出力の種類が '.exe' されていないため、'{0}' を実行できません A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + このプロジェクトを公開するには、署名キーが必要です。ManifestKeyFile または ManifestCertificateThumbprint の値を指定してください。Visual Studioから発行すると、このプロジェクトの署名キーが自動的に構成されます。 MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: 指定された重要度に関連性がありません: メッセージの '{0}': '{1}'。 {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0}: {1} 項目の種類は非推奨です。代わりに EmbeddedResource 項目を使用してください。 diff --git a/src/Tasks/Resources/xlf/Strings.ko.xlf b/src/Tasks/Resources/xlf/Strings.ko.xlf index 261f6512edb..488674964ff 100644 --- a/src/Tasks/Resources/xlf/Strings.ko.xlf +++ b/src/Tasks/Resources/xlf/Strings.ko.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: "BaseIntermediateOutputPath" 속성의 값이 MSBuild에서 사용된 후 수정되었으며, 이로 인해 예기치 않은 빌드 결과가 발생할 수 있습니다. NuGet과 같은 도구는 대신 "MSBuildProjectExtensionsPath"로 지정된 경로에 출력을 씁니다. 이 속성을 설정하려면 Microsoft.Common.props를 가져오기 전에 먼저 설정해야 합니다(예: Directory.Build.props 사용). 자세한 내용은 https://go.microsoft.com/fwlink/?linkid=869650"를 참조하세요. {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + 내부 MSBuild 오류: 교차 대상(외부) 빌드에 CrossTargeting이 아닌 GetTargetFrameworks 대상을 사용하면 안 됩니다. Skipping unpublishable project. - Skipping unpublishable project. + 게시할 수 없는 프로젝트를 건너뛰는 중입니다. Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + 게시는 'Windows 응용 프로그램' 또는 '콘솔 응용 프로그램' 프로젝트 형식에 대해서만 유효합니다. The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + 프로젝트 '{0}' BaseOutputPath/OutputPath 속성이 설정되지 않았습니다. 검사 이 프로젝트에 대해 올바른 구성 및 플랫폼 조합을 지정했는지 확인하세요. 구성='{1}' 플랫폼='{2}'. 이 오류는 다른 프로젝트에서 이 프로젝트에 대한 프로젝트 간 참조를 따르려고 하거나, 이 프로젝트가 언로드되었거나 솔루션에 포함되지 않았으며, 참조하는 프로젝트가 동일하거나 동등한 구성 또는 플랫폼을 사용하여 빌드되지 않는 경우에도 나타날 수 있습니다. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + 프로젝트 '{0}' BaseOutputPath/OutputPath 속성이 설정되지 않았습니다. 검사 이 프로젝트에 대해 올바른 구성 및 플랫폼 조합을 지정했는지 확인하세요. 구성='{1}' 플랫폼='{2}'. 솔루션 파일 없이 프로젝트를 빌드하려고 하는데 이 프로젝트에 대해 존재하지 않는 기본값이 아닌 구성 또는 플랫폼을 지정했기 때문에 이 메시지가 표시될 수 있습니다. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: "MSBuildProjectExtensionsPath" 속성의 값이 MSBuild에서 사용된 후 수정되어 예기치 않은 빌드 결과가 발생할 수 있습니다. 이 속성을 설정하려면 Microsoft.Common.props를 가져오기 전에 먼저 설정해야 합니다(예: Directory.Build.props 사용). 자세한 내용은 https://go.microsoft.com/fwlink/?linkid=869650 참조하세요. {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0}: {1} 항목 형식은 사용되지 않습니다. Metadata WithCulture='{2}', Type='{3}' 및 선택적 LogicalName을 사용하여 EmbeddedResource 항목을 내보내세요. MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: PreferNativeArm64에는 Win32 애플리케이션 매니페스트가 필요하며 NoWin32Manifest와 함께 사용할 수 없습니다. {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: 참조된 프로젝트 {0} 없습니다. MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: PreferNativeArm64를 사용하도록 설정한 경우 플랫폼이 AnyCPU로 설정되어 있는지 확인합니다. 현재 플랫폼: {0}. {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: Prefer32Bit 및 PreferNativeArm64 옵션은 함께 사용할 수 없습니다. 하나만 사용하도록 설정하세요. {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + {0} 후행 슬래시로 끝나야 합니다. Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + 프로젝트 출력 형식이 '.exe' 않으므로 '{0}' 실행할 수 없습니다. A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + 이 프로젝트를 게시하려면 서명 키가 필요합니다. ManifestKeyFile 또는 ManifestCertificateThumbprint 값을 지정하십시오. Visual Studio 게시하면 이 프로젝트에 대한 서명 키가 자동으로 구성됩니다. MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: 지정한 심각도가 관련되지 않습니다. '{1}' 메시지의 '{0}'. {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0}: {1} 항목 형식은 사용되지 않습니다. EmbeddedResource 항목을 대신 사용합니다. diff --git a/src/Tasks/Resources/xlf/Strings.pl.xlf b/src/Tasks/Resources/xlf/Strings.pl.xlf index dc10f6cc748..1be6493ac7e 100644 --- a/src/Tasks/Resources/xlf/Strings.pl.xlf +++ b/src/Tasks/Resources/xlf/Strings.pl.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: Wartość właściwości "BaseIntermediateOutputPath" została zmodyfikowana po użyciu przez program MSBuild, co może prowadzić do nieoczekiwanych wyników kompilacji. Narzędzia, takie jak NuGet, będą zamiast tego zapisywać dane wyjściowe w ścieżce określonej przez parametr "MSBuildProjectExtensionsPath". Aby ustawić tę właściwość, należy to zrobić przed zaimportowaniem elementu Microsoft.Common.props, na przykład za pomocą metody Directory.Build.props. Aby uzyskać więcej informacji, odwiedź stronę https://go.microsoft.com/fwlink/?linkid=869650" {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + Wewnętrzny błąd MSBuild: element docelowy GetTargetFrameworks inny niż CrossTargeting nie powinien być używany w kompilacji typu cross targeting (zewnętrznej) Skipping unpublishable project. - Skipping unpublishable project. + Pomijanie projektu, który można cofnąć publikowania. Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + Publikowanie jest prawidłowe tylko dla typów projektów "Aplikacja systemu Windows" lub "Aplikacja konsoli". The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + Właściwość BaseOutputPath/OutputPath nie jest ustawiona dla '{0}' projektu. Upewnij się, że określono prawidłową kombinację konfiguracji i platformy dla tego projektu. Configuration='{1}' Platform='{2}'. Ten błąd może również wystąpić, jeśli inny projekt próbuje wykonać odwołanie między projektami do tego projektu, ten projekt został zwolniony lub nie jest uwzględniony w rozwiązaniu, a projekt odwołujący się nie kompiluje się przy użyciu tej samej lub równoważnej konfiguracji lub platformy. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + Właściwość BaseOutputPath/OutputPath nie jest ustawiona dla '{0}' projektu. Upewnij się, że określono prawidłową kombinację konfiguracji i platformy dla tego projektu. Configuration='{1}' Platform='{2}'. Być może widzisz ten komunikat, ponieważ próbujesz skompilować projekt bez pliku rozwiązania i określono inną niż domyślna konfigurację lub platformę, która nie istnieje dla tego projektu. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: Wartość właściwości "MSBuildProjectExtensionsPath" została zmodyfikowana po użyciu przez program MSBuild, co może prowadzić do nieoczekiwanych wyników kompilacji. Aby ustawić tę właściwość, należy to zrobić przed zaimportowaniem elementu Microsoft.Common.props, na przykład za pomocą metody Directory.Build.props. Aby uzyskać więcej informacji, odwiedź stronę https://go.microsoft.com/fwlink/?linkid=869650 {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0}: typ elementu {1} jest przestarzały. Zamiast tego emituj elementy EmbeddedResource z parametrami WithCulture='{2}', Type='{3}' i opcjonalną nazwą logiczną. MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: element PreferNativeArm64 wymaga manifestu aplikacji Win32 i wzajemnie się wyklucza z elementem NoWin32Manifest. {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: {0} projektu, do którego istnieje odwołanie, nie istnieje. MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: po włączeniu elementu PreferNativeArm64 upewnij się, że platforma ma wartość AnyCPU. Bieżąca platforma: {0}. {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: opcje Prefer32Bit i PreferNativeArm64 wykluczają się wzajemnie. Włącz tylko jedną. {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + {0} musi kończyć się ukośnikiem końcowym. Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + Nie można uruchomić '{0}', ponieważ typ wyjściowy projektu nie jest '.exe' A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + Do opublikowania tego projektu jest wymagany klucz podpisywania. Określ wartość ManifestKeyFile lub ManifestCertificateThumbprint. Opublikowanie z Visual Studio spowoduje automatyczne skonfigurowanie klucza podpisywania dla tego projektu. MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: określona ważność nie jest istotna: „{0}” dla komunikatu: „{1}”. {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0}: typ elementu {1} jest przestarzały. Zamiast tego użyj elementów EmbeddedResource. diff --git a/src/Tasks/Resources/xlf/Strings.pt-BR.xlf b/src/Tasks/Resources/xlf/Strings.pt-BR.xlf index 93e88feced3..dbf2d3b1507 100644 --- a/src/Tasks/Resources/xlf/Strings.pt-BR.xlf +++ b/src/Tasks/Resources/xlf/Strings.pt-BR.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: o valor da propriedade "BaseIntermediateOutputPath" foi modificado depois de ser usado pelo MSBuild, o que pode levar a resultados de build inesperados. Ferramentas como o NuGet gravarão saídas no caminho especificado por "MSBuildProjectExtensionsPath". Para definir esta propriedade, você deve fazer isso antes que Microsoft.Common.props seja importado, por exemplo, usando Directory.Build.props. Para obter mais informações, visite https://go.microsoft.com/fwlink/?linkid=869650" {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + Erro interno do MSBuild: o destino GetTargetFrameworks sem Direcionamento Cruzado não deve ser usado no build de direcionamento cruzado (externo) Skipping unpublishable project. - Skipping unpublishable project. + Ignorando projeto não publicável. Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + A publicação só é válida para tipos de projeto 'Aplicativo do Windows' ou 'Aplicativo de Console'. The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + A propriedade BaseOutputPath/OutputPath não está definida para o projeto '{0}'. Verifique marcar se você especificou uma combinação válida de Configuração e Plataforma para este projeto. Configuration='{1}' Platform='{2}'. Este erro também poderá aparecer se algum outro projeto estiver tentando seguir uma referência de projeto a projeto para este projeto, este projeto tiver sido descarregado ou não estiver incluído na solução, e o projeto de referência não compilar usando a mesma Configuração ou uma Configuração ou Plataforma equivalente. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + A propriedade BaseOutputPath/OutputPath não está definida para o projeto '{0}'. Verifique marcar se você especificou uma combinação válida de Configuração e Plataforma para este projeto. Configuration='{1}' Platform='{2}'. Você pode estar vendo esta mensagem porque está tentando criar um projeto sem um arquivo de solução e especificou uma Configuração ou Plataforma não padrão que não existe para este projeto. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: o valor da propriedade "MSBuildProjectExtensionsPath" foi modificado depois de ser usado pelo MSBuild, o que pode levar a resultados de build inesperados. Para definir esta propriedade, você deve fazer isso antes que Microsoft.Common.props seja importado, por exemplo, usando Directory.Build.props. Para obter mais informações, visite https://go.microsoft.com/fwlink/?linkid=869650 {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0}: {1} tipo de item foi preterido. Emita itens EmbeddedResource em vez disso, com metadados WithCulture='{2}', Type='{3}' e LogicalName opcional. MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: PreferNativeArm64 requer um manifesto do aplicativo Win32 e é mutuamente exclusiva com NoWin32Manifest. {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: o projeto referenciado {0} não existe. MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: Quando PreferNativeArm64 estiver habilitado, certifique-se de que a Plataforma esteja definida como AnyCPU. Plataforma Atual: {0}. {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: As opções Prefer32Bit e PreferNativeArm64 são mutuamente exclusivas. Habilite apenas um. {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + O {0} deve terminar com uma barra à direita. Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + Não é possível '{0}' porque o tipo de saída do projeto não '.exe' A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + Uma chave de assinatura é necessária para publicar este projeto. Especifique um valor ManifestKeyFile ou ManifestCertificateThumbprint. A publicação do Visual Studio configurará automaticamente uma chave de assinatura para este projeto. MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: A gravidade especificada não é relevante: '{0}' para a mensagem: '{1}'. {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0}: {1} tipo de item foi preterido. Use itens EmbeddedResource. diff --git a/src/Tasks/Resources/xlf/Strings.ru.xlf b/src/Tasks/Resources/xlf/Strings.ru.xlf index 96e004b0781..1458e4be35d 100644 --- a/src/Tasks/Resources/xlf/Strings.ru.xlf +++ b/src/Tasks/Resources/xlf/Strings.ru.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: значение свойства "BaseIntermediateOutputPath" было изменено после использования MSBuild, что может привести к непредвиденным результатам сборки. Такие инструменты, как NuGet, будут записывать выходные данные по пути, указанному в "MSBuildProjectExtensionsPath". Чтобы задать это свойство, необходимо сделать это перед импортом Microsoft.Common.props, например с помощью Directory.Build.props. Дополнительные сведения см. в https://go.microsoft.com/fwlink/?linkid=869650" {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + Внутренняя ошибка MSBuild: целевой объект GetTargetFrameworks, отличный от CrossTargeting, не должен использоваться при межнаправленной (внешней) сборке Skipping unpublishable project. - Skipping unpublishable project. + Пропуск неопубликуемого проекта. Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + Публикация допустима только для типов проектов "Приложение Windows" или "Консольное приложение". The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + Свойство BaseOutputPath/OutputPath не задано для проекта '{0}'. Убедитесь проверка что для этого проекта указано допустимое сочетание конфигурации и платформы. Configuration='{1}' Platform='{2}'. Эта ошибка также может появиться, если другой проект пытается подписаться на ссылку проекта на этот проект, этот проект был выгружен или не включен в решение, а ссылающийся проект не выполняет сборку с использованием той же или эквивалентной конфигурации или платформы. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + Свойство BaseOutputPath/OutputPath не задано для проекта '{0}'. Убедитесь проверка что для этого проекта указано допустимое сочетание конфигурации и платформы. Configuration='{1}' Platform='{2}'. Возможно, это сообщение отображается, так как вы пытаетесь создать проект без файла решения и указали нестандартную конфигурацию или платформу, которые не существуют для этого проекта. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: значение свойства "MSBuildProjectExtensionsPath" было изменено после его использования MSBuild, что может привести к непредвиденным результатам сборки. Чтобы задать это свойство, необходимо сделать это перед импортом Microsoft.Common.props, например с помощью Directory.Build.props. Дополнительные сведения см. в https://go.microsoft.com/fwlink/?linkid=869650 {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0}: {1} элементов является нерекомендуемым. Вместо этого выдайте элементы EmbeddedResource с метаданными WithCulture='{2}', Type='{3}' и необязательным LogicalName. MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: PreferNativeArm64 требует манифеста приложения Win32 и является взаимоисключающим с NoWin32Manifest. {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: указанный проект {0} не существует. MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: если включен PreferNativeArm64, установите для платформы значение AnyCPU. Текущая платформа: {0}. {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: параметры Prefer32Bit и PreferNativeArm64 являются взаимоисключающими. Включите только один. {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + Имя {0} заканчиваться конечной косой чертой. Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + Не удается '{0}', так как тип выходных данных проекта '.exe' A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + Для публикации этого проекта требуется ключ подписывания. Укажите значение ManifestKeyFile или ManifestCertificateThumbprint. При публикации Visual Studio будет автоматически настроен ключ подписывания для этого проекта. MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: Указанная серьезность не релевантна: "{0}" для сообщения: "{1}". {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0}: {1} элементов является нерекомендуемым. Используйте элементы EmbeddedResource. diff --git a/src/Tasks/Resources/xlf/Strings.tr.xlf b/src/Tasks/Resources/xlf/Strings.tr.xlf index 974c9fe3e01..5e21f464b5d 100644 --- a/src/Tasks/Resources/xlf/Strings.tr.xlf +++ b/src/Tasks/Resources/xlf/Strings.tr.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: MSBuild tarafından kullanıldıktan sonra "BaseIntermediateOutputPath" özelliğinin değeri değiştirildi. Bu, beklenmeyen derleme sonuçlarına neden olabilir. NuGet gibi araçlar bunun yerine çıkışları "MSBuildProjectExtensionsPath" tarafından belirtilen yola yazacak. Bu özelliği ayarlamak için, Microsoft.Common.props içeri aktarılmadan önce , örneğin Directory.Build.props kullanarak bunu seçmelisiniz. Daha fazla bilgi için lütfen şu adresi ziyaret https://go.microsoft.com/fwlink/?linkid=869650" {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + İç MSBuild hatası: CrossTargeting Olmayan GetTargetFrameworks hedefi, çapraz hedefleme (dış) derlemesinde kullanılmamelidir Skipping unpublishable project. - Skipping unpublishable project. + Yayımdan kaldırılabilir proje atlanıyor. Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + Yayımlama yalnızca 'Windows Uygulaması' veya 'Konsol Uygulaması' proje türleri için geçerlidir. The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + BaseOutputPath/OutputPath özelliği proje koleksiyonu için '{0}'. Lütfen bu proje için geçerli bir Yapılandırma ve Platform bileşimi belirtmiş olduğunuzdan emin olun. Configuration='{1}' Platform='{2}'. Bu hata, başka bir proje bu projeye bir projeden projeye başvuru izlemeye çalışırken, bu proje kaldırıldıysa veya çözüme dahil edilmezse ve başvuran proje aynı ya da eşdeğer bir Yapılandırma veya Platform kullanılarak derlenemedi ise de bu hata görünür. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + BaseOutputPath/OutputPath özelliği proje koleksiyonu için '{0}'. Lütfen bu proje için geçerli bir Yapılandırma ve Platform bileşimi belirtmiş olduğunuzdan emin olun. Configuration='{1}' Platform='{2}'. Çözüm dosyası olmadan bir proje derlemeye çalıştığınız ve bu proje için varolmayan bir Yapılandırma veya Platform belirtmeye çalıştığınız için bu iletiyi görüyor olabilirsiniz. LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: MSBuild tarafından kullanılmadan sonra "MSBuildProjectExtensionsPath" özelliğinin değeri değiştirildi. Bu, beklenmeyen derleme sonuçlarına neden olabilir. Bu özelliği ayarlamak için, Microsoft.Common.props içeri aktarılmadan önce , örneğin Directory.Build.props kullanarak bunu seçmelisiniz. Daha fazla bilgi için lütfen şu adresi ziyaret https://go.microsoft.com/fwlink/?linkid=869650 {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0}: {1} öğe türü kullanım dışı. Bunun yerine WithCulture='{2}', Type='{3}' ve isteğe bağlı LogicalName meta verileriyle EmbeddedResource öğelerini göster. MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: PreferNativeArm64 bir Win32 uygulama bildirimi gerektirir ve NoWin32Manifest ile birbirini dışlar. {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: Başvurulan {0} yok. MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: PreferNativeArm64 etkinleştirildiğinde, Platformun AnyCPU olarak ayarlandığından emin olun. Geçerli Platform: {0}. {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: Prefer32Bit ve PreferNativeArm64 seçenekleri birbirini dışlar. Lütfen yalnızca birini etkinleştirin. {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + Bu {0} sonunda eğik çizgiyle bitmelidir. Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + Proje '{0}' türü çalışmadığından çalışma '.exe' A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + Bu projeyi yayımlamak için bir imzalama anahtarı gerekiyor. Lütfen bir ManifestKeyFile veya ManifestCertificateThumbprint değeri belirtin. Bu projeden Visual Studio, bu proje için otomatik olarak bir imzalama anahtarı yapılandıracak. MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: Belirtilen önem derecesi ilişkili değil: '{1}' iletisi için '{0}'. {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0}: {1} öğe türü kullanım dışı. Bunun yerine EmbeddedResource öğelerini kullanın. diff --git a/src/Tasks/Resources/xlf/Strings.zh-Hans.xlf b/src/Tasks/Resources/xlf/Strings.zh-Hans.xlf index a077e97cb3b..df77a4fa0d8 100644 --- a/src/Tasks/Resources/xlf/Strings.zh-Hans.xlf +++ b/src/Tasks/Resources/xlf/Strings.zh-Hans.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: 属性 “BaseIntermediateOutputPath” 的值已在 MSBuild 使用它后进行了修改,这可能会导致意外的生成结果。NuGet 等工具会改为将输出写入由 “MSBuildProjectExtensionsPath” 指定的路径。要设置此属性,必须在导入 Microsoft.Common.props 之前执行此操作,例如使用 Directory.Build.props。有关详细信息,请访问 https://go.microsoft.com/fwlink/?linkid=869650" {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + 内部 MSBuild 错误: 非 CrossTargeting GetTargetFrameworks 目标不应用于交叉目标 (外部) 生成 Skipping unpublishable project. - Skipping unpublishable project. + 正在跳过不可发布的项目。 Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + 发布仅对“Windows 应用程序”或“控制台应用程序”项目类型有效。 The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + 没有为项目 '{0}' 设置 BaseOutputPath/OutputPath 属性。 请检查以确保为此项目指定了有效的配置和平台组合。 Configuration='{1}' Platform='{2}'。如果其他项目尝试遵循对此项目的项目到项目引用、此项目已卸载或未包含在解决方案中,并且引用项目未使用相同或等效的配置或平台进行生成,则也可能出现此错误。 LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + 没有为项目 '{0}' 设置 BaseOutputPath/OutputPath 属性。 请检查以确保为此项目指定了有效的配置和平台组合。 Configuration='{1}' Platform='{2}'。你可能会看到此消息,因为你正在尝试生成没有解决方案文件的项目,并且为此项目指定了不存在的非默认配置或平台。 LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: 属性 “MSBuildProjectExtensionsPat” 的值已在 MSBuild 使用它后进行了修改,这可能会导致意外的生成结果。要设置此属性,必须在导入 Microsoft.Common.props 之前执行此操作,例如使用 Directory.Build.props。For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0}: {1} 项类型已弃用。改为发出 EmbeddedResource 项,元数据 WithCulture='{2}'、Type='{3}' 和可选 LogicalName。 MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: PreferNativeArm64 需要 Win32 应用程序清单,并且与 NoWin32Manifest 互斥。 {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: 引用的项目 {0} 不存在。 MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: 启用 PreferNativeArm64 时,请确保平台设置为 AnyCPU。当前平台: {0}。 {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: Prefer32Bit 和 PreferNativeArm64 选项互斥。请仅启用一个。 {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + {0} 必须以尾部斜杠结尾。 Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + 无法运行 '{0}',因为未 '.exe' 项目输出类型 A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + 发布此项目需要签名密钥。请指定 ManifestKeyFile 或 ManifestCertificateThumbprint 值。从Visual Studio发布将自动为此项目配置签名密钥。 MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: 指定的严重性不相关: 消息“{1}”的“{0}”。 {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0}: {1} 项类型已弃用。改用 EmbeddedResource 项。 diff --git a/src/Tasks/Resources/xlf/Strings.zh-Hant.xlf b/src/Tasks/Resources/xlf/Strings.zh-Hant.xlf index 7affc82bb19..cb6e2af101c 100644 --- a/src/Tasks/Resources/xlf/Strings.zh-Hant.xlf +++ b/src/Tasks/Resources/xlf/Strings.zh-Hant.xlf @@ -156,87 +156,87 @@ MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" - MSB3539: The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the "MSBuildProjectExtensionsPath" instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" + MSB3539: "BaseIntermediateOutputPath" 屬性的值在 MSBuild 使用後遭修改,這可能會導致未預期的建置結果。NuGet 等工具會將輸出寫入 "MSBuildProjectExtensionsPath" 所指定的路徑。若要設定此屬性,您必須先執行此動作,才能匯入 Microsoft.Common.props,例如使用 Directory.Build.props。如需詳細資訊,請瀏覽 https://go.microsoft.com/fwlink/?linkid=869650" {StrBegin="MSB3539: "} Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build - Internal MSBuild error: Non-CrossTargeting GetTargetFrameworks target should not be used in cross targeting (outer) build + 內部 MSBuild 錯誤: 非 CrossTargeting GetTargetFrameworks 目標不應用於跨目標 (外部) 組建 Skipping unpublishable project. - Skipping unpublishable project. + 正在略過無法發佈的專案。 Publish is only valid for 'Windows Application' or 'Console Application' project types. - Publish is only valid for 'Windows Application' or 'Console Application' project types. + 發行只對「Windows 應用程式」或「控制台應用程式」項目類型有效。 The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. + 未設定專案 '{0}' 的BaseOutputPath/OutputPath屬性。 請檢查以確定您已為此專案指定有效的組態與平台組合。 設定='{1}' 平臺='{2}'。如果其他項目嘗試遵循此專案的專案對專案參考、此專案已卸除或未包含在方案中,且參考專案未使用相同或相等的組態或平臺建置,也可能會出現此錯誤。 LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. - The BaseOutputPath/OutputPath property is not set for project '{0}'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='{1}' Platform='{2}'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. + 未設定專案 '{0}' 的BaseOutputPath/OutputPath屬性。 請檢查以確定您已為此專案指定有效的組態與平台組合。 設定='{1}' 平臺='{2}'。您可能會看到此訊息,因為您嘗試建置的項目沒有解決方案檔案,而且已為此專案指定不存在的非預設組態或平臺。 LOCALIZATION: Do not localize the words "BaseOutputPath/OutputPath", "Configuration" and "Platform" MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 - MSB3540: The value of the property "MSBuildProjectExtensionsPath" was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650 + MSB3540: "MSBuildProjectExtensionsPath" 屬性的值在 MSBuild 使用後遭修改,這可能會導致未預期的建置結果。若要設定此屬性,您必須先執行此動作,才能匯入 Microsoft.Common.props,例如使用 Directory.Build.props。如需詳細資訊,請瀏覽 https://go.microsoft.com/fwlink/?linkid=869650 {StrBegin="MSB3540: "} {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. - {0}: {1} item type is deprecated. Emit EmbeddedResource items instead, with metadata WithCulture='{2}', Type='{3}', and optional LogicalName. + {0}: {1} 項目類型已過時。請改為發出 EmbeddedResource 專案,元數據 WithCulture='{2}'、Type='{3}' 和選擇性 LogicalName。 MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. - MSB9903: PreferNativeArm64 requires a Win32 application manifest and is mutually exclusive with NoWin32Manifest. + MSB9903: PreferNativeArm64 需要 Win32 應用程式資訊清單,且與 NoWin32Manifest 互斥。 {StrBegin="MSB9903: "} MSB9008: The referenced project {0} does not exist. - MSB9008: The referenced project {0} does not exist. + MSB9008: 參考的專案 {0} 不存在。 MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. - MSB9904: When PreferNativeArm64 is enabled, ensure that the Platform is set to AnyCPU. Current Platform: {0}. + MSB9904: 啟用 PreferNativeArm64 時,請確認平台已設為 AnyCPU。目前平台: {0}。 {StrBegin="MSB9904: "} MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. - MSB9902: Prefer32Bit and PreferNativeArm64 options are mutually exclusive. Please enable only one. + MSB9902: Prefer32Bit 和 PreferNativeArm64 選項互斥。請只啟用一個。 {StrBegin="MSB9902: "} The {0} must end with a trailing slash. - The {0} must end with a trailing slash. + {0} 必須以斜線結尾。 Cannot run '{0}' because project output type is not '.exe' - Cannot run '{0}' because project output type is not '.exe' + 無法執行 '{0}',因為項目輸出類型不 '.exe' A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. - A signing key is required in order to publish this project. Please specify a ManifestKeyFile or ManifestCertificateThumbprint value. Publishing from Visual Studio will automatically configure a signing key for this project. + 需要簽署金鑰才能發佈此專案。請指定 ManifestKeyFile 或 ManifestCertificateThumbprint 值。從Visual Studio發佈將會自動設定此項目的簽署金鑰。 MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. - MSB9901: The specified severity is not relevant: '{0}' for the message: '{1}'. + MSB9901: 指定的嚴重性不相關: 訊息 '{1}' 的 '{0}'。 {StrBegin="MSB9901: "} {0}: {1} item type is deprecated. Use EmbeddedResource items instead. - {0}: {1} item type is deprecated. Use EmbeddedResource items instead. + {0}: {1} 項目類型已過時。請改用 EmbeddedResource 專案。 diff --git a/src/UnitTests.Shared/ArtifactsLocationAttribute.cs b/src/UnitTests.Shared/ArtifactsLocationAttribute.cs new file mode 100644 index 00000000000..8aaeeeb85ea --- /dev/null +++ b/src/UnitTests.Shared/ArtifactsLocationAttribute.cs @@ -0,0 +1,10 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Microsoft.Build.UnitTests.Shared; + +[System.AttributeUsage(System.AttributeTargets.Assembly)] +public sealed class ArtifactsLocationAttribute(string artifactsLocation) : System.Attribute +{ + public string ArtifactsLocation { get; } = artifactsLocation; +} diff --git a/src/UnitTests.Shared/Microsoft.Build.UnitTests.Shared.csproj b/src/UnitTests.Shared/Microsoft.Build.UnitTests.Shared.csproj index 74fa38bee83..320bbc4f596 100644 --- a/src/UnitTests.Shared/Microsoft.Build.UnitTests.Shared.csproj +++ b/src/UnitTests.Shared/Microsoft.Build.UnitTests.Shared.csproj @@ -43,5 +43,10 @@ <_Parameter1>$(TestBootstrapBinaryDestination) <_Parameter2>$(BootstrapSdkVersion) + + + <_Parameter1>$(ArtifactsShippingPackagesDir) + + diff --git a/src/UnitTests.Shared/RunnerUtilities.cs b/src/UnitTests.Shared/RunnerUtilities.cs index 2838d77fa88..e0879c00028 100644 --- a/src/UnitTests.Shared/RunnerUtilities.cs +++ b/src/UnitTests.Shared/RunnerUtilities.cs @@ -17,6 +17,9 @@ namespace Microsoft.Build.UnitTests.Shared public static class RunnerUtilities { public static string PathToCurrentlyRunningMsBuildExe => BuildEnvironmentHelper.Instance.CurrentMSBuildExePath; + + public static ArtifactsLocationAttribute ArtifactsLocationAttribute = Assembly.GetExecutingAssembly().GetCustomAttribute() + ?? throw new InvalidOperationException("This test assembly does not have the ArtifactsLocationAttribute"); #if !FEATURE_RUN_EXE_IN_TESTS private static readonly string s_dotnetExePath = EnvironmentProvider.GetDotnetExePath(); diff --git a/src/Utilities/ToolLocationHelper.cs b/src/Utilities/ToolLocationHelper.cs index 76198ed413a..0d45b676cd8 100644 --- a/src/Utilities/ToolLocationHelper.cs +++ b/src/Utilities/ToolLocationHelper.cs @@ -3584,7 +3584,7 @@ public static string GetPathToBuildToolsFile(string fileName, string toolsVersio { toolPath = Path.Combine(toolPath, fileName); - if (!FileSystems.Default.FileExists(toolPath)) + if (!File.Exists(toolPath)) { toolPath = null; } diff --git a/src/Utilities/ToolTask.cs b/src/Utilities/ToolTask.cs index fe6ab5d92ed..c0dbc002dcc 100644 --- a/src/Utilities/ToolTask.cs +++ b/src/Utilities/ToolTask.cs @@ -857,9 +857,11 @@ protected void DeleteTempFile(string fileName) } catch (Exception e) when (ExceptionHandling.IsIoRelatedException(e)) { + string lockedFileMessage = LockCheck.GetLockedFileMessage(fileName); + // Warn only -- occasionally temp files fail to delete because of virus checkers; we // don't want the build to fail in such cases - LogShared.LogWarningWithCodeFromResources("Shared.FailedDeletingTempFile", fileName, e.Message); + LogShared.LogWarningWithCodeFromResources("Shared.FailedDeletingTempFile", fileName, e.Message, lockedFileMessage); } } diff --git a/src/Utilities/TrackedDependencies/CanonicalTrackedInputFiles.cs b/src/Utilities/TrackedDependencies/CanonicalTrackedInputFiles.cs index ae2f672a390..bf149e7202e 100644 --- a/src/Utilities/TrackedDependencies/CanonicalTrackedInputFiles.cs +++ b/src/Utilities/TrackedDependencies/CanonicalTrackedInputFiles.cs @@ -151,7 +151,7 @@ private void InternalConstruct(ITask ownerTask, ITaskItem[] tlogFiles, ITaskItem }; } - _tlogFiles = TrackedDependencies.ExpandWildcards(tlogFiles); + _tlogFiles = TrackedDependencies.ExpandWildcards(tlogFiles, _log); _tlogAvailable = TrackedDependencies.ItemsExist(_tlogFiles); _sourceFiles = sourceFiles; _outputs = outputs; diff --git a/src/Utilities/TrackedDependencies/CanonicalTrackedOutputFiles.cs b/src/Utilities/TrackedDependencies/CanonicalTrackedOutputFiles.cs index 170713d7f91..63d82accf8e 100644 --- a/src/Utilities/TrackedDependencies/CanonicalTrackedOutputFiles.cs +++ b/src/Utilities/TrackedDependencies/CanonicalTrackedOutputFiles.cs @@ -80,7 +80,7 @@ private void InternalConstruct(ITask ownerTask, ITaskItem[] tlogFiles, bool cons }; } - _tlogFiles = TrackedDependencies.ExpandWildcards(tlogFiles); + _tlogFiles = TrackedDependencies.ExpandWildcards(tlogFiles, _log); _tlogAvailable = TrackedDependencies.ItemsExist(_tlogFiles); DependencyTable = new Dictionary>(StringComparer.OrdinalIgnoreCase); if (_tlogFiles != null && constructOutputsFromTLogs) diff --git a/src/Utilities/TrackedDependencies/FlatTrackingData.cs b/src/Utilities/TrackedDependencies/FlatTrackingData.cs index e778ff04f3b..633dc4c02ac 100644 --- a/src/Utilities/TrackedDependencies/FlatTrackingData.cs +++ b/src/Utilities/TrackedDependencies/FlatTrackingData.cs @@ -269,11 +269,11 @@ private void InternalConstruct(ITask ownerTask, ITaskItem[] tlogFilesLocal, ITas }; } - ITaskItem[] expandedTlogFiles = TrackedDependencies.ExpandWildcards(tlogFilesLocal); + ITaskItem[] expandedTlogFiles = TrackedDependencies.ExpandWildcards(tlogFilesLocal, _log); if (tlogFilesToIgnore != null) { - ITaskItem[] expandedTlogFilesToIgnore = TrackedDependencies.ExpandWildcards(tlogFilesToIgnore); + ITaskItem[] expandedTlogFilesToIgnore = TrackedDependencies.ExpandWildcards(tlogFilesToIgnore, _log); if (expandedTlogFilesToIgnore.Length > 0) { diff --git a/src/Utilities/TrackedDependencies/TrackedDependencies.cs b/src/Utilities/TrackedDependencies/TrackedDependencies.cs index 2a2cd90e4c7..bf444ca9409 100644 --- a/src/Utilities/TrackedDependencies/TrackedDependencies.cs +++ b/src/Utilities/TrackedDependencies/TrackedDependencies.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Generic; @@ -8,8 +8,6 @@ using Microsoft.Build.Shared; using Microsoft.Build.Shared.FileSystem; -#nullable disable - namespace Microsoft.Build.Utilities { /// @@ -20,11 +18,12 @@ public static class TrackedDependencies #pragma warning disable format // region formatting is different in net7.0 and net472, and cannot be fixed for both #region Methods /// - /// Expand wildcards in the item list. + /// Expand wildcards in the item list and log glob failures. /// /// + /// For logging glob failures. Can be null if called by external code or in tests. /// Array of items expanded - public static ITaskItem[] ExpandWildcards(ITaskItem[] expand) + internal static ITaskItem[]? ExpandWildcards(ITaskItem[] expand, TaskLoggingHelper? log) { if (expand == null) { @@ -37,7 +36,7 @@ public static ITaskItem[] ExpandWildcards(ITaskItem[] expand) if (FileMatcher.HasWildcards(item.ItemSpec)) { string[] files; - string directoryName = Path.GetDirectoryName(item.ItemSpec); + string? directoryName = Path.GetDirectoryName(item.ItemSpec); string searchPattern = Path.GetFileName(item.ItemSpec); // Very often with TLog files we're talking about @@ -45,11 +44,15 @@ public static ITaskItem[] ExpandWildcards(ITaskItem[] expand) // Optimize for that case here. if (!FileMatcher.HasWildcards(directoryName) && FileSystems.Default.DirectoryExists(directoryName)) { - files = Directory.GetFiles(directoryName, searchPattern); + files = Directory.GetFiles(directoryName!, searchPattern); } else { - files = FileMatcher.Default.GetFiles(null, item.ItemSpec).FileList; + (files, _, _, string? globFailure) = FileMatcher.Default.GetFiles(null, item.ItemSpec); + if (globFailure != null && log != null) + { + log.LogMessage(MessageImportance.Low, globFailure); + } } foreach (string file in files) @@ -91,6 +94,13 @@ internal static bool ItemsExist(ITaskItem[] files) } return allExist; } +#nullable disable + /// + /// Expand wildcards in the item list. + /// + /// + /// Array of items expanded + public static ITaskItem[] ExpandWildcards(ITaskItem[] expand) => ExpandWildcards(expand, null); #endregion #pragma warning restore format } diff --git a/template_feed/content/Microsoft.CheckTemplate/Company.CheckTemplate.csproj b/template_feed/content/Microsoft.CheckTemplate/Company.CheckTemplate.csproj index ac2ba871161..75c007b9d49 100644 --- a/template_feed/content/Microsoft.CheckTemplate/Company.CheckTemplate.csproj +++ b/template_feed/content/Microsoft.CheckTemplate/Company.CheckTemplate.csproj @@ -33,8 +33,6 @@ <_PackagesToPack Remove="@(_PackagesToPack)" Condition="'%(_PackagesToPack.IncludeInPackage)' != 'true'" /> - -