From 6c1e795340b116cbe079f0e41754e895dc80e041 Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Tue, 19 Nov 2024 12:27:39 +0100 Subject: [PATCH 01/27] Update common-msbuild-project-items.md --- docs/msbuild/common-msbuild-project-items.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/msbuild/common-msbuild-project-items.md b/docs/msbuild/common-msbuild-project-items.md index 06ec81302cd..1bf7727fb9d 100644 --- a/docs/msbuild/common-msbuild-project-items.md +++ b/docs/msbuild/common-msbuild-project-items.md @@ -104,6 +104,8 @@ Represents resources to be embedded in the generated assembly. | Item metadata name | Description | |-----------------------| - | +| Culture | Optional string. Specifies the culture of the resource file. If specified, the build process doesn't auto-infer the culture based on file extension (which is dependend on the cultures available to .NET/OS on the machine hosting the build). Setting either `Culture={culture identifier}` or `WithCulture=false` metadata is highly recommended. | +| WithCulture | Optional bool. Specifies that the file is culture neutral and culture detection by [`AssignCulture`](./assignculture-task.md) task should be skipped. Setting either `Culture={culture identifier}` or `WithCulture=false` metadata is highly recommended. | | DependentUpon | Optional string. Specifies the file this file depends on to compile correctly | | Generator | Optional string. The name of any file generator that is run on this item. | | LastGenOutput | Optional string. The name of the file that was created by any file generator that ran on this item. | From 795770263aa6aa3071887f42dda6c47fe09f921b Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Tue, 19 Nov 2024 12:33:40 +0100 Subject: [PATCH 02/27] Update generateresource-task.md --- docs/msbuild/generateresource-task.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/msbuild/generateresource-task.md b/docs/msbuild/generateresource-task.md index a4cb96a14d5..d2649187064 100644 --- a/docs/msbuild/generateresource-task.md +++ b/docs/msbuild/generateresource-task.md @@ -90,6 +90,7 @@ Assuming that the assembly is named myAssembly, the following code generates an someQualifier.someResource.resources + false ``` From 69c500098882a4fd00f422bb23189c71cdaf19da Mon Sep 17 00:00:00 2001 From: Osvaldo Calles Date: Tue, 26 Nov 2024 12:58:18 -0800 Subject: [PATCH 03/27] Document behavior for running unit tests in ARM64 Currently, running unit tests on an arm64 device behaves differently compared to a Console App. This documentation aims to clarify the current behavior and provide guidance for users. --- .../menu-process-architecture-for-anycpu.png | Bin 0 -> 46982 bytes docs/test/run-unit-tests-with-test-explorer.md | 12 ++++++++++++ 2 files changed, 12 insertions(+) create mode 100644 docs/test/media/vs-2022/menu-process-architecture-for-anycpu.png diff --git a/docs/test/media/vs-2022/menu-process-architecture-for-anycpu.png b/docs/test/media/vs-2022/menu-process-architecture-for-anycpu.png new file mode 100644 index 0000000000000000000000000000000000000000..4db7219f8dbc1926ccae97a7d9d26a834e1593c6 GIT binary patch literal 46982 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�Qi-L@GI>4&fL6oY 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 L46aZv+yC?*lyGpp literal 0 HcmV?d00001 diff --git a/docs/test/run-unit-tests-with-test-explorer.md b/docs/test/run-unit-tests-with-test-explorer.md index ea7615780f9..1949f9b0b64 100644 --- a/docs/test/run-unit-tests-with-test-explorer.md +++ b/docs/test/run-unit-tests-with-test-explorer.md @@ -57,6 +57,18 @@ You can run all the tests in the solution, all the tests in a group, or a set of - If individual tests have no dependencies that prevent them from being run in any order, turn on parallel test execution in the settings menu of the toolbar. This can noticeably reduce the time taken to run all the tests. +### Process architecture for AnyCPU + +For **vstest** test projects, the default architecture matches the operating system's architecture. You can override this behavior for AnyCPU projects through the Test Explorer menu shown in the image below. + +![alt text](../test/media/vs-2022/menu-process-architecture-for-anycpu.png) + +For **testing.platform** projects, the architecture is determined strictly by MSBuild and runtime rules. Executables are generated based on the preferred architecture specified in MSBuild/runtime settings. You can adjust this preference using MSBuild properties (e.g., **PreferNativeArm64**), but the Test Explorer menu **Procesor Architecture for AnyCPU Projects** cannot be used to change the architecture for these projects. + +#### PreferNativeArm64 + +When using this MSBuild property, the project will prefer running natively on ARM64 architecture if available. This property is applicable to projects that generate executables and follow MSBuild/runtime rules. It is important to note that this setting is ignored for vstest test projects and only applies to testing.platform projects. + ### Run tests after every build To run your unit tests after each local build, open the settings icon in the Test Explorer toolbar and select **Run Tests After Build**. From c865919ff72f2690a93730a8878dd5c038edcb36 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Mon, 2 Dec 2024 12:20:34 -0800 Subject: [PATCH 04/27] Mention sign code -h to get help on the options --- docs/extensibility/signing-vsix-packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/extensibility/signing-vsix-packages.md b/docs/extensibility/signing-vsix-packages.md index 3d71e340b3c..a2c7e5adcf5 100644 --- a/docs/extensibility/signing-vsix-packages.md +++ b/docs/extensibility/signing-vsix-packages.md @@ -66,7 +66,7 @@ dotnet tool install --global --add-source D:\NuGetTools sign --version 99.0 ``` ### Using Sign CLI -Once installed, Sign CLI can be accessed in a Developer PowerShell instance using `sign code `. For a breakdown of the options see [Sign CLI Reference for VSIX Packages](../extensibility/dotnet-sign-CLI-reference-vsix.md). +Once installed, Sign CLI can be accessed in a Developer PowerShell instance using `sign code `. For a breakdown of the options see [Sign CLI Reference for VSIX Packages](../extensibility/dotnet-sign-CLI-reference-vsix.md). You can get help from command line by typing `sign code -h`. > [!IMPORTANT] > Sign CLI only supports `SHA-256`, `SHA-384`, and `SHA-512` as valid fingerprint algorithms. You can use PowerShell to get fingerprints using: `Get-FileHash -Algorithm SHA256 | Format-Table -AutoSize` From 9f1da40380baf4d4a5fd81dfd5bc31bd188f4e26 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Mon, 2 Dec 2024 13:54:34 -0800 Subject: [PATCH 05/27] Address user feedback --- docs/msbuild/msbuild-well-known-item-metadata.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/msbuild/msbuild-well-known-item-metadata.md b/docs/msbuild/msbuild-well-known-item-metadata.md index bb7e7d39fd4..3c08c53a75b 100644 --- a/docs/msbuild/msbuild-well-known-item-metadata.md +++ b/docs/msbuild/msbuild-well-known-item-metadata.md @@ -1,7 +1,7 @@ --- title: MSBuild Well-known Item Metadata description: Learn about MSBuild metadata assigned to every item upon creation, and some optional MSBuild metadata you can define to control build behavior. -ms.date: 11/04/2016 +ms.date: 12/02/2024 ms.topic: reference dev_langs: - VB @@ -19,7 +19,7 @@ ms.subservice: msbuild Item metadata are values attached to items. Some are assigned by MSBuild to items when items are created, but you can also define any metadata you need. Some user-defined metadata values have meaning to MSBuild, specific tasks, or SDKs such as the .NET SDK. -The first table in this article describes the metadata assigned to every item upon creation. The next table shows some optional metadata that has meaning for MSBuild, which you can define to control build behavior. In each example, the following item declaration was used to include the file *C:\MyProject\Source\Program.cs* in the project. +The table in this article describes the metadata assigned to every item upon creation. The next table shows some optional metadata that has meaning for MSBuild, which you can define to control build behavior. In each example, the following item declaration was used to include the file *C:\MyProject\Source\Program.cs* in the project. ```xml From 05331813a6fb4de493c672681373ec4ffbcf7d33 Mon Sep 17 00:00:00 2001 From: Osvaldo Calles <510598+ocallesp@users.noreply.github.com> Date: Tue, 3 Dec 2024 11:25:28 -0800 Subject: [PATCH 06/27] Update docs/test/run-unit-tests-with-test-explorer.md Co-authored-by: Mike Jones --- docs/test/run-unit-tests-with-test-explorer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/test/run-unit-tests-with-test-explorer.md b/docs/test/run-unit-tests-with-test-explorer.md index 1949f9b0b64..cb1aa873508 100644 --- a/docs/test/run-unit-tests-with-test-explorer.md +++ b/docs/test/run-unit-tests-with-test-explorer.md @@ -57,7 +57,7 @@ You can run all the tests in the solution, all the tests in a group, or a set of - If individual tests have no dependencies that prevent them from being run in any order, turn on parallel test execution in the settings menu of the toolbar. This can noticeably reduce the time taken to run all the tests. -### Process architecture for AnyCPU +### Configure process architecture for AnyCPU (MSTest) For **vstest** test projects, the default architecture matches the operating system's architecture. You can override this behavior for AnyCPU projects through the Test Explorer menu shown in the image below. From 28d53d7226951d17ae293b38bfc0152e877d90d0 Mon Sep 17 00:00:00 2001 From: Osvaldo Calles <510598+ocallesp@users.noreply.github.com> Date: Tue, 3 Dec 2024 11:25:42 -0800 Subject: [PATCH 07/27] Update docs/test/run-unit-tests-with-test-explorer.md Co-authored-by: Mike Jones --- docs/test/run-unit-tests-with-test-explorer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/test/run-unit-tests-with-test-explorer.md b/docs/test/run-unit-tests-with-test-explorer.md index cb1aa873508..e8de62fd988 100644 --- a/docs/test/run-unit-tests-with-test-explorer.md +++ b/docs/test/run-unit-tests-with-test-explorer.md @@ -67,7 +67,7 @@ For **testing.platform** projects, the architecture is determined strictly by MS #### PreferNativeArm64 -When using this MSBuild property, the project will prefer running natively on ARM64 architecture if available. This property is applicable to projects that generate executables and follow MSBuild/runtime rules. It is important to note that this setting is ignored for vstest test projects and only applies to testing.platform projects. +When using this MSBuild property, the project will prefer running natively on ARM64 architecture if available. This property is applicable to projects that generate executables and follow MSBuild/runtime rules. It is important to note that this setting is ignored for Visual Studio Test Platform (vstest) test projects and only applies to MSTest projects with MSTest configured as the test runner. ### Run tests after every build From 1c77e6405a8432e4acbc897ea191ba8616ead1bb Mon Sep 17 00:00:00 2001 From: Osvaldo Calles <510598+ocallesp@users.noreply.github.com> Date: Tue, 3 Dec 2024 11:26:08 -0800 Subject: [PATCH 08/27] Update docs/test/run-unit-tests-with-test-explorer.md Co-authored-by: Mike Jones --- docs/test/run-unit-tests-with-test-explorer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/test/run-unit-tests-with-test-explorer.md b/docs/test/run-unit-tests-with-test-explorer.md index e8de62fd988..f12f2f7aefc 100644 --- a/docs/test/run-unit-tests-with-test-explorer.md +++ b/docs/test/run-unit-tests-with-test-explorer.md @@ -61,7 +61,7 @@ You can run all the tests in the solution, all the tests in a group, or a set of For **vstest** test projects, the default architecture matches the operating system's architecture. You can override this behavior for AnyCPU projects through the Test Explorer menu shown in the image below. -![alt text](../test/media/vs-2022/menu-process-architecture-for-anycpu.png) +:::image type="content" source="../test/media/vs-2022/menu-process-architecture-for-anycpu.png" alt-text="Screenshot showing menu for selecting the processor architecture for AnyCPU"::: For **testing.platform** projects, the architecture is determined strictly by MSBuild and runtime rules. Executables are generated based on the preferred architecture specified in MSBuild/runtime settings. You can adjust this preference using MSBuild properties (e.g., **PreferNativeArm64**), but the Test Explorer menu **Procesor Architecture for AnyCPU Projects** cannot be used to change the architecture for these projects. From cf8afe648605acc6d0b83c04e472f30a0ab7fa01 Mon Sep 17 00:00:00 2001 From: Osvaldo Calles <510598+ocallesp@users.noreply.github.com> Date: Tue, 3 Dec 2024 11:26:27 -0800 Subject: [PATCH 09/27] Update docs/test/run-unit-tests-with-test-explorer.md Co-authored-by: Mike Jones --- docs/test/run-unit-tests-with-test-explorer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/test/run-unit-tests-with-test-explorer.md b/docs/test/run-unit-tests-with-test-explorer.md index f12f2f7aefc..84e68994bb9 100644 --- a/docs/test/run-unit-tests-with-test-explorer.md +++ b/docs/test/run-unit-tests-with-test-explorer.md @@ -59,7 +59,7 @@ You can run all the tests in the solution, all the tests in a group, or a set of ### Configure process architecture for AnyCPU (MSTest) -For **vstest** test projects, the default architecture matches the operating system's architecture. You can override this behavior for AnyCPU projects through the Test Explorer menu shown in the image below. +For MSTest projects using Visual Studio Testing Platform (vstest) as the test runner, the default architecture matches the operating system's architecture. You can override this behavior for AnyCPU projects through the Test Explorer menu shown in the image below. :::image type="content" source="../test/media/vs-2022/menu-process-architecture-for-anycpu.png" alt-text="Screenshot showing menu for selecting the processor architecture for AnyCPU"::: From c88c3c2b18e4c6741a390d58094bf1f97a691c70 Mon Sep 17 00:00:00 2001 From: Osvaldo Calles <510598+ocallesp@users.noreply.github.com> Date: Tue, 3 Dec 2024 11:26:51 -0800 Subject: [PATCH 10/27] Update docs/test/run-unit-tests-with-test-explorer.md Co-authored-by: Mike Jones --- docs/test/run-unit-tests-with-test-explorer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/test/run-unit-tests-with-test-explorer.md b/docs/test/run-unit-tests-with-test-explorer.md index 84e68994bb9..e0ab2268d71 100644 --- a/docs/test/run-unit-tests-with-test-explorer.md +++ b/docs/test/run-unit-tests-with-test-explorer.md @@ -63,7 +63,7 @@ For MSTest projects using Visual Studio Testing Platform (vstest) as the test ru :::image type="content" source="../test/media/vs-2022/menu-process-architecture-for-anycpu.png" alt-text="Screenshot showing menu for selecting the processor architecture for AnyCPU"::: -For **testing.platform** projects, the architecture is determined strictly by MSBuild and runtime rules. Executables are generated based on the preferred architecture specified in MSBuild/runtime settings. You can adjust this preference using MSBuild properties (e.g., **PreferNativeArm64**), but the Test Explorer menu **Procesor Architecture for AnyCPU Projects** cannot be used to change the architecture for these projects. +For projects using MSTest as the test runner instead of Visual Studio Test Platform (vstest), the architecture is determined strictly by MSBuild and runtime rules. Executables are generated based on the preferred architecture specified in MSBuild/runtime settings. You can adjust this preference using MSBuild properties (e.g., **PreferNativeArm64**), but the Test Explorer menu **Procesor Architecture for AnyCPU Projects** cannot be used to change the architecture for these projects. #### PreferNativeArm64 From 3758870b9ed1c91711434bf351c786f1ff70bedf Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 11:37:09 -0800 Subject: [PATCH 11/27] Review and update --- .../accessing-data-in-visual-studio.md | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/docs/data-tools/accessing-data-in-visual-studio.md b/docs/data-tools/accessing-data-in-visual-studio.md index c89bbe12e1c..4a6e7d31143 100644 --- a/docs/data-tools/accessing-data-in-visual-studio.md +++ b/docs/data-tools/accessing-data-in-visual-studio.md @@ -1,7 +1,7 @@ --- title: Work with data in Visual Studio description: Work with data in Visual Studio and create apps that connect to data in other database products or services over local machines, LANs, and public or private clouds. -ms.date: 09/14/2023 +ms.date: 12/3/2024 ms.topic: conceptual helpviewer_keywords: - data [Visual Studio] @@ -118,7 +118,7 @@ Most of the other SQL and NoSQL database products that are listed here can be ho :::moniker-end > [!NOTE] -> Extended support for SQL Server 2005 ended on April 12, 2016. There is no guarantee that data tools in Visual Studio 2015 and later will continue to work with SQL Server 2005. For more information, see the [end of support announcement for SQL Server 2005](https://www.microsoft.com/sql-server/sql-server-2005). +> Extended support for SQL Server 2005 ended on April 12, 2016. There is no guarantee that data tools in Visual Studio 2015 and later will continue to work with SQL Server 2005. ## .NET languages @@ -130,13 +130,13 @@ For data-access documentation related to ASP.NET, see [Working with Data](https: Universal Windows Platform (UWP) apps in C# or Visual Basic can use the Microsoft Azure SDK for .NET to access Azure Storage and other Azure services. The Windows.Web.HttpClient class enables communication with any RESTful service. For more information, see [How to connect to an HTTP server using Windows.Web.Http](/previous-versions/windows/apps/dn469430(v=win.10)). -For data storage on the local machine, the recommended approach is to use SQLite, which runs in the same process as the app. If an object-relational mapping (ORM) layer is required, you can use Entity Framework. For more information, see [Data access](/windows/uwp/data-access/index) in the Windows Developer Center. +For data storage on the local machine, the recommended approach is to use SQLite, which runs in the same process as the app. If an object-relational mapping (ORM) layer is required, you can use Entity Framework. For more information, see [Data access](/windows/uwp/data-access/index). If you are connecting to Azure services, be sure to download the latest [Azure SDK tools](https://azure.microsoft.com/downloads/). ### Data providers -For a database to be consumable in ADO.NET, it must have a custom *ADO.NET data provider* or else must expose an ODBC or OLE DB interface. Microsoft provides a [list of ADO.NET data providers](/dotnet/framework/data/adonet/ado-net-overview) for SQL Server products, as well as ODBC and OLE DB providers. +For a database to be consumable in ADO.NET, it must have a custom *ADO.NET data provider* or else must expose an ODBC or OLE DB interface. Microsoft provides a [list of ADO.NET data providers](/dotnet/framework/data/adonet/data-providers) for SQL Server products, as well as ODBC and OLE DB providers. > [!NOTE] > If you're using Visual Studio to connect to databases using OLEDB or ODBC data providers, you will need to be aware that versions of Visual Studio prior to Visual Studio 2022 are all 32-bit processes. This means some of the data tools in Visual Studio will only be able to connect to OLEDB or ODBC databases using 32-bit data providers. This includes the Microsoft Access 32-bit OLEDB data provider as well as other third-party 32-bit providers. @@ -165,15 +165,13 @@ C++ applications that connect to SQL Server should use the [Microsoft® ODBC Dri C++ programs that consume REST services can use the [C++ REST SDK](https://github.com/Microsoft/cpprestsdk). -C++ programs that work with Microsoft Azure Storage can use the [Microsoft Azure Storage Client](https://www.nuget.org/packages/Microsoft.Azure.Storage.CPP). - Data modeling—Visual Studio does not provide an ORM layer for C++. [ODB](https://www.codesynthesis.com/products/odb/) is a popular open-source ORM for C++. -To learn more about connecting to databases from C++ apps, see [Visual Studio data tools for C++](../data-tools/visual-studio-data-tools-for-cpp.md). For more information about legacy Visual C++ data-access technologies, see [Data Access](/cpp/data/data-access-in-cpp). +To learn more about connecting to databases from C++ apps, see [Visual Studio data tools for C++](../data-tools/visual-studio-data-tools-for-cpp.md). ## JavaScript -[JavaScript in Visual Studio](/scripting/javascript/javascript-language-reference) is a first-class language for building cross-platform apps, UWP apps, cloud services, websites, and web apps. You can use Bower, Grunt, Gulp, npm, and NuGet from within Visual Studio to install your favorite JavaScript libraries and database products. Connect to Azure Storage and services by downloading SDKs from the [Azure website](https://azure.microsoft.com/). Edge.js is a library that connects server-side JavaScript (Node.js) to ADO.NET data sources. +[JavaScript in Visual Studio](../javascript/index.yml) is a first-class language for building cross-platform apps, UWP apps, cloud services, websites, and web apps. You can use Bower, Grunt, Gulp, npm, and NuGet from within Visual Studio to install your favorite JavaScript libraries and database products. Connect to Azure Storage and services by downloading SDKs from the [Azure website](https://azure.microsoft.com/). Edge.js is a library that connects server-side JavaScript (Node.js) to ADO.NET data sources. ## Python @@ -185,8 +183,6 @@ Install [Python support in Visual Studio](../python/overview-of-python-tools-for ## Related content -[Microsoft AI platform](https://azure.microsoft.com/overview/ai-platform/?v=17.42w)—Provides an introduction to the Microsoft intelligent cloud, including Cortana Analytics Suite and support for Internet of Things. - [Microsoft Azure Storage](/azure/storage/)—Describes Azure Storage, and how to create applications by using Azure blobs, tables, queues, and files. [Azure SQL Database](/azure/sql-database/)—Describes how to connect to Azure SQL Database, a relational database as a service. From 7db9a0ce0fb52856e5fbee7b54a6746fe2b7163c Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 11:42:30 -0800 Subject: [PATCH 12/27] Review and update --- .../entity-data-model-tools-in-visual-studio.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/data-tools/entity-data-model-tools-in-visual-studio.md b/docs/data-tools/entity-data-model-tools-in-visual-studio.md index e946d31ba37..ac514e18abe 100644 --- a/docs/data-tools/entity-data-model-tools-in-visual-studio.md +++ b/docs/data-tools/entity-data-model-tools-in-visual-studio.md @@ -1,7 +1,7 @@ --- title: Overview of Entity Framework Tools description: Explore Entity Framework tools in Visual Studio, including the Entity Data Model Designer, Create Database Wizard, and Update Model Wizard. -ms.date: 11/01/2023 +ms.date: 12/03/2024 ms.topic: conceptual author: ghogen ms.author: ghogen @@ -39,14 +39,11 @@ The tools generate or modify an `.edmx` file. This `.edmx` file contains informa [Entity Framework 6 Power Tools](https://marketplace.visualstudio.com/items?itemName=EntityFrameworkTeam.EntityFrameworkPowerToolsBeta4) help you build applications that use the Entity Data Model. The power tools can generate a conceptual model, validate an existing model, produce source-code files that contain object classes based on the conceptual model, and produce source-code files that contain views that the model generates. For detailed information, see [Pre-Generated Mapping Views](/ef/ef6/fundamentals/performance/pre-generated-views). -## Related topics +## Related content | Title | Description | | - | - | | [ADO.NET Entity Framework](/dotnet/framework/data/adonet/ef/index) | Describes how to use Entity Data Model Tools, which Entity Framework provides, to create applications. | | [Entity Data Model](/dotnet/framework/data/adonet/entity-data-model) | Provides links and information for working with data that is used by applications built on Entity Framework. | | [Entity Framework (EF) Documentation)](/ef/ef6/get-started) | Provides an index of videos, tutorials, and advanced documentation to help you make the most of Entity Framework. | - -## Related content - -- [Visual Studio data tools for .NET](../data-tools/visual-studio-data-tools-for-dotnet.md) +| [Visual Studio data tools for .NET Framework development](../data-tools/visual-studio-data-tools-for-dotnet.md) | Provides an overview of .NET Framework data tools in Visual Studio. | From c043e1f70d8fdfd0bcab74385979613dba3254d1 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 11:47:48 -0800 Subject: [PATCH 13/27] Review and update --- .../linq-to-sql-tools-in-visual-studio2.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/data-tools/linq-to-sql-tools-in-visual-studio2.md b/docs/data-tools/linq-to-sql-tools-in-visual-studio2.md index 2aad6902d2a..d0683f7541e 100644 --- a/docs/data-tools/linq-to-sql-tools-in-visual-studio2.md +++ b/docs/data-tools/linq-to-sql-tools-in-visual-studio2.md @@ -1,7 +1,7 @@ --- title: LINQ to SQL O/R Designer overview description: Explore LINQ to SQL tools in Visual Studio for object-relational mapping, including the Object Relational Designer (O/R Designer). -ms.date: 11/01/2023 +ms.date: 12/03/2024 ms.topic: overview author: ghogen ms.author: ghogen @@ -11,11 +11,11 @@ ms.subservice: data-tools # LINQ to SQL tools in Visual Studio -LINQ to SQL was the first object-relational mapping technology released by Microsoft. It works well in basic scenarios and continues to be supported in Visual Studio, but it's no longer under active development. Use LINQ to SQL when maintaining a legacy application that's already using it, or in simple applications that use SQL Server and do not require multi-table mapping. In general, new applications should use the Entity Framework when an object-relational mapper layer is required. +LINQ to SQL was the first object-relational mapping technology released by Microsoft. It works well in basic scenarios and continues to be supported in Visual Studio, but it's no longer under active development. Use LINQ to SQL when maintaining a legacy application that's already using it, or in simple applications that use SQL Server and do not require multi-table mapping. In general, new applications should use the Entity Framework when an object-relational mapping layer is required. ## Install the LINQ to SQL tools -In Visual Studio, you create LINQ to SQL classes that represent SQL tables by using the **Object Relational Designer** (**O/R Designer**). The O/R designer is the UI for editing .dbml files. Editing .dbml files with a designer surface requires the LINQ to SQL tools which are not installed by default as part of any of the workloads of Visual Studio. +In Visual Studio, you create LINQ to SQL classes that represent SQL tables by using the **Object Relational Designer** (**O/R Designer**). The O/R designer is the UI for editing `.dbml` files. Editing `.dbml` files with a designer surface requires the LINQ to SQL tools which are not installed by default as part of any of the workloads of Visual Studio. To install the LINQ to SQL tools, start the Visual Studio installer, choose **Modify**, then select the **Individual Components** tab, and then select **LINQ to SQL tools** under the **Code Tools** category. @@ -29,15 +29,15 @@ The **O/R Designer** provides a visual design surface for creating [LINQ to SQL] To add a LINQ to SQL entity model to your project, choose **Project** > **Add New Item**, and then select **LINQ to SQL Classes** from the list of project items: -![LINQ to SQL classes](../data-tools/media/raddata-linq-to-sql-classes.png) +![Screenshot showing LINQ to SQL classes.](../data-tools/media/raddata-linq-to-sql-classes.png) Visual Studio creates a `.dbml` file and adds it to your solution. This is the XML mapping file and its related code files. -![LINQ to SQL classes in Solution Explorer](../data-tools/media/raddata-linq-to-sql-classes-in-solution-explorer.png) +![Screenshot showing LINQ to SQL classes in Solution Explorer.](../data-tools/media/raddata-linq-to-sql-classes-in-solution-explorer.png) When you select the `.dbml` file, Visual Studio shows the **O/R Designer** surface that enables you to visually create the model. The following illustration shows the designer after the Northwind `Customers` and `Orders` tables have been dragged from **Server Explorer**. Note the relationship between the tables. -![LINQ to SQL Designer](../data-tools/media/raddata-linq-to-sql-designer.png) +![Screenshot showing LINQ to SQL Designer.](../data-tools/media/raddata-linq-to-sql-designer.png) > [!IMPORTANT] > The **O/R Designer** is a simple object relational mapper because it supports only 1:1 mapping relationships. In other words, an entity class can have only a 1:1 mapping relationship with a database table or view. Complex mapping, such as mapping an entity class to a joined table, is not supported; use the Entity Framework for complex mapping. Additionally, the designer is a one-way code generator. This means that only changes that you make to the designer surface are reflected in the code file. Manual changes to the code file are not reflected in the **O/R Designer**. Any changes that you make manually in the code file are overwritten when the designer is saved and code is regenerated. For information about how to add user code and extend the classes generated by the **O/R Designer**, see [How to: Extend code generated by the O/R Designer](../data-tools/how-to-extend-code-generated-by-the-o-r-designer.md). From 5d13cccb81609d29a56d0fb69c9367b6231c5fba Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 12:27:10 -0800 Subject: [PATCH 14/27] Review and update --- docs/containers/container-tools.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/containers/container-tools.md b/docs/containers/container-tools.md index 285b940cda9..490ea75ea4a 100644 --- a/docs/containers/container-tools.md +++ b/docs/containers/container-tools.md @@ -3,7 +3,7 @@ title: Visual Studio Container Tools with ASP.NET author: ghogen description: Use Visual Studio Container Tools and Docker for Windows to build and debug containerized apps and publish to a container registry, Docker Hub, or Azure App Service. ms.author: ghogen -ms.date: 11/16/2023 +ms.date: 12/3/2024 ms.subservice: container-tools ms.topic: quickstart --- @@ -55,14 +55,13 @@ Visual Studio creates a *Dockerfile* in your project, which provides the recipe ```dockerfile #See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. -#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed. -#For more information, please see https://aka.ms/containercompat - +# This stage is used when running from VS in fast mode (Default for Debug configuration) FROM mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 AS base WORKDIR /app EXPOSE 8080 EXPOSE 8081 +# This stage is used to build the service project FROM mcr.microsoft.com/dotnet/sdk:8.0-nanoserver-1809 AS build ARG BUILD_CONFIGURATION=Release WORKDIR /src @@ -72,10 +71,12 @@ COPY . . WORKDIR "/src/MyWebApp" RUN dotnet build "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/build +# This stage is used to publish the service project to be copied to the final stage FROM build AS publish ARG BUILD_CONFIGURATION=Release RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false +# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration) FROM base AS final WORKDIR /app COPY --from=publish /app/publish . @@ -164,5 +165,6 @@ You can now pull the container from the registry to any host capable of running ## Additional resources - [Container development with Visual Studio](./index.yml) +- [Create a multi-container app with Docker Compose](tutorial-multicontainer.md) - [Troubleshoot Visual Studio development with Docker](troubleshooting-docker-errors.md) - [Visual Studio Container Tools GitHub repository](https://github.com/Microsoft/DockerTools) From d5f110523094ccaf69d8ac0ef5b83785e6f4d41c Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 12:30:38 -0800 Subject: [PATCH 15/27] Review and update date --- ...-build-specific-targets-in-solutions-by-using-msbuild-exe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/msbuild/how-to-build-specific-targets-in-solutions-by-using-msbuild-exe.md b/docs/msbuild/how-to-build-specific-targets-in-solutions-by-using-msbuild-exe.md index 04810dc71e2..1dbf408470c 100644 --- a/docs/msbuild/how-to-build-specific-targets-in-solutions-by-using-msbuild-exe.md +++ b/docs/msbuild/how-to-build-specific-targets-in-solutions-by-using-msbuild-exe.md @@ -1,7 +1,7 @@ --- title: Use MSBuild.exe to build specific targets in solutions description: Discover how to use the MSBuild.exe command line to build specific targets of specific projects in your solutions and get help with troubleshooting. -ms.date: 08/15/2023 +ms.date: 12/3/2024 ms.topic: how-to helpviewer_keywords: - MSBuild, building specific targets in a solution From e3e109bf7dca7788b857136d98898c2925ead3ed Mon Sep 17 00:00:00 2001 From: Anna Huff <92125952+AnnaMHuff@users.noreply.github.com> Date: Tue, 3 Dec 2024 13:38:09 -0700 Subject: [PATCH 16/27] PR review: Update run-unit-tests-with-test-explorer.md Fix typo, add period to end of alt text, add lightbox coding for new image, fix branding capitalization. --- docs/test/run-unit-tests-with-test-explorer.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/test/run-unit-tests-with-test-explorer.md b/docs/test/run-unit-tests-with-test-explorer.md index e0ab2268d71..2070ec0a885 100644 --- a/docs/test/run-unit-tests-with-test-explorer.md +++ b/docs/test/run-unit-tests-with-test-explorer.md @@ -61,9 +61,9 @@ You can run all the tests in the solution, all the tests in a group, or a set of For MSTest projects using Visual Studio Testing Platform (vstest) as the test runner, the default architecture matches the operating system's architecture. You can override this behavior for AnyCPU projects through the Test Explorer menu shown in the image below. -:::image type="content" source="../test/media/vs-2022/menu-process-architecture-for-anycpu.png" alt-text="Screenshot showing menu for selecting the processor architecture for AnyCPU"::: +:::image type="content" source="../test/media/vs-2022/menu-process-architecture-for-anycpu.png" alt-text="Screenshot showing menu for selecting the processor architecture for AnyCPU." lightbox="../test/media/vs-2022/menu-process-architecture-for-anycpu.png"::: -For projects using MSTest as the test runner instead of Visual Studio Test Platform (vstest), the architecture is determined strictly by MSBuild and runtime rules. Executables are generated based on the preferred architecture specified in MSBuild/runtime settings. You can adjust this preference using MSBuild properties (e.g., **PreferNativeArm64**), but the Test Explorer menu **Procesor Architecture for AnyCPU Projects** cannot be used to change the architecture for these projects. +For projects using MSTest as the test runner instead of Visual Studio Test Platform (vstest), the architecture is determined strictly by MSBuild and runtime rules. Executables are generated based on the preferred architecture specified in MSBuild/runtime settings. You can adjust this preference using MSBuild properties (e.g., **PreferNativeArm64**), but the Test Explorer menu **Processor Architecture for AnyCPU Projects** cannot be used to change the architecture for these projects. #### PreferNativeArm64 @@ -351,7 +351,7 @@ For example, `FullName:"MyClass" - FullName:"PerfTest"` returns all tests that i ### Analyze unit test code coverage -You can determine the amount of product code that is actually being tested by your unit tests by using the Visual Studio code coverage tool that's available in Visual Studio Enterprise edition. You can run code coverage on selected tests or on all tests in a solution. +You can determine the amount of product code that is actually being tested by your unit tests by using the Visual Studio Code coverage tool that's available in Visual Studio Enterprise edition. You can run code coverage on selected tests or on all tests in a solution. To run code coverage for test methods in a solution: From 34a0ba52a35adfa2ac2642e125b449afe5e7a41b Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 12:39:28 -0800 Subject: [PATCH 17/27] Review and update --- docs/msbuild/whats-new-msbuild-17-0.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/msbuild/whats-new-msbuild-17-0.md b/docs/msbuild/whats-new-msbuild-17-0.md index b7e08164afa..06041a527bb 100644 --- a/docs/msbuild/whats-new-msbuild-17-0.md +++ b/docs/msbuild/whats-new-msbuild-17-0.md @@ -1,7 +1,7 @@ --- -title: What's New in MSBuild 17.0 +title: What's New in MSBuild 17 description: Review the changed, updated, and new features of MSBuild 17, including support for .NET Framework 4.7.2 and .NET 6.0, and access links to release notes. -ms.date: 11/01/2023 +ms.date: 12/3/2024 ms.topic: whats-new author: ghogen ms.author: ghogen @@ -11,7 +11,7 @@ monikerRange: '>=vs-2019' --- # What's new in MSBuild 17.0 -This article describes significant updates in MSBuild 17.0. For the detailed release notes, see [MSBuild 17.0.0](https://github.com/dotnet/msbuild/releases/tag/v17.0.0). +This article describes significant updates in MSBuild 17.0. For the detailed release notes for each version, see [MSBuild releases](https://github.com/dotnet/msbuild/releases). MSBuild 17.0 shipped with [Visual Studio 2022](../ide/whats-new-visual-studio-2022.md) and [.NET 6.0](/dotnet/). From fb39cd46f5105453128c4ac93f40e535ed8388ac Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 12:58:56 -0800 Subject: [PATCH 18/27] Review and update date --- docs/deployment/tutorial-import-publish-settings-iis.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/deployment/tutorial-import-publish-settings-iis.md b/docs/deployment/tutorial-import-publish-settings-iis.md index 2bda6449ef7..9a26d394c36 100644 --- a/docs/deployment/tutorial-import-publish-settings-iis.md +++ b/docs/deployment/tutorial-import-publish-settings-iis.md @@ -1,7 +1,7 @@ --- title: "Publish to IIS by importing publish settings" description: Create and import a publishing profile (.pubxml file) to deploy ASP.NET and ASP.NET Core web applications from Visual Studio to IIS. -ms.date: 10/17/2023 +ms.date: 12/3/2024 ms.topic: tutorial helpviewer_keywords: - "deployment, publish settings" @@ -26,7 +26,7 @@ These steps apply to ASP.NET and ASP.NET Core web applications. * Install the latest updates in Visual Studio by selecting **Help** > **Check for Updates**. * Add the workload by selecting **Tools** > **Get Tools and Features**. -* On your server, you must be running Windows Server 2012 or greater, and you must have the [IIS Web Server role](/iis/get-started/whats-new-in-iis-8/iis-80-using-aspnet-35-and-aspnet-45#solution) correctly installed (required to generate the publish settings file (*\*.publishsettings*)). Either ASP.NET 4.5 or ASP.NET Core must also be installed on the server. The steps in this tutorial were tested in Windows Server 2022. +* On your server, you must be running Windows Server 2012 or greater, and you must have the [IIS Web Server role](/iis/get-started/whats-new-in-iis-8/iis-80-using-aspnet-35-and-aspnet-45#solution) correctly installed (required to generate the publish settings file (`.publishsettings`). Either ASP.NET 4.5 or ASP.NET Core must also be installed on the server. The steps in this tutorial were tested in Windows Server 2022. * To set up ASP.NET Core, see [Host ASP.NET Core on Windows with IIS](/aspnet/core/publishing/iis?tabs=aspnetcore2x#iis-configuration). For ASP.NET Core, make sure you configure the Application Pool to use **No Managed Code**, as described in the article. @@ -58,4 +58,4 @@ First, check the Output window in Visual Studio for status information, and chec - For ASP.NET Core, in IIS you need to make sure that the Application pool field for the **DefaultAppPool** is set to **No Managed Code**. - Verify that the version of ASP.NET used in your app is the same as the version you installed on the server. For your app, you can view and set the version in the **Properties** page. To set the app to a different version, that version must be installed. - If the app tried to open, but you see a certificate warning, choose to trust the site. If you already closed the warning, you can edit the *.pubxml file in your project and add the following element: `true`. This setting is for testing only! -- If the app does not start from Visual Studio, start the app in IIS to test that it deployed correctly. \ No newline at end of file +- If the app does not start from Visual Studio, start the app in IIS to test that it deployed correctly. From d6a464b655835866b2bd3373598f4f7350ae09f0 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 13:07:09 -0800 Subject: [PATCH 19/27] Review and update date --- docs/azure/overview-connected-services.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/azure/overview-connected-services.md b/docs/azure/overview-connected-services.md index a4939666623..c1bd910c017 100644 --- a/docs/azure/overview-connected-services.md +++ b/docs/azure/overview-connected-services.md @@ -5,7 +5,7 @@ author: ghogen manager: mijacobs ms.subservice: azure-development ms.topic: overview -ms.date: 08/01/2022 +ms.date: 12/3/2024 ms.author: ghogen monikerRange: ">=vs-2019" --- From 96832f2ffa0918f0262351255bbf7a77d74e3f48 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 13:22:23 -0800 Subject: [PATCH 20/27] Review and update, add clarity that you need an existing template --- docs/ide/how-to-substitute-parameters-in-a-template.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/ide/how-to-substitute-parameters-in-a-template.md b/docs/ide/how-to-substitute-parameters-in-a-template.md index 51aa416d123..8bd0c8ee65f 100644 --- a/docs/ide/how-to-substitute-parameters-in-a-template.md +++ b/docs/ide/how-to-substitute-parameters-in-a-template.md @@ -1,7 +1,7 @@ --- title: Add name parameters to project and item templates description: Modify template parameters in Visual Studio to replace identifiers like class names and namespaces in existing templates or your own templates. -ms.date: 01/02/2018 +ms.date: 12/03/2024 ms.topic: how-to helpviewer_keywords: - template parameters @@ -22,6 +22,8 @@ The following section shows you how to modify a template to replace the name of ## Example - namespace name +This example assumes you have an existing template. If not, see [Create project templates](how-to-create-project-templates.md) to learn how to export a project or solution to a template, or [Create item templates](how-to-create-item-templates.md). + 1. Insert the parameter in one or more of the code files in the template. For example: ```csharp From 2b79667f297aff46ee9344d1754cd13ca630cb67 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 14:55:58 -0800 Subject: [PATCH 21/27] Update docs/msbuild/whats-new-msbuild-17-0.md --- docs/msbuild/whats-new-msbuild-17-0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/msbuild/whats-new-msbuild-17-0.md b/docs/msbuild/whats-new-msbuild-17-0.md index 06041a527bb..4eb07847117 100644 --- a/docs/msbuild/whats-new-msbuild-17-0.md +++ b/docs/msbuild/whats-new-msbuild-17-0.md @@ -9,7 +9,7 @@ manager: mijacobs ms.subservice: msbuild monikerRange: '>=vs-2019' --- -# What's new in MSBuild 17.0 +# What's new in MSBuild 17 This article describes significant updates in MSBuild 17.0. For the detailed release notes for each version, see [MSBuild releases](https://github.com/dotnet/msbuild/releases). From ad16dfd32acb13c87a5473eaf218944e8802a292 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 14:59:39 -0800 Subject: [PATCH 22/27] Update docs/ide/how-to-substitute-parameters-in-a-template.md --- docs/ide/how-to-substitute-parameters-in-a-template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ide/how-to-substitute-parameters-in-a-template.md b/docs/ide/how-to-substitute-parameters-in-a-template.md index 8bd0c8ee65f..2f1e3242697 100644 --- a/docs/ide/how-to-substitute-parameters-in-a-template.md +++ b/docs/ide/how-to-substitute-parameters-in-a-template.md @@ -22,7 +22,7 @@ The following section shows you how to modify a template to replace the name of ## Example - namespace name -This example assumes you have an existing template. If not, see [Create project templates](how-to-create-project-templates.md) to learn how to export a project or solution to a template, or [Create item templates](how-to-create-item-templates.md). +To follow this example, you need an existing template. If you don't have one, see [Create project templates](how-to-create-project-templates.md) to learn how to export a project or solution to a template, or [Create item templates](how-to-create-item-templates.md). 1. Insert the parameter in one or more of the code files in the template. For example: From 5a797a9445ca6a0f39004308806e94c11d857295 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 15:27:02 -0800 Subject: [PATCH 23/27] Update docs/ide/how-to-substitute-parameters-in-a-template.md --- docs/ide/how-to-substitute-parameters-in-a-template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ide/how-to-substitute-parameters-in-a-template.md b/docs/ide/how-to-substitute-parameters-in-a-template.md index 2f1e3242697..0073a7aad8b 100644 --- a/docs/ide/how-to-substitute-parameters-in-a-template.md +++ b/docs/ide/how-to-substitute-parameters-in-a-template.md @@ -22,7 +22,7 @@ The following section shows you how to modify a template to replace the name of ## Example - namespace name -To follow this example, you need an existing template. If you don't have one, see [Create project templates](how-to-create-project-templates.md) to learn how to export a project or solution to a template, or [Create item templates](how-to-create-item-templates.md). +To follow this procedure, you need an existing template. If you don't have one, see [Create project templates](how-to-create-project-templates.md) to learn how to export a project or solution to a template, or [Create item templates](how-to-create-item-templates.md). 1. Insert the parameter in one or more of the code files in the template. For example: From ad619e4a20f9481116c63a6666b29a24b435bf44 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 15:42:05 -0800 Subject: [PATCH 24/27] Remove PII (#13393) --- .../vs-2022/multi-repo-track-changes.png | Bin 17606 -> 17822 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/version-control/media/vs-2022/multi-repo-track-changes.png b/docs/version-control/media/vs-2022/multi-repo-track-changes.png index b9d63102e9c47a97b2e04268dad0d9b8100ea3c8..38b8d6197d733a9a2123ea4ef55f2c6cdb8efd36 100644 GIT binary patch literal 17822 zcmd741yq#Z+cr9iMF=7Y0wMxRhqSbGw{(njcS)ntjdYHHgmgEIBHbY|bazPS4By80 zf8Ou+{=avfbG~n_v)0*b&CH%>9-e2{bMO1UuInaPQC{L91~CQ%0(mGUDXI*C+(Lnu z&V$?FNDe|K0eswYRF)8i6!$;d0AKEy3dspUAZ3x5SNeCscXT^RO-BfX;N{KhR?3rh zd~lG!Nle2@#n!~hRo}rFqNs0fZ+-obYu?=N?$`gg&KFR>DYwB@Z~r}0nfnc>{p+t-UcbKiRmu5w zk(r?8AOs?+Bqb{J?t|XWjGGR=dNUWwR;N7Cte5J699qn-WXr4eb?3L~kc6Y2&PSvo zzLHJ`QP!UKWOckPCPn?8>O3~ahb7UxU{UIV960Dak9ET8)4AU+$=OJm!z;v@U@4n9 z8%FLH1{ai9bw1wM%+a(i9JnmWSION>&9`ZG-qaQwXGEb;phFg{e#{VvZ^{g#0^j}} z=sgI8D{E{_jnf|Uu>kn>>!?NcV5A=o#CP+>5gH^9TUhWvt2T$XAs?dh^Xbm5WM#uV ztGRS$S4U-`N-wlnbSYy?X$g%A(4DEXU7E%q70#^Ak88}7^DD%iQD^Wt3U$`(jX2bs75&|O9bU+FQo|d$n!G`e z5${GyFxEXOgm=N`bn9V&Ku_O%&&dtz31aLvWPWF|%5rbE z$#JzeiQAEi9=xrlayy>v&NNt#Gc{N9yRDDQ!g!Cbu(b=h_1-z@R8OE+tHl>tT%wRR zg)WrO1p9f$yifSxlB;K?u$XZTt}Hf)FP;^of5U-qmQlOLW~RZ_R$RQjH;K)(KQ$>j zy3BQNwn)3?;P_dm0}?bBv^KuYZs^_pT%*x%>2{Vp+yNN$^3seSLIiU6mj?DaFSc2}(|anMxk3KCtuP%( zXETjpZ*W}eXX;o|RaIq}`t=31Yvir5PE9dxKj&6_J$>#dTK=t;kHfx^#&kns=N9i%8|cd^jrkW1s$H5{KRbRN}n zRF@r(ifOj*P&5~#ps+1DabUHYOyiRsxEi>=!r>Zvbvd}V(ShIOsA>RD>RY#BUFCgZ`WO50E70+;nST?OXt?!m@8mpGU+gJH*CG7qQs zXZ2>CcCYI8t3Q}8UD?=NqPWUI5%B0m6}G1q=q1Ee6<5BNkgwVkysE27 z;3_ydH)TLc`}bc^<o?(Qy8xL>o?`M)$ zzp*Uwx{k15-f;J`9f~k1Oz`@cTG4!*>T!t;NjKdZE81=K+CV&yUyfGbW%D@M4hsuQ z<8>{ka@m~*D{rBH=gxWF^;w2Ra(!V#^f#~Tg@KNNxVtaW(axDJS3Skj9Te&(1t8PEC&KTXBR}glxa>^VIrgV=>x%mX z`fQZX1jgAIPVRbOV3OK0bla$h6m;#yOOFiCObrN9gNdGueBeVJj|2g=|HAz!{sep{%wjH#8aNqV5>97h72x+w!{aD(h@cLbt(32*sQ3l)<= z-j2TB3~Y}66BW;Vd%as7>eWUl1h>DKYgAs39Gzx<@+m*;Da#`C`hpO;*&2jP*$u~U zmO{rdpMm1qsLdczFOG0tzVrm`d6+>4xfibgD_~!2kP_VY^_#P^vv=z1muF{xFzbI= zaUP1zu;{n=oz8mLw)ml6-R7Eh9N-6!FCzm(VSYZ3-TYg9{RLpn#3P^g#h;WL&a9ZM z<8(6=8IN^1gc^)v%HSuQXepYQTbr9af=>IV7u`*Vz)0WNqpr@M(5s~i`lLf&D^kfO zM#aQrjaoQ5IMkCMDJdyKLqjFPiL30F+D+5lsAy@;M{?x!^z^1`Y;kaK)+|p2xkRo% z_wiCvfHK^370(@T8c}`}bW@yB!?^WM!}fhCRGu(#3@{^s<)_>KUDu#&0wIroml0-RlH_BY35_&!Sd=u;NSs zyN&zlj4O+9Ytd#)o)pR(xHpzMg~IWBwcqSAM@%8|No#;d%jyP4cAWJR`%&$@$y zf+U%C_^C~cW;c~V!Z>@Ka*VJ-XbOS~g3LkscaQw_8v(al^ zaB;1xw`q;V&;dRg1PxdF3h|8iTA}u zZgzIIPDYkembllSpZ7g!ab@mErF-mhd)xasa2;`3OND?1@>+uKA)Kdsm=dfU9%0J1 zj~-uPP68SPn+0BqdGQt5!9mH@+l8m20-gE6gt*EJ>P4g()f&aJ_Mm|qnId{4&D6VA zWEWq~>d4r~WyqrVxM;906Z{Y8A1g^9PConTP&}HM@Kdl|UR#6lIEOIrL>wI*i3DPU zw$-t1QMro1=jVr=Zw#%ujC>NzYC??}tLTaNxX?%Mle-Rb+FvLr9B3N$9)^l&E#dmaDw8l&f3wby%CWu4u`Ik$$PLXFYFgSZ#K;>wDp^Ts=|vfS z1s$DfQrBr*GP1q?!jx%DWLcR(R9HCHj+ttwCN7CjO_{7bShC!DO_u>ApMruuVJ$Qt zuYMNhSdb>Cag5mJ6dsBH2JVpii*JqoAl74e^yFhuko4c8lW;WlSqpmNkHPA9d4Q>} z=y+BACf-SA;IY8M+l&s%j}Ei72Gnkm1M1#=d*^u5=?LBxLq#hK{#Z_v}M? zmG#r(Ij4)|OFUB2qEU-Fzeu%$@Q8@j0y-s6;T>-!V{g zE4N{etZhy2jRODiJ1worOtDZN9v&)%bkFSx7ASNsoP>*jfZ(}+XJW}tYgVK{z5DSd zuskbkYo^A=WgF>jUKNOEL_}Q)Jf@r}%)0fJP8-8HR4adS$G5nwCSJSlPVY5eMnK1M z{~THm@~3dwx?DBfwNqh+3kKqlp+;b+SQxBi)M9IM)6>(F(`H)Z-MeM)>4fw)qwA=>SQ&=7S-W% zCE@Mu4QzXcNZ^^Y?)lM(LPbRdm<8}o3j6H@tqHj51qO@@j1ahNTPWf66dXC#8BMuY zyA&bu+|B6cr@QCp=i1d)_VEuk1<~UFeEcc2|7nKkrKj)6%w8lfI+>J{(-APd_1?&f z=dDOR2i)WaK0HbEOmJC2dvj+T`&H> zw$Y!~dJu@J$luc&Kx_e-E{ytf3tT2Q!w2kidrhb5OZ3<}S0Zc>2o^^7--F!T+*(DP z)YKg;7YzoT#rZddPI_oR^dgQaJMYw*xV)hJp=a>o?va$EE^(q7xP8BCxBt z#-^t9sKGqEfbF(Qaw;k+6A|sJgY1#_`ZLrkKLk^W7sM zN1Lbrx(fX0!i@{c&HUOgaEy!t7dOd8RZ+vpb?NkBb|{vm#~f2X_U6njh@Cw5(P>!! zTuBy^J*B$3^4#L~HeoJ)*|t<%tXeeAA4Da2gM~fKc{^cHTx(T`va(g2u61`*-=;$_ zaobMkI>oO^jno8bogI1gzOH(jqd`sBLt(e-pK4;$^6EuSRVolj$OY?BgHb0_knPkX zJWyg(7iuOnQ(0G9t@3gsLJAWTpT&3+Z5X}bdUV?cDvLZhS;xz3C648!+#+uhR`;+wRw;gY zZtZ-LkiVQ(DyyELE1Xg?t)8^*h%ltr-N6SDlo!#(iYBgGb?efGvdKBRzPicaE;i&X zA?V=9#!1AWU3_RFse;ST-;=}QEv&=Yy^nWc={9?hvI@v`$c^=_%_~+EP0*jja; zba@%U^?``6VJUf3XB?MDCOvRd2-dLdo(qAbZi%leNJ|?GoGB!}Ca0whhRTYLE&hI3 zSqqkr1&j53x-|QWk?I-a-vveYprEHa`tg&D!q=&-vHlxoO-?D}u@ypjrKy|WFr-r) zoi*?!TntN zGJP-`|B2bGDVLnb=eY>-hE5;#n%fQc7hN$RzH3LP7u-7Qrb9kMnPMbdHt)hNL2TxU ziv=e0Y4Zb!Zyrg;9NM~a2*#op!U-9W9%*rD!TWqAXPOqW&it7M1m$n%enfJD*qrzu zvHAaD^|~jmtStCI69Rb}hW(sjNm>VK=4fTLD2TEb)dLX9=bjQD(jA^7$^|swA^*c! z{##{pI$9q(I1hY|vAb>-pU`PW8I$f|(JgAST@}DQu+QPUUY0vzDvEx8Bcp*S)vT^{ zeEqq#(Xb==uX?vqG7lcF;UJr0Gzb@FIMtxRIdk!!-G;qpC#fKb8Pa1Yx3d|E<2;*p zk|aq|EdKWunbGB57MHLHT_VESEy^JaCTIK7Tafyah77V;b8uttFy?OqlLKMT+?b&} zrLi9OAo*iOYZq0~QVUL%zZv+Rb{}9QpBS>cmE(|XJwKBrNn*F2mZY#xx4Jv*`6jK7 z)g~1urN(;7o1e&y-ZaAca?wWZxcj?^F!YS`8OC$a+H#z-f_P=e0(SbTfOjsdzrRNd zwAdU>DP@MsCUZu7+bNwb?=F|>V3c~LE}vGfqBF zg>G$p4|W8~4DE+pQP0{%L);de_r=Q(I;DJ}JIKM-uV1z0ZRq(Y?5wSR|1xAw1#T=J z;jVk<)}jP2ouB}9YYAzb1TisjF+aQEa8Lkq$vwY2ky$ZQ(m0dGnaowGW`9eq-FRyU z8q<_byN1gbat=)&am6x zKU327X(CI0ir<2^2BwJbR zjB+0Y*;&@TGgw@dY56Ax2kjP`X%}uKC{*5|vyPUWp23Y7HWgjC_t2N_2wDs!zJzhN z--`+93iptRc*bp`<$hBxjL3-HYT|>|yT3Ezx5Fa&)6zi^0F&FX6I4{GS1)WTpRDaK zMX|!!+~m+^TE62gvXxCw*&!E`%U>BS<>FQEx-6+*Aqw-d53$zN|K(B{jdK|_LCOnO z!Bq9m;CFff;<22i_)6DEe4J-h$qMNUobzE5i6^_!%WO&3if`WQTJKjd%j=TEx+GDM zx2GaLr@=LRJN<;%VA&uS=(h_UddV%EgKe`$b?U9BlrR(&6nrjNC@!{t04HFQV`F1O zDq3q;oJx+w&0&g@AU#-Ym|nekr6#{rpSNgL`P{^~yUMX&DpZGG(%Xq(f@a@hU+pAUr(z8HfF1YjBMY zH`|w1Yu4fTC)CVUZz^$V1hn=%Ry53axHqnGoodoh>puu{y&LIYvO9IR2IDn(*Po48 z3s$9>nOoO+j<-sl2x8Wxa*I)Z-w~B5SPDqv&-D4e;`iH7lW=1?($(MZ-kd4F-MqGq zOm1^*^^WuYQQM_$!}OmOZne2)OP4zDsQ`H63ulcpvQWnm?Qb%S)TyT=5F2UT)r*E> zzewrM^d6!YXmb>h>E3$JmRuN~z~?B=1AQ3VPEZTP4o_s=)UP9Scw{8^JeAvTp9|n4 zH!e;s;svmr5Wau-OaH&ErfFXxkt>J)bw8-ovbMCOPgxZa1YTS0at7HAZ1OM9@85f} z0Q+-(>f<9UfXRQd-{G?q3W3->Q^#>dUBU%H9PiU3^Y#Ao5AU(SUiAT=ZyFu))#BfG zl>b0tW-yRA{T>aTbIk`{m))mL{OTRdJG}LEwtG{2B?b4e=zC6!!s4HZmf(+lp;``Y zP2Z!3nny9;2Ht3m2;63O>T=A2?y*U)WFiZte!DjQkk75(^-HI01XeY4_w1u>Y#Ils zJG@Njm{sju_A>p5*dCi$p^SzAps4eWcF~~Nk3lTOs%w0*byR3>cm5GSrh|A^}RzWo_Nz4weH}#%!UAYe@1!&Pn z>#iZ3eRVrp`)PKw7*G9=a3NScyZ+u3JdUgEP*Kq#dM*Jk6UUY?B6Kza(m$FnUYWM{ zhvnAzZA+g&o@`}h6kx+^dxJ2(OTqJncWIzQGn48xs37@DdiEgVX&k0P8BD2II za;SH$&hoaH=_!+RV%hqSBq=ySKNF82*@kE7Jh;WB5N4U-@Gi~n(gvF;RbP!R0f+?X zK$o|Cp7S1_;VX1mi3$oj77p}QG0c_QuWEeBbW14Yot@-Wdp3_ZM4f`r-6Fy!Bslsy z*3ta7|7Nlu&t@ioN6`0YXVahp)Vk!%X!y2f;z(bb>5KB}H1hq}uPG#gU0q1uX5+Kt zZ*2Doq{uzm51MAU88vJ6_^z%e3f-O1WWQTsPW`Bb%1+h!BleO?$YnlC?%1NiJYGbn`GsL&tX`b|z zqQOsApjnO#s(b+XG4kdi^5@T=DV)}eGMYz4vNoKXL`%5e-_gE1{q83mD%``RD6Fsd zE}W$(l}4Wq9mzU&M!iNN64X5s#-Zf)00o)<2tq$QJ3BqSSpdME-4(^hUsvE5U1`yA z)6=6=&w%+oWy{o(UL3yHY;5{CN4zT5iiw(nP66*yRZmw0^-)MvbR|VbD>H}U1kJZY z>A_8FEXNA#j>ojm@5;J4KNMR*tgs4)<#ZeQ94Hi5CWet?bm3@cw!hObYv3zY#jiFg zsD3e6?N)8(Ug^^ljSLymV=kt$YR^DpU^ZILuS3vlf9XP%Q|Vjab7-Go`>&&Y&#nVd z9Wi5{-vkciq<42=Ojo%46gCkpOD4(8 zG|$j0;TltX7r^3oJlKpDGK!z#xUL$+BA6t-c;w!sXFFfQ*7}rLil$KZqy#}XW@%wl z2E~Rv+IVhLR9joiyIV^sATXPTU_$tNb1e$|GN9+ZMPpRqZ|`W#8k$Q!l7(#Rm0Utm zG7tyIMxGG%lf^gEWWM$Kq|D*^Afx(wotSKu9jRjBs!2)buq>)8E~0@b6Q`2wDDbIV zd}AJQmR`4%QdV}-?PH|J{X39%`UC0w>Lq%N%!G@fTi~X`aPh3JzCLHlU77BYMQN>P ztim5NjG z8~XGziNsC^HO^1S z)h*e{@r9tGtWQF2TU_OXl>D$9D(X=y;zO*Kb#1e$E<3F^5}mwXCCj)2^`yAm+ScA! zZ>f(5{X%_x>k^~=Qs=qfI+`(#$Suf+kXzT}fseAjvt9%(LC)JZHA^02FuJ`Q*qM@{ zsWf7DbxnalkcRUgW7%T|nLR1hH^;tY?Av7pxorLSp)&nP6G1X6* z_zUb}qDGy?-JG5DU&yD5?{Q6`Vau&6FFSq?{1t%}_0e4Y`xBAsvut~f-;VNdr4#VQL zuafIyGxKlvT`uze8dLtZ!)w5!MMgXehY|%+6}FWV@dA3{aDRURLn87y06SM+QA$J@ z;WalmA2`_B?s@Drsq3}expRjme$H(z&2`2(ft}alcOHvj`^4xAipX5q~|XR{~tMrr(0%%j3v_?y4?)$3wO9?FD%YFB zwFl}%L_{ZB8_Mw=HP%60EWvlj77fgkJ1YxXN?=PNjlmx!%*a=Izi|wHnzhyLg*EsQL-z94Gj$e2&$r@Vq?REyEEIwOF^*+ zyS_3N7H+wL8y!}p&recPQkIsM!o?{Ida(~qcBTN`9ha0;=djXUGwU82#6TdUrZ%=Y zT2Nz!peTC&?Ag^y0yGC8__?`&$-kU{;vAipDYHXh(Zck%h@rI8lRl;wJsT(3f<6SD zPSN_-Po8{3f3%j@Z?%%&kQ0iPRj=EyDaqqgyVp*J5xvz^N&tu2@(Q**9OTLneDmf* zUor={FFo8hD2Pd~aRPy$RoJ$}oAW%BGc{cU;OdUrh*-e+7@6}`xin$2nj@)Tj-rta z5jtVK=ST8}d>Y<{ynMQ;AB;;Wia`eE=H>vY{P^)>C;?+Kt1$*WpXZq!z*<3f9336k z24HZ5HjMAhB_*~1nv@QS;=P#J^FHmQjKs&sXV9uN>x?4T*Viw+T7&suV_|u271hKu zXgVM-j-_I#$_{8%a(ZEcJ~Q>sG6_u9=H}n?^3Hydq5ia!*nZ2+TBbiM(R(ppZW=F za|&hHG6_8Fxwy^%a{V~Y6x zi~SBV1be|@%G_1X*RNlTio%}&RR0ZFVkc9!rWH51v9)ogAZkBy_~<^F=cC6Ijh5br zt9{Dn)G$v#h#-yv$-F--cj9vDYHNFdr+RbKg45&bY#(r)xI>2ng4bXXySliPA1s(S zDk~Sxlr6fBMCraDxIqZj&bH!lBcE(2hkO&+*q-3=79ZY>hzsuI@+K&%>UltO9KI(w z9zsh^RlrpE_IZdbci~0Ag(5BMMX~YSzmRJ6AeVP_ZGfS|%Lx9OzwmGn&07&?lLCM< z!r&2|kDk+o={-}oANF%f`ynBh-HqYT&xhaQa zG9Q=jEGH^3J-IH%fTw+oVVpv2y**$&S!6D zhq14{t*z|cFeY>3Yxg5FH5xc4c$m8Z$VuI&*X)^eEL1Ss{HFzz%=?Ud>qq_d)jD9n z$I)P1lM!((EV#_2g>8G|^v_*`KNNx`)O@@bN_LlpNu<4NnL2He56e?sveEqK*T31&$6Mo6yy}v;! zq2{P7k-&v6Co%PHZxq-M#N#wLSyh#Wzb#5ji;3jyHzuXH{h(QvqNdqm0@OQNJ+}R~ z=+R;*^VsO97vQDAdf_9vB*e$(JDqk64h}{~N8jJyS5i_^D>yjyoG8^lKup;*ga_Hc zktaDhIhVT)3b`X2#~1KxJmVlXBloppz_KG$W) zQdyjj__K~~&?p$tfe2s6X_XO_6sP$M(#)m@qs3B3uQz!uG|>EgNx%mvPpC34?eV+DhA zv$Lq}iUDado?q$?H;8LIAoF5l8$olgSb1+Cf067A4BQQ6Wh~*vAr~Rbh7#i&_?_cn z#nOr^Mq%4`%_pSZD4z1_%IFC9hDIj_FE4NQAoHsTd{e|GDJkgz_SKe02HG_L+ug(mGETG= zelOd={MdV%K1c|EBnIX!5E<>{V0G>h8RlTTKMQlpm8i2_-ZrG5VEq=PJqpaVOC_v& zX6Lt90D@m@<&%iQ%MkvWk-X-gSxGtb7@b#fn z{$AcRshpxA4XYN+KU9wBj!t_&qTTmCTL8T{Tln!2?TR&mHc&SYBR&RUpZ5ZcMR!;J zi~Zq|5{l4=46O}XclWLL2(@=Cxv|{OyQ`^CdKbAtLGRUGoAf^2AdAcnWG>Nb>Xyg3 zJlWAMHwuouCeH+tG|7?TvQXaw^%ChM7;p&~bZQmzf6U0NnIN8MXlf$B=CPvSBXHQu z_EJ#o$|l+2+mg;BHR@+?7Jh33vfzpQak<)GTEluVx|h=q=DR&{z~w>I)=g@iydpfn zS!(mwIz=}=Q3(|%wl8n|WS%fM>>!uYAfnrmE{X49!!hnG+4VS{DVkMPUTq=ewVxxp z-FX}{6yc^1Bg0sG7~N7_H;wrRA8miGQMA&0gz7vdG{V8r5$eA2s`Kny|NB|ZsJ-wy1wY9CS zf}C7mU*GZJp~qn#*XPfl+1S{?4m+^9 zUg<0ow7Ido{L79coQz(~rpmIjIC(UERF#o%+MGqicTP&lE&y{Q@Sxm8uFbo*B6cm{mA)L{lb_?VZ! zd^zqQx9<6&gcNQ#x;+_E7MAZ<6zgpN%So7kIezPWvA;G2yzfKuf0t+eyZ8OUY#qM$ z^D547lKd$GKkAnH_fI5`zi zQ-bu|x#rvVnP{CFvOTm6AwH}gJCjh5*uL+ZqU6YixLfP@U5SH(vARi()Bil${kCGRq+;^}^jPbjt19=meTUJYxl4s_u#?vgM zqCo}?0nVY(BB(FqP@x-Z9|~?;FF5XYopSnHRmH3Q^22?PNQI{Z-6hT#3wp_RFQ!*_ zddQuFhGHeeU9tyTn76Cj`9ABxqYk10u%>4|?c!=p%};Pp;)rI&@w1 zlik4Ao6uPMi{x;kX%M}68T>7f=*71;7WH+xb7efw;|Z;C&4MZ;E5H_v=f?zO2|zrJ)tE1)+49MVyao+o zry{am!*2#7RHgJ_dH|Wv@xPHt)7=34{{_f?p1g&Fi3zNI7xHv&fceD*5P8gc9`;>a zxO)Qy`5WqiV-K_SIUvw&4<|`U-cGN)I)q&}0@mb(Ci?yC)i+`ET^gL|^ZH)ZAgaP1sO>*uS52rhu44-~-jpWkh5 zN>RVil?6iLk28^`lcTZ7Vuu9V7N<#3u3*6n@FcuT!0lrE%y8r?b~R*TDEBVi$?6-_ zAs)%25X3@RniJpy&we*Dk*Y%r1U}8^D&Nr|zTQK|qMMU)1Q%ivwsK{J02PU_n)Pf& zA>%n$%mE&?h{Jcb6wNI|L>%DLON|VF{077;-!J zBzt0RgiF7Ep8z_Q^6_}O8)zQfiKDIfn2r+S;*$DIHX>|5|Hg{6>v#tE4tuR@W=?w9 z2JBXbF^L&f3XZGE4Dc|su_BJ>WYo)GOBZs9*m9kOb?%`h6nhMK9EcF#B&MNX>1$cNcngRqGL}KUB7Cdaoxu?*W2408*mjD7Y78BwvGGkGR#d! zV7kkB0I($bPDiJ=q?dh_5kDe0)9-Ep6#;cO&q|Bh7((?CoG)z8{2eOgJ&G?K z{-}U}0L==MvcNYhi%Uz_`;k7KY{DiLb%ljtP?)5rsd2NzAB99>V~^*7O;$53Cl!2H zTz;a)kFBU!U;skHnAU6)q3y>|~{*KRJlnH-1;z{#zzzo?$Fi7{DP zT$~UEOU=mWTM@v|-mpCI{uOwmG4Jp12SEYh$LEl*r}sMYpv8rSvfYP3Y&zQ&$paD% z(uDqG^+6zmHTR$ZgN9r@`uA<>A1Knq^Ifp8<9_7b>~nu%?KJ|Q>)obaLI~s@Ws%y{ z-c+zi~k}F77n8d?KHyDKlDfUthyDW zNW%eBG{em?2AKByCHABH_wUhdBz%4mEI1mqe`jh!Z<|9M#cQR5sT6M3X=?UYVszmS6RkF0C zITP?WR*8<>e~p=#OP#NNiO>5U1a!zQ_`)|pR5FL9P1CWO_bpspe*mZ2a+gC{Cb!zy zqxen@dN9!4GKDGC`{D&ypAaPbfUFky17Hwo z83ur1cqzBy2amTm8vsLYYdI%*`;`%0@W|G&d(%gFznQsBIdc>{N9YFN1S219{LswM z`G*$LDq&mL$97QwchsuS5$QB6&a;N^A&%gOd8>kSid6+@prBh=UcLcEAvMPDPSV+dq`17Z(bLeE0^3CpB^VEZa={s*K)HN7G`_7DbwJYVlM^BYR{ zsp5Z6#s2q4Z^8m#3~sE-_s@rG1JqPh2ib!XyYOoi3`m24sQLG0z^Alh9vncW;@3jmAE3J1N+AOm1@*3cg@QPHDtk~8N!0CuGlQVQu;v-z(u zZ-g9{K}RH+&tfpOc*L_V=5+})M@XC&i%}?)I8cm#?TEy94(-xHx{1;u&txEKrXqr# zV~jbl#rc|)0Dw4tj|0W*J|7w1K%}#k=6FzPCjbaZbLrIDeT1q2&s+7Y8`RTuLMx=w z%S}#VOXSz(QN#9E5;-gq&fboWK>BC=?v-iM2UI2jVmPz#Wg|r>; z?lm43H|%~f0aAJn5c@R{i!yXk3KH4QHgdmu)mAKiz1ex}@3{1yE$SL79<>$&Gj(>VvFu zQZuu%3X6=iwXo>!>wA?6vY#YGMQ{8SSxLzc$D``%#X7We-T>hfKwZDx53waaRRaRCW9UXxSMiO&`1i5TaM5m@Q zj1oc6{t(etKK{BN*HVOZ&4H)d?EN`3{isDqG^VB`lnk+t*zBDNb*t}uoj+Ao5b^CW z@Y3cg!&fNN_TP=CZsUitiVBtVi3O_W^VJlvQH2sRPZj}$_^?QD^UOGoiKu9mr$$`7 zIyTy_t%vYwc|k~dMQDD0`NL^eu4G9WnVzmLbSx~LO0%I@S{022fNExCWdUX?EhUB5 z2XzIKDkP7+yu3bt`t)t+6u`O-K#TkB>(}={*$2W_bWBXc6~XH($M^5&wQZZKjJm#T zjh84Svj@j1B(WNUtPBtkYu7uO%gD%xiM0V(H;`-g10_FyQ%1(ewD2G^fPRyclLI1B z6JX`wRH)m^6E!_uU4F+^*$$Bx0|miux6Z5TZqQwfz%R`6IA4*QSCawT`I-2i70r4u zX^#3lc;(w}3P^Lp8_<4>%)oi$Zos?oSG-(cYRd3lm!zDTN!hKmw^^=sxsL@mn!MpfA=6*d!UQeY=T)=! zj-{c2gRG~qHXaC|*J@;2hc!XY2xW?ivo}C}0Y+X~RaMpkVrsDJroAtBtWKIvXDfXa_3J${rQCx`HZ_I$I{Z086YdVx_u^*WP$=9 z$AZEgb-o7H^>Kf{yqXPXO3arp6GwpfS?x>7b&_rUREPm@E582LYA9A8OR=HI!&@Bz zi>|CUG^RKRhlzo<8kEyXKG2l*TDlylGUyKO%EzRS3ZziME@;jWco!1ZY^nKkF@L2p zp7AIg##p>CffsBzP{e56oD8AB7*tF{Sb*7BE1_id3&hAG>`+Z*C)cH(=7 z19Gx-J5VD#q#5P!0c%7#clPNo4&0VufJxe-%B`+x)xz@sEfAdX`=bwX3u>k0;c=-T zi2Meh-LR8w#bmJDzdR1<(4}}zuWOW8f`q~r%T@#_&7HHmfBzK=?*$mlrFzPiyII=P z@v3&VM-;x&PQ#`rA(YW&B`u<6v0nn?s661$&_K>tS=1)&RG-#D;an{WAEpbD>tq!L z6b-_lMA>+yd7ELh{ai29eU-XgU?Z%LZZpB$! zuIn?+K4((h*_Z63)-fm^`5M>G`1LDfUQrvJ=i&IU1L8-n-cy#4&*CKh-8os-`=UoZ z%19@F}c{By81Qf;r4@szC zO*_?7LF)hu0%o)xz)4O#X?i8smvh%luSPWP7B??#1H=zRY}wd+`>lAxx<{FrnT2x~ zZ?;XK_I%X`13^m~nwf{E70gkN2Q2$V8lmHAPJRI-oh~(O1;VIT_Mrv}&)mK1n|=+< z&F^){tAGJ9r`W+mVi!zE$~`sdxD2tc%zrVPfRDP3e@V%_4HsD`bS7+A{WP3Yzn*Tc z?mt(EpLQdLceTy%ZPEjoj3+0iFfX->L89g_pMiT{^X;ZA&$!O5Bp}KFpGHRaP&G(0 z;Y*9d$MXI3?dJHZ?7sMM_TGquIoeW!ToYBNv-7P^pyjTnmlCV)7A-`ls9%ZKUUvS5 zg$2mML-2?KTr@eTKb?PTXQxlz_OY8Wp~kknw6r_&cpMWGQ&Zp6G#CFOyES@|LAxm{ z>zCMlY*HS4V&csYvVK{4GD)vq(t-&K`pha)YxRJtJb8;}JMvqMVb7e0Q7nDvK)a-? zd+eon2wBWv2)WpFJ`-ziO%}3p$0irlc8BN)pSe>gZP$(JNbH9$Np&h|X-^6-EoFkkb4o^Bv##l?N1#&!{PqWB483Qa^20nNG$C)13333O-O1L-nv+wr!<8btVD43IV_+}{HV|P%|(4P zaNor!!&9a>zY%D6Rmzx|*X79RGkotXqki0$t__}?@# z>nvhoLIVU72t-nHay>|bY;SLeqmD~JnhV$giJ#e9Uq+&OkJDX%4oh+Q0q+r(nhIPGW*j2cZ-s@0RaI3@P5b~~ z3dwW6jDo{`|vH{$c`1tsC6SUj6)rxhx(vyLQ#2>u1+hSuiQtz`E*vyZ|w5eK*&^!GWNqZturuf@5FtZ@w zUMhJ5-IbZ^W0@DkK>F|^6F}fIAkWkDd+*JIW-&_F{QJVjWh`vp+B&6hc$#?b{!Kx$8l0V%LOhX*TK20Y2Mn!U4DzykJSr zp-#BGe}*q}leas%w*XG4tW*$7L&OFoC@|($r4JfA-&!#s(8F9C%}3q( zL0;i$8;XYDB=DAHCx@=Il2D_qL|gb?*L(lJiL%JELu&vwo!4`1lJUAQKtas@d;=u& zA87v7f8FG{{wsXH$#wcywL?VY+H7Z?I$WWDmjBYfoG_<2wHqUFmdB|dy4pz{d&f9_ z3`3gjb5M}Mc&G|LZbNgmix&eF17auAT3n(UBqfxTt=#Dt2q4P_4%cg{J+5(|Ive+y zO51$_%W%~Pr`e7H*d#oz13H`;kC2~PWh`sVUBw?bbp9ZN*`R|g*`n}wS1YU#Uy|&s zU$zlmv5{#Bc}Ft2{cZ;9KAvMs3A{``m8h&k>H(j*6XbXm6mO^sR=guS>9%vNJGH-! z%~^I>mv*vs*Vu%*x+qk`U6H|TvRo{AH#mn;3Kv(V&yxl6 zA|K1}9pnCe`l;C_p?uKYj9&q$gX?X*;1!#e+^l2z=Fa|~*$jALV{5f@ zq1lE|pr$&=Sgi3UliM2tS8D<}dt}74VecOqZvh%6U) zMKPCCgM3Q#z0`~RDoUrMo&E=0Tf$M~(>2~}1c;w5KDrQJJ>J@;uvb@xYp<#icPanE zyhdx(dO~{9p%hKe_uc0+?mrLq@{5CBNv0rJBWT znBDIoLfF?aLEe&COqN$L+G`q|#_%s^WWa*@InpoT^r*dELYIWxgmGKv%l6}+*|;0V z-aUR(MO6r+FEA_|8<0M04J-pfYoQ9ZXgz1W{V6!bIon)jxW2m8y85zyMuQOYmHFAU z-k3hj%>^hki6HZ{^v9CkH_PGzl!qVSTP*M U*&eXF`9~vCV)CNJ!tX!*4|?Y^KL7v# literal 17606 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 Date: Tue, 3 Dec 2024 15:45:43 -0800 Subject: [PATCH 25/27] Acrolinx fixes --- docs/msbuild/generateresource-task.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/msbuild/generateresource-task.md b/docs/msbuild/generateresource-task.md index d2649187064..b85e420f097 100644 --- a/docs/msbuild/generateresource-task.md +++ b/docs/msbuild/generateresource-task.md @@ -34,20 +34,20 @@ The following table describes the parameters of the `GenerateResource` task. |`EnvironmentVariables`|Optional `String[]` parameter.

