Skip to content

Commit bbb318a

Browse files
Merge pull request #52624 from dotnet/main
Merge main into live
2 parents 1375e38 + a8bbdb4 commit bbb318a

11 files changed

Lines changed: 49 additions & 43 deletions

File tree

docs/ai/snippets/prompt-engineering/multi-turn-chat.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
.AsAIAgent();
1414

1515
// Create a session to maintain conversation state.
16-
AgentSession session = await agent.GetNewSessionAsync();
16+
AgentSession session = await agent.CreateSessionAsync();
1717

1818
while (true)
1919
{

docs/ai/snippets/prompt-engineering/multi-turn-chat.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
<ItemGroup>
1212
<PackageReference Include="Azure.AI.OpenAI" Version="2.8.0-beta.1" />
13-
<PackageReference Include="Microsoft.Agents.AI.OpenAI" Version="1.0.0-preview.260128.1" />
13+
<PackageReference Include="Microsoft.Agents.AI.OpenAI" Version="1.0.0-rc4" />
1414
<!--
1515
<PackageReference Include="Microsoft.Extensions.Configuration" Version="10.0.2" />
1616
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="10.0.2" />

docs/azure/includes/dotnet-all.md

Lines changed: 16 additions & 16 deletions
Large diffs are not rendered by default.

docs/azure/includes/dotnet-new.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
| Conversational Language Understanding | NuGet [1.1.0](https://www.nuget.org/packages/Azure.AI.Language.Conversations/1.1.0)<br>NuGet [2.0.0-beta.5](https://www.nuget.org/packages/Azure.AI.Language.Conversations/2.0.0-beta.5) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_1.1.0/sdk/cognitivelanguage/Azure.AI.Language.Conversations/)<br>GitHub [2.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations_2.0.0-beta.5/sdk/cognitivelanguage/Azure.AI.Language.Conversations/) |
3737
| Conversations Authoring | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.AI.Language.Conversations.Authoring/1.0.0-beta.3) | [docs](/dotnet/api/overview/azure/AI.Language.Conversations.Authoring-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Language.Conversations.Authoring_1.0.0-beta.3/sdk/cognitivelanguage/Azure.AI.Language.Conversations.Authoring/) |
3838
| Core - Client - AMQP | NuGet [1.3.1](https://www.nuget.org/packages/Azure.Core.Amqp/1.3.1) | [docs](/dotnet/api/overview/azure/Core.Amqp-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Amqp_1.3.1/sdk/core/Azure.Core.Amqp/) |
39-
| Core - Client - Core | NuGet [1.51.1](https://www.nuget.org/packages/Azure.Core/1.51.1) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.51.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.51.1/sdk/core/Azure.Core/) |
39+
| Core - Client - Core | NuGet [1.52.0](https://www.nuget.org/packages/Azure.Core/1.52.0) | [docs](/dotnet/api/overview/azure/Core-readme) | GitHub [1.52.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core_1.52.0/sdk/core/Azure.Core/) |
4040
| Core - Client - Core | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Core.Expressions.DataFactory/1.0.0) | [docs](/dotnet/api/overview/azure/Core.Expressions.DataFactory-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Expressions.DataFactory_1.0.0/sdk/core/Azure.Core.Expressions.DataFactory/) |
4141
| Core Newtonsoft Json | NuGet [2.0.0](https://www.nuget.org/packages/Microsoft.Azure.Core.NewtonsoftJson/2.0.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.Core.NewtonsoftJson-readme) | GitHub [2.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Core.NewtonsoftJson_2.0.0/sdk/core/Microsoft.Azure.Core.NewtonsoftJson/) |
4242
| Core WCF Storage Queues | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Microsoft.CoreWCF.Azure.StorageQueues/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Microsoft.CoreWCF.Azure.StorageQueues-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.CoreWCF.Azure.StorageQueues_1.0.0-beta.1/sdk/extension-wcf/Microsoft.CoreWCF.Azure.StorageQueues/) |
@@ -115,12 +115,12 @@
115115
| Schema Registry | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Data.SchemaRegistry/1.4.0) | [docs](/dotnet/api/overview/azure/Data.SchemaRegistry-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Data.SchemaRegistry_1.4.0/sdk/schemaregistry/Azure.Data.SchemaRegistry/) |
116116
| Schema Registry - Avro | NuGet [1.0.1](https://www.nuget.org/packages/Microsoft.Azure.Data.SchemaRegistry.ApacheAvro/1.0.1) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.Data.SchemaRegistry.ApacheAvro-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.Data.SchemaRegistry.ApacheAvro_1.0.1/sdk/schemaregistry/Microsoft.Azure.Data.SchemaRegistry.ApacheAvro/) |
117117
| Service Bus | NuGet [7.20.1](https://www.nuget.org/packages/Azure.Messaging.ServiceBus/7.20.1) | [docs](/dotnet/api/overview/azure/Messaging.ServiceBus-readme) | GitHub [7.20.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Messaging.ServiceBus_7.20.1/sdk/servicebus/Azure.Messaging.ServiceBus/) |
118-
| Storage - Blobs | NuGet [12.27.0](https://www.nuget.org/packages/Azure.Storage.Blobs/12.27.0)<br>NuGet [12.28.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Blobs/12.28.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Blobs-readme) | GitHub [12.27.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs_12.27.0/sdk/storage/Azure.Storage.Blobs/)<br>GitHub [12.28.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs_12.28.0-beta.1/sdk/storage/Azure.Storage.Blobs/) |
119-
| Storage - Blobs Batch | NuGet [12.24.0](https://www.nuget.org/packages/Azure.Storage.Blobs.Batch/12.24.0)<br>NuGet [12.25.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Blobs.Batch/12.25.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Blobs.Batch-readme) | GitHub [12.24.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.Batch_12.24.0/sdk/storage/Azure.Storage.Blobs.Batch/)<br>GitHub [12.25.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.Batch_12.25.0-beta.1/sdk/storage/Azure.Storage.Blobs.Batch/) |
120-
| Storage - Blobs ChangeFeed | NuGet [12.0.0-preview.60](https://www.nuget.org/packages/Azure.Storage.Blobs.ChangeFeed/12.0.0-preview.60) | [docs](/dotnet/api/overview/azure/Storage.Blobs.ChangeFeed-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [12.0.0-preview.60](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.ChangeFeed_12.0.0-preview.60/sdk/storage/Azure.Storage.Blobs.ChangeFeed/) |
121-
| Storage - Files Data Lake | NuGet [12.25.0](https://www.nuget.org/packages/Azure.Storage.Files.DataLake/12.25.0)<br>NuGet [12.26.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Files.DataLake/12.26.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Files.DataLake-readme) | GitHub [12.25.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.DataLake_12.25.0/sdk/storage/Azure.Storage.Files.DataLake/)<br>GitHub [12.26.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.DataLake_12.26.0-beta.1/sdk/storage/Azure.Storage.Files.DataLake/) |
122-
| Storage - Files Share | NuGet [12.25.0](https://www.nuget.org/packages/Azure.Storage.Files.Shares/12.25.0)<br>NuGet [12.26.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Files.Shares/12.26.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Files.Shares-readme) | GitHub [12.25.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.Shares_12.25.0/sdk/storage/Azure.Storage.Files.Shares/)<br>GitHub [12.26.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.Shares_12.26.0-beta.1/sdk/storage/Azure.Storage.Files.Shares/) |
123-
| Storage - Queues | NuGet [12.25.0](https://www.nuget.org/packages/Azure.Storage.Queues/12.25.0)<br>NuGet [12.26.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Queues/12.26.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Queues-readme) | GitHub [12.25.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Queues_12.25.0/sdk/storage/Azure.Storage.Queues/)<br>GitHub [12.26.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Queues_12.26.0-beta.1/sdk/storage/Azure.Storage.Queues/) |
118+
| Storage - Blobs | NuGet [12.27.0](https://www.nuget.org/packages/Azure.Storage.Blobs/12.27.0)<br>NuGet [12.29.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Blobs/12.29.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Blobs-readme) | GitHub [12.27.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs_12.27.0/sdk/storage/Azure.Storage.Blobs/)<br>GitHub [12.29.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs_12.29.0-beta.1/sdk/storage/Azure.Storage.Blobs/) |
119+
| Storage - Blobs Batch | NuGet [12.24.0](https://www.nuget.org/packages/Azure.Storage.Blobs.Batch/12.24.0)<br>NuGet [12.26.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Blobs.Batch/12.26.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Blobs.Batch-readme) | GitHub [12.24.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.Batch_12.24.0/sdk/storage/Azure.Storage.Blobs.Batch/)<br>GitHub [12.26.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.Batch_12.26.0-beta.1/sdk/storage/Azure.Storage.Blobs.Batch/) |
120+
| Storage - Blobs ChangeFeed | NuGet [12.0.0-preview.61](https://www.nuget.org/packages/Azure.Storage.Blobs.ChangeFeed/12.0.0-preview.61) | [docs](/dotnet/api/overview/azure/Storage.Blobs.ChangeFeed-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [12.0.0-preview.61](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Blobs.ChangeFeed_12.0.0-preview.61/sdk/storage/Azure.Storage.Blobs.ChangeFeed/) |
121+
| Storage - Files Data Lake | NuGet [12.25.0](https://www.nuget.org/packages/Azure.Storage.Files.DataLake/12.25.0)<br>NuGet [12.27.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Files.DataLake/12.27.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Files.DataLake-readme) | GitHub [12.25.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.DataLake_12.25.0/sdk/storage/Azure.Storage.Files.DataLake/)<br>GitHub [12.27.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.DataLake_12.27.0-beta.1/sdk/storage/Azure.Storage.Files.DataLake/) |
122+
| Storage - Files Share | NuGet [12.25.0](https://www.nuget.org/packages/Azure.Storage.Files.Shares/12.25.0)<br>NuGet [12.27.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Files.Shares/12.27.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Files.Shares-readme) | GitHub [12.25.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.Shares_12.25.0/sdk/storage/Azure.Storage.Files.Shares/)<br>GitHub [12.27.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Files.Shares_12.27.0-beta.1/sdk/storage/Azure.Storage.Files.Shares/) |
123+
| Storage - Queues | NuGet [12.25.0](https://www.nuget.org/packages/Azure.Storage.Queues/12.25.0)<br>NuGet [12.27.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Queues/12.27.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Queues-readme) | GitHub [12.25.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Queues_12.25.0/sdk/storage/Azure.Storage.Queues/)<br>GitHub [12.27.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Queues_12.27.0-beta.1/sdk/storage/Azure.Storage.Queues/) |
124124
| Synapse - AccessControl | NuGet [1.0.0-preview.5](https://www.nuget.org/packages/Azure.Analytics.Synapse.AccessControl/1.0.0-preview.5) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.AccessControl-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-preview.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.AccessControl_1.0.0-preview.5/sdk/synapse/Azure.Analytics.Synapse.AccessControl/) |
125125
| Synapse - Artifacts | NuGet [1.0.0-preview.22](https://www.nuget.org/packages/Azure.Analytics.Synapse.Artifacts/1.0.0-preview.22) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.Artifacts-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-preview.22](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.Artifacts_1.0.0-preview.22/sdk/synapse/Azure.Analytics.Synapse.Artifacts/) |
126126
| Synapse - Managed Private Endpoints | NuGet [1.0.0-beta.5](https://www.nuget.org/packages/Azure.Analytics.Synapse.ManagedPrivateEndpoints/1.0.0-beta.5) | [docs](/dotnet/api/overview/azure/Analytics.Synapse.ManagedPrivateEndpoints-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.5](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Synapse.ManagedPrivateEndpoints_1.0.0-beta.5/sdk/synapse/Azure.Analytics.Synapse.ManagedPrivateEndpoints/) |
@@ -150,7 +150,7 @@
150150
| Functions extension for Azure Tables | NuGet [1.4.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Tables/1.4.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Tables-readme) | GitHub [1.4.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Tables_1.4.0/sdk/tables/Microsoft.Azure.WebJobs.Extensions.Tables/) |
151151
| Key Encryptor for .NET Data Protection | NuGet [1.6.1](https://www.nuget.org/packages/Azure.Extensions.AspNetCore.DataProtection.Keys/1.6.1) | [docs](/dotnet/api/overview/azure/Extensions.AspNetCore.DataProtection.Keys-readme) | GitHub [1.6.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Extensions.AspNetCore.DataProtection.Keys_1.6.1/sdk/extensions/Azure.Extensions.AspNetCore.DataProtection.Keys/) |
152152
| Secrets Configuration Provider for .NET | NuGet [1.5.0](https://www.nuget.org/packages/Azure.Extensions.AspNetCore.Configuration.Secrets/1.5.0) | [docs](/dotnet/api/overview/azure/Extensions.AspNetCore.Configuration.Secrets-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Extensions.AspNetCore.Configuration.Secrets_1.5.0/sdk/extensions/Azure.Extensions.AspNetCore.Configuration.Secrets/) |
153-
| Storage - Common | NuGet [12.26.0](https://www.nuget.org/packages/Azure.Storage.Common/12.26.0)<br>NuGet [12.27.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Common/12.27.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Common-readme) | GitHub [12.26.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Common_12.26.0/sdk/storage/Azure.Storage.Common/)<br>GitHub [12.27.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Common_12.27.0-beta.1/sdk/storage/Azure.Storage.Common/) |
153+
| Storage - Common | NuGet [12.26.0](https://www.nuget.org/packages/Azure.Storage.Common/12.26.0)<br>NuGet [12.28.0-beta.1](https://www.nuget.org/packages/Azure.Storage.Common/12.28.0-beta.1) | [docs](/dotnet/api/overview/azure/Storage.Common-readme) | GitHub [12.26.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Common_12.26.0/sdk/storage/Azure.Storage.Common/)<br>GitHub [12.28.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Storage.Common_12.28.0-beta.1/sdk/storage/Azure.Storage.Common/) |
154154
| WebJobs Extensions - Event Grid | NuGet [3.5.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.EventGrid/3.5.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.EventGrid-readme) | GitHub [3.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.EventGrid_3.5.0/sdk/eventgrid/Microsoft.Azure.WebJobs.Extensions.EventGrid/) |
155155
| WebJobs Extensions - Event Hubs | NuGet [6.5.3](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.EventHubs/6.5.3) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.EventHubs-readme) | GitHub [6.5.3](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.EventHubs_6.5.3/sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/) |
156156
| WebJobs Extensions - Service Bus | NuGet [5.17.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.ServiceBus/5.17.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.ServiceBus-readme) | GitHub [5.17.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.ServiceBus_5.17.0/sdk/servicebus/Microsoft.Azure.WebJobs.Extensions.ServiceBus/) |

docs/core/tools/dotnet-run.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,20 @@ To run the application, the `dotnet run` command resolves the dependencies of th
9191

9292
The path to the file-based app to run. If a path isn't specified, the current directory is used to find and run the file. For more information on file-based apps, see [Build file-based C# apps](../../csharp/fundamentals/tutorials/file-based-programs.md).
9393

94-
On Unix, you can run file-based apps directly, using the source file name on the command line instead of `dotnet run`. First, ensure the file has execute permissions. Then, add a shebang line `#!` as the first line of the file, for example:
95-
94+
On Unix, you can execute file-based apps directly using the filename. This requires a shebang line `#!` as the first line of the file and the *execute* permission to be set. For example:
95+
9696
```csharp
97-
#!/usr/bin/env dotnet run
97+
#!/usr/bin/env dotnet
9898
```
99-
100-
Then you can run the file directly from the command line:
101-
99+
100+
Set the execute bit:
101+
102+
```bash
103+
chmod +x ConsoleApp.cs
104+
```
105+
106+
Now you can run the file directly from the command line:
107+
102108
```bash
103109
./ConsoleApp.cs
104110
```

docs/csharp/fundamentals/program-structure/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Starting with C# 14 and .NET 10, *file-based apps* let you run a program contain
3737
:::code language="csharp" source="./snippets/file-based-program/hello-world.cs":::
3838

3939
> [!NOTE]
40-
> The `#!` line enables Unix shells to run the file directly. On any Unix system, set the *execute* (`+x`) permission and run the file from the command line.
40+
> The `#!` line enables Unix operating systems to execute the file directly (for example, `./hello-world.cs`). This requires the *execute* permission to be set (`chmod +x <file>`).
4141
4242
File-based apps support all C# syntax and can use [preprocessor directives](../../language-reference/preprocessor-directives.md#file-based-apps) to configure the build system. Use file-based apps for small command-line utilities, prototypes, and experiments. A file-based app consists of a single file in a directory:
4343

docs/csharp/fundamentals/program-structure/preprocessor-directives.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ C# preprocessor directives tell the compiler what code to include, exclude, or t
2424

2525
Starting with C# 14, [file-based apps](index.md) use two additional directives:
2626

27-
- `#!` — the *shebang* line that lets Unix shells run the file directly (for example, `#!/usr/bin/env dotnet run`).
27+
- `#!` — the *shebang* line that enables executing the file directly on Unix (for example, `./Program.cs`). This requires the *execute* permission to be set on the file (`chmod +x <file>`).
2828
- `#:` — build-system directives that configure packages, SDK settings, and other options for single-file programs.
2929

3030
Use `#:package` to add a NuGet package. For example, the following file-based app uses the `Spectre.Console` package to render styled output:
3131

3232
```csharp
33-
#!/usr/bin/env dotnet run
33+
#!/usr/bin/env dotnet
3434
#:package Spectre.Console@*
3535

3636
AnsiConsole.MarkupLine("[bold green]Hello[/] from a file-based app!");

docs/csharp/fundamentals/program-structure/top-level-statements.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ The compiler generates a method to serve as the program entry point for a projec
3939
| `return` | `static int Main(string[] args)` |
4040
| No `await` or `return` | `static void Main(string[] args)` |
4141

42-
Starting with C# 14, programs can be [*file-based apps*](./index.md#building-and-running-c-programs), where a single file contains the program. You run *file-based apps* by using the command `dotnet <file.cs>`, or by using the `#!/usr/bin/env dotnet` directive as the first line (Unix shells only).
42+
Starting with C# 14, programs can be [*file-based apps*](./index.md#building-and-running-c-programs), where a single file contains the program. You run *file-based apps* by using the command `dotnet <file.cs>`, or directly using the filename on Unix (for example, `./file.cs`). The latter requires including the `#!/usr/bin/env dotnet` directive as the first line and setting the execute permission (`chmod +x <file>`).
4343

4444
## `using` directives
4545

0 commit comments

Comments
 (0)