Specifies an array of name-value pairs of environment variables that should be passed to the spawned *resgen.exe*, in addition to (or selectively overriding) the regular environment block.| |`ExcludedInputPaths`|Optional `[]` parameter.

Specifies an array of items that specify paths from which tracked inputs will be ignored during Up-to-date checking.| |`ExecuteAsTool`|Optional `Boolean` parameter.

If `true`, runs *tlbimp.exe* and *aximp.exe* from the appropriate target framework out-of-proc to generate the necessary wrapper assemblies. This parameter allows multi-targeting of `ResolveComReferences`.| -|`FilesWritten`|Optional `[]` output parameter.

Contains the names of all files written to disk. This includes the cache file, if any. This parameter is useful for implementations of Clean.| +|`FilesWritten`|Optional `[]` output parameter.

Contains the names of all files written to disk, including the cache file, if any. This parameter is useful for implementations of Clean.| |`MinimalRebuildFromTracking`|Optional `Boolean` parameter.

Gets or sets a switch that specifies whether tracked incremental build will be used. If `true`, incremental build is turned on; otherwise, a rebuild will be forced.| |`NeverLockTypeAssemblies`|Optional `Boolean` parameter.

Gets or sets a Boolean value that specifies whether to create a new [AppDomain](/dotnet/api/system.appdomain) to evaluate the resources (*.resx*) files (true) or to create a new [AppDomain](/dotnet/api/system.appdomain) only when the resources files reference a user's assembly (false).| |`OutputResources`|Optional `[]` output parameter.

Specifies the name of the generated files, such as `.resources` files. If you do not specify a name, the name of the matching input file is used and the `.resources` file that is created is placed in the directory that contains the input file.| -|`PublicClass`|Optional `Boolean` parameter.

If `true`, creates a strongly typed resource class as a public class.| -|`References`|Optional `String[]` parameter.

References to load types in `.resx` files from. `.resx` file data elements may have a .NET type. When the *.resx* file is read, this type must be resolved. Typically, it is resolved successfully by using standard type loading rules. If you provide assemblies in `References`, they take precedence.

This parameter is not required for strongly typed resources.| +|`PublicClass`|Optional `Boolean` parameter.

If `true`, creates a strongly-typed resource class as a public class.| +|`References`|Optional `String[]` parameter.

References to load types in `.resx` files from. `.resx` file data elements may have a .NET type. When the *.resx* file is read, this type must be resolved. Typically, it is resolved successfully by using standard type loading rules. If you provide assemblies in `References`, they take precedence.

This parameter isn't required for strongly-typed resources.| |`SdkToolsPath`|Optional `String` parameter.

Specifies the path to the SDK tools, such as *resgen.exe*.| |`Sources`|Required `[]` parameter.

Specifies the items to convert. Items passed to this parameter must have one of the following file extensions:

- `.txt`: Specifies the extension for a text file to convert. Text files can only contain string resources.
- *.resx*: Specifies the extension for an XML-based resource file to convert.
- *.restext*: Specifies the same format as *.txt*. This different extension is useful if you want to clearly distinguish source files that contain resources from other source files in your build process.
- *.resources*: Specifies the extension for a resource file to convert.| |`StateFile`|Optional parameter.

Specifies the path to an optional cache file that is used to speed up dependency checking of links in *.resx* input files.| -|`StronglyTypedClassName`|Optional `String` parameter.

Specifies the class name for the strongly typed resource class. If this parameter is not specified, the base name of the resource file is used.| -|`StronglyTypedFilename`|Optional parameter.

Specifies the filename for the source file. If this parameter is not specified, the name of the class is used as the base filename, with the extension dependent on the language. For example: *MyClass.cs*.| -|`StronglyTypedLanguage`|Optional `String` parameter.

Specifies the language to use when generating the class source for the strongly typed resource. This parameter must match exactly one of the languages used by the CodeDomProvider. For example: `VB` or `C#`.

By passing a value to this parameter, you instruct the task to generate strongly typed resources.| -|`StronglyTypedManifestPrefix`|Optional `String` parameter.

Specifies the resource namespace or manifest prefix to use in the generated class source for the strongly typed resource.| -|`StronglyTypedNamespace`|Optional `String` parameter.

Specifies the namespace to use for the generated class source for the strongly typed resource. If this parameter is not specified, any strongly typed resources are in the global namespace.| +|`StronglyTypedClassName`|Optional `String` parameter.

Specifies the class name for the strongly-typed resource class. If this parameter isn't specified, the base name of the resource file is used.| +|`StronglyTypedFilename`|Optional parameter.

Specifies the filename for the source file. If this parameter isn't specified, the name of the class is used as the base filename, with the extension dependent on the language. For example: *MyClass.cs*.| +|`StronglyTypedLanguage`|Optional `String` parameter.

Specifies the language to use when generating the class source for the strongly-typed resource. This parameter must match exactly one of the languages used by the CodeDomProvider. For example: `VB` or `C#`.

By passing a value to this parameter, you instruct the task to generate strongly-typed resources.| +|`StronglyTypedManifestPrefix`|Optional `String` parameter.

Specifies the resource namespace or manifest prefix to use in the generated class source for the strongly-typed resource.| +|`StronglyTypedNamespace`|Optional `String` parameter.

Specifies the namespace to use for the generated class source for the strongly-typed resource. If this parameter isn't specified, any strongly-typed resources are in the global namespace.| |`TLogReadFiles`|Optional `[]` read-only parameter.

Gets an array of items that represent the read tracking logs.| |`TLogWriteFiles`|Optional `[]` read-only parameter.

Gets an array of items that represent the write tracking logs.| |`ToolArchitecture`|Optional parameter.

Used to determine whether or not *Tracker.exe* needs to be used to spawn *ResGen.exe*.

Should be parsable to a member of the enumeration. If `String.Empty`, uses a heuristic to determine a default architecture. Should be parsable to a member of the Microsoft.Build.Utilities.ExecutableType enumeration.| @@ -55,12 +55,12 @@ The following table describes the parameters of the `GenerateResource` task. |`TrackerLogDirectory`|Optional `String` parameter.

Specifies the intermediate directory into which the tracking logs from running this task will be placed.| |`TrackerSdkPath`|Optional `String` parameter.

Specifies the path to the appropriate Windows SDK location that contains *Tracker.exe*.

If set, the user takes responsibility for making sure that the bitness of the *Tracker.exe* that they pass matches the bitness of the *ResGen.exe* that they intend to use. If not set, the task decides the appropriate location based on the current Windows SDK.| |`TrackFileAccess`|Optional parameter.

If true, the directory of the input file is used for resolving relative file paths.| -|`UsePreserializedResources`|Optional `Boolean` parameter.

If `true`, specifies that non-String resources are to be serialized using instead of , which is not supported on .NET Core or .NET 5 or later.| +|`UsePreserializedResources`|Optional `Boolean` parameter.

If `true`, specifies that non-String resources are to be serialized using instead of , which isn't supported on .NET Core or .NET 5 or later.| |`UseSourcePath`|Optional `Boolean` parameter.

If `true`, specifies that the input file's directory is to be used for resolving relative file paths.| ## Remarks -Because `.resx` files may contain links to other resource files, it is not sufficient to simply compare `.resx` and `.resources` file timestamps to see if the outputs are up to date. Instead, the `GenerateResource` task follows the links in the `.resx` files and checks the timestamps of the linked files as well. This means that you should not generally use `Inputs` and `Outputs` attributes on the target containing the `GenerateResource` task, as this may cause it to be skipped when it should actually run. +Because `.resx` files may contain links to other resource files, it isn't sufficient to simply compare `.resx` and `.resources` file timestamps to see if the outputs are up to date. Instead, the `GenerateResource` task follows the links in the `.resx` files and checks the timestamps of the linked files as well. This means that you should not generally use `Inputs` and `Outputs` attributes on the target containing the `GenerateResource` task, as this may cause it to be skipped when it should actually run. In addition to the parameters listed above, this task inherits parameters from the class, which itself inherits from the class. For a list of these additional parameters and their descriptions, see [TaskExtension base class](../msbuild/taskextension-base-class.md). From 794641eae3a4509995487de71e1006dc63784387 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 15:46:39 -0800 Subject: [PATCH 26/27] Update common-msbuild-project-items.md --- docs/msbuild/common-msbuild-project-items.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/msbuild/common-msbuild-project-items.md b/docs/msbuild/common-msbuild-project-items.md index 1bf7727fb9d..ac948b32104 100644 --- a/docs/msbuild/common-msbuild-project-items.md +++ b/docs/msbuild/common-msbuild-project-items.md @@ -104,7 +104,7 @@ Represents resources to be embedded in the generated assembly. | Item metadata name | Description | |-----------------------| - | -| Culture | Optional string. Specifies the culture of the resource file. If specified, the build process doesn't auto-infer the culture based on file extension (which is dependend on the cultures available to .NET/OS on the machine hosting the build). Setting either `Culture={culture identifier}` or `WithCulture=false` metadata is highly recommended. | +| Culture | Optional string. Specifies the culture of the resource file. If specified, the build process doesn't auto-infer the culture based on file extension (which is dependent on the cultures available to .NET/OS on the machine hosting the build). Setting either `Culture={culture identifier}` or `WithCulture=false` metadata is highly recommended. | | WithCulture | Optional bool. Specifies that the file is culture neutral and culture detection by [`AssignCulture`](./assignculture-task.md) task should be skipped. Setting either `Culture={culture identifier}` or `WithCulture=false` metadata is highly recommended. | | DependentUpon | Optional string. Specifies the file this file depends on to compile correctly | | Generator | Optional string. The name of any file generator that is run on this item. | From f0fcbec1ac1041461c5992e8fbc9991dc4be6895 Mon Sep 17 00:00:00 2001 From: Gordon Hogenson Date: Tue, 3 Dec 2024 15:54:10 -0800 Subject: [PATCH 27/27] More Acrolinx --- docs/msbuild/generateresource-task.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/msbuild/generateresource-task.md b/docs/msbuild/generateresource-task.md index b85e420f097..1fd57a109ce 100644 --- a/docs/msbuild/generateresource-task.md +++ b/docs/msbuild/generateresource-task.md @@ -36,21 +36,21 @@ The following table describes the parameters of the `GenerateResource` task. |`ExecuteAsTool`|Optional `Boolean` parameter.

If `true`, runs *tlbimp.exe* and *aximp.exe* from the appropriate target framework out-of-proc to generate the necessary wrapper assemblies. This parameter allows multi-targeting of `ResolveComReferences`.| |`FilesWritten`|Optional `[]` output parameter.

Contains the names of all files written to disk, including the cache file, if any. This parameter is useful for implementations of Clean.| |`MinimalRebuildFromTracking`|Optional `Boolean` parameter.

Gets or sets a switch that specifies whether tracked incremental build will be used. If `true`, incremental build is turned on; otherwise, a rebuild will be forced.| -|`NeverLockTypeAssemblies`|Optional `Boolean` parameter.

Gets or sets a Boolean value that specifies whether to create a new [AppDomain](/dotnet/api/system.appdomain) to evaluate the resources (*.resx*) files (true) or to create a new [AppDomain](/dotnet/api/system.appdomain) only when the resources files reference a user's assembly (false).| +|`NeverLockTypeAssemblies`|Optional `Boolean` parameter.

Gets or sets a Boolean value that specifies whether to create a new [AppDomain](/dotnet/api/system.appdomain) to evaluate the resources (`.resx`) files (true) or to create a new [AppDomain](/dotnet/api/system.appdomain) only when the resources files reference a user's assembly (false).| |`OutputResources`|Optional `[]` output parameter.

Specifies the name of the generated files, such as `.resources` files. If you do not specify a name, the name of the matching input file is used and the `.resources` file that is created is placed in the directory that contains the input file.| -|`PublicClass`|Optional `Boolean` parameter.

If `true`, creates a strongly-typed resource class as a public class.| -|`References`|Optional `String[]` parameter.

References to load types in `.resx` files from. `.resx` file data elements may have a .NET type. When the *.resx* file is read, this type must be resolved. Typically, it is resolved successfully by using standard type loading rules. If you provide assemblies in `References`, they take precedence.

This parameter isn't required for strongly-typed resources.| +|`PublicClass`|Optional `Boolean` parameter.

If `true`, creates a strongly typed resource class as a public class.| +|`References`|Optional `String[]` parameter.

References to load types in `.resx` files from. `.resx` file data elements may have a .NET type. When the *.resx* file is read, this type must be resolved. Typically, it is resolved successfully by using standard type loading rules. If you provide assemblies in `References`, they take precedence.

This parameter isn't required for strongly typed resources.| |`SdkToolsPath`|Optional `String` parameter.

Specifies the path to the SDK tools, such as *resgen.exe*.| -|`Sources`|Required `[]` parameter.

Specifies the items to convert. Items passed to this parameter must have one of the following file extensions:

- `.txt`: Specifies the extension for a text file to convert. Text files can only contain string resources.
- *.resx*: Specifies the extension for an XML-based resource file to convert.
- *.restext*: Specifies the same format as *.txt*. This different extension is useful if you want to clearly distinguish source files that contain resources from other source files in your build process.
- *.resources*: Specifies the extension for a resource file to convert.| -|`StateFile`|Optional parameter.

Specifies the path to an optional cache file that is used to speed up dependency checking of links in *.resx* input files.| -|`StronglyTypedClassName`|Optional `String` parameter.

Specifies the class name for the strongly-typed resource class. If this parameter isn't specified, the base name of the resource file is used.| +|`Sources`|Required `[]` parameter.

Specifies the items to convert. Items passed to this parameter must have one of the following file extensions:

- `.txt`: Specifies the extension for a text file to convert. Text files can only contain string resources.
- `.resx`: Specifies the extension for an XML-based resource file to convert.
- `.restext`: Specifies the same format as `.txt`. This different extension is useful if you want to clearly distinguish source files that contain resources from other source files in your build process.
- `.resources`: Specifies the extension for a resource file to convert.| +|`StateFile`|Optional parameter.

Specifies the path to an optional cache file that is used to speed up dependency checking of links in `.resx` input files.| +|`StronglyTypedClassName`|Optional `String` parameter.

Specifies the class name for the strongly typed resource class. If this parameter isn't specified, the base name of the resource file is used.| |`StronglyTypedFilename`|Optional parameter.

Specifies the filename for the source file. If this parameter isn't specified, the name of the class is used as the base filename, with the extension dependent on the language. For example: *MyClass.cs*.| -|`StronglyTypedLanguage`|Optional `String` parameter.

Specifies the language to use when generating the class source for the strongly-typed resource. This parameter must match exactly one of the languages used by the CodeDomProvider. For example: `VB` or `C#`.

By passing a value to this parameter, you instruct the task to generate strongly-typed resources.| -|`StronglyTypedManifestPrefix`|Optional `String` parameter.

Specifies the resource namespace or manifest prefix to use in the generated class source for the strongly-typed resource.| -|`StronglyTypedNamespace`|Optional `String` parameter.

Specifies the namespace to use for the generated class source for the strongly-typed resource. If this parameter isn't specified, any strongly-typed resources are in the global namespace.| +|`StronglyTypedLanguage`|Optional `String` parameter.

Specifies the language to use when generating the class source for the strongly typed resource. This parameter must match exactly one of the languages used by the CodeDomProvider. For example: `VB` or `C#`.

By passing a value to this parameter, you instruct the task to generate strongly typed resources.| +|`StronglyTypedManifestPrefix`|Optional `String` parameter.

Specifies the resource namespace or manifest prefix to use in the generated class source for the strongly typed resource.| +|`StronglyTypedNamespace`|Optional `String` parameter.

Specifies the namespace to use for the generated class source for the strongly typed resource. If this parameter isn't specified, any strongly typed resources are in the global namespace.| |`TLogReadFiles`|Optional `[]` read-only parameter.

Gets an array of items that represent the read tracking logs.| |`TLogWriteFiles`|Optional `[]` read-only parameter.

Gets an array of items that represent the write tracking logs.| -|`ToolArchitecture`|Optional parameter.

Used to determine whether or not *Tracker.exe* needs to be used to spawn *ResGen.exe*.

Should be parsable to a member of the enumeration. If `String.Empty`, uses a heuristic to determine a default architecture. Should be parsable to a member of the Microsoft.Build.Utilities.ExecutableType enumeration.| +|`ToolArchitecture`|Optional parameter.

Used to determine whether or not *Tracker.exe* needs to be used to spawn *ResGen.exe*.

Should be parsable to a member of the enumeration. If `String.Empty`, uses a heuristic to determine a default architecture. Should be parsable to a member of the `Microsoft.Build.Utilities.ExecutableType` enumeration.| |`TrackerFrameworkPath`|Optional `String` parameter.

Specifies the path to the appropriate .NET Framework location that contains *FileTracker.dll*.

If set, the user takes responsibility for making sure that the bitness of the *FileTracker.dll* that they pass matches the bitness of the *ResGen.exe* that they intend to use. If not set, the task decides the appropriate location based on the current .NET Framework version.| |`TrackerLogDirectory`|Optional `String` parameter.

Specifies the intermediate directory into which the tracking logs from running this task will be placed.| |`TrackerSdkPath`|Optional `String` parameter.

Specifies the path to the appropriate Windows SDK location that contains *Tracker.exe*.

If set, the user takes responsibility for making sure that the bitness of the *Tracker.exe* that they pass matches the bitness of the *ResGen.exe* that they intend to use. If not set, the task decides the appropriate location based on the current Windows SDK.|