diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 266b7cbb20..e6a705e341 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -14,7 +14,7 @@
},
"ghcr.io/devcontainers/features/node:1": { "version": "24" }
},
- "image": "mcr.microsoft.com/dotnet/nightly/sdk:10.0.102",
+ "image": "mcr.microsoft.com/dotnet/nightly/sdk:10.0.103",
"postStartCommand": "dotnet workload install wasm-tools && dotnet dev-certs https --trust",
"waitFor": "onCreateCommand",
"customizations": {
diff --git a/.github/workflows/bit.ci.release.yml b/.github/workflows/bit.ci.release.yml
index 602331f849..f56f9c341c 100644
--- a/.github/workflows/bit.ci.release.yml
+++ b/.github/workflows/bit.ci.release.yml
@@ -43,7 +43,7 @@ jobs:
- name: InstallNodejsDependencies
continue-on-error: true # Error MSB4057, not all csproj files have InstallNodejsDependencies target.
- run: dotnet build src/bit.ci.release.slnx -t:InstallNodejsDependencies -m:1 -f net10.0
+ run: dotnet build src/Bit.CI.Release.slnx -t:InstallNodejsDependencies -m:1 -f net10.0
- name: dotnet build
- run: dotnet build src/bit.ci.release.slnx -c Release
+ run: dotnet build src/Bit.CI.Release.slnx -c Release
diff --git a/src/Besql/Demo/Bit.Besql.Demo.Client/Bit.Besql.Demo.Client.csproj b/src/Besql/Demo/Bit.Besql.Demo.Client/Bit.Besql.Demo.Client.csproj
index 3aa2fcaeab..2412eb6867 100644
--- a/src/Besql/Demo/Bit.Besql.Demo.Client/Bit.Besql.Demo.Client.csproj
+++ b/src/Besql/Demo/Bit.Besql.Demo.Client/Bit.Besql.Demo.Client.csproj
@@ -10,7 +10,7 @@
-
+
diff --git a/src/Besql/Demo/Bit.Besql.Demo/Bit.Besql.Demo.csproj b/src/Besql/Demo/Bit.Besql.Demo/Bit.Besql.Demo.csproj
index 5036530f2d..32e6e7210f 100644
--- a/src/Besql/Demo/Bit.Besql.Demo/Bit.Besql.Demo.csproj
+++ b/src/Besql/Demo/Bit.Besql.Demo/Bit.Besql.Demo.csproj
@@ -8,7 +8,7 @@
-
+
@@ -17,11 +17,11 @@
and open Nuget Package Manager Console, and select `Bit.Besql.Demo.Client` project as default project
Then run either Add-Migration MigrationName -OutputDir Data\Migrations or
Optimize-DbContext -OutputDir Data\CompiledModel commands. -->
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/bit.ci.release.slnx b/src/Bit.CI.Release.slnx
similarity index 100%
rename from src/bit.ci.release.slnx
rename to src/Bit.CI.Release.slnx
diff --git a/src/BlazorUI/Bit.BlazorUI.Extras/Bit.BlazorUI.Extras.csproj b/src/BlazorUI/Bit.BlazorUI.Extras/Bit.BlazorUI.Extras.csproj
index effcab97e6..8058b3aeab 100644
--- a/src/BlazorUI/Bit.BlazorUI.Extras/Bit.BlazorUI.Extras.csproj
+++ b/src/BlazorUI/Bit.BlazorUI.Extras/Bit.BlazorUI.Extras.csproj
@@ -25,7 +25,7 @@
-
+
diff --git a/src/BlazorUI/Demo/Bit.BlazorUI.Demo.Server/Bit.BlazorUI.Demo.Server.csproj b/src/BlazorUI/Demo/Bit.BlazorUI.Demo.Server/Bit.BlazorUI.Demo.Server.csproj
index e2bb419dd5..c632fa51f3 100644
--- a/src/BlazorUI/Demo/Bit.BlazorUI.Demo.Server/Bit.BlazorUI.Demo.Server.csproj
+++ b/src/BlazorUI/Demo/Bit.BlazorUI.Demo.Server/Bit.BlazorUI.Demo.Server.csproj
@@ -19,19 +19,19 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
+
-
+
-
-
+
+
diff --git a/src/BlazorUI/Demo/Bit.BlazorUI.Demo.Shared/Bit.BlazorUI.Demo.Shared.csproj b/src/BlazorUI/Demo/Bit.BlazorUI.Demo.Shared/Bit.BlazorUI.Demo.Shared.csproj
index 54f6a7f05b..e61071063b 100644
--- a/src/BlazorUI/Demo/Bit.BlazorUI.Demo.Shared/Bit.BlazorUI.Demo.Shared.csproj
+++ b/src/BlazorUI/Demo/Bit.BlazorUI.Demo.Shared/Bit.BlazorUI.Demo.Shared.csproj
@@ -13,10 +13,10 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
+
+
+
+
compile; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Bit.BlazorUI.Demo.Client.Core.csproj b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Bit.BlazorUI.Demo.Client.Core.csproj
index 95f80042b1..eea6f1316d 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Bit.BlazorUI.Demo.Client.Core.csproj
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Core/Bit.BlazorUI.Demo.Client.Core.csproj
@@ -24,10 +24,10 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
+
+
+
+
diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Maui/Bit.BlazorUI.Demo.Client.Maui.csproj b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Maui/Bit.BlazorUI.Demo.Client.Maui.csproj
index 3d36f486cd..1f811d8706 100644
--- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Maui/Bit.BlazorUI.Demo.Client.Maui.csproj
+++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Maui/Bit.BlazorUI.Demo.Client.Maui.csproj
@@ -117,8 +117,8 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -81,70 +81,70 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
+
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Attachments/AttachmentController.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Attachments/AttachmentController.cs
index 4415b87859..61ff38e47c 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Attachments/AttachmentController.cs
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Attachments/AttachmentController.cs
@@ -68,6 +68,10 @@ public async Task UploadProductPrimaryImage(Guid productId, IForm
[AppResponseCache(MaxAge = 3600 * 24 * 7, UserAgnostic = true)]
public async Task GetAttachment(Guid attachmentId, AttachmentKind kind, CancellationToken cancellationToken = default)
{
+ // If the backend is hosted behind a CDN (which is recommended for production), the GetAttachment method's returned stream will be cached on CDN edge servers.
+ // Alternatively, you can generate URLs that allow clients to download files directly from the file storage, further reducing the load on the backend.
+ // If security is a concern, you can generate short-lived signed URLs for the file storage. These signed URLs can be validated either at the CDN edge or on the file storage server, ensuring that only authorized users can access the files.
+
var filePath = GetFilePath(attachmentId, kind);
if (await blobStorage.ExistsAsync(filePath, cancellationToken) is false)
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Program.Services.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Program.Services.cs
index f4919370fc..eeeb833a63 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Program.Services.cs
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Program.Services.cs
@@ -517,7 +517,7 @@ void AddDbContext(DbContextOptionsBuilder options)
}).AsIChatClient())
.UseLogging()
.UseFunctionInvocation()
- .UseOpenTelemetry();
+ .UseOpenTelemetry(configure: c => c.EnableSensitiveData = env.IsDevelopment());
// .UseDistributedCache()
}
else if (string.IsNullOrEmpty(appSettings.AI?.AzureOpenAI?.ChatApiKey) is false)
@@ -531,7 +531,7 @@ void AddDbContext(DbContextOptionsBuilder options)
}).AsIChatClient(appSettings.AI.AzureOpenAI.ChatModel))
.UseLogging()
.UseFunctionInvocation()
- .UseOpenTelemetry();
+ .UseOpenTelemetry(configure: c => c.EnableSensitiveData = env.IsDevelopment());
// .UseDistributedCache()
}
@@ -543,7 +543,7 @@ void AddDbContext(DbContextOptionsBuilder options)
Transport = new HttpClientPipelineTransport(sp.GetRequiredService().CreateClient("AI"))
}).AsIEmbeddingGenerator())
.UseLogging()
- .UseOpenTelemetry();
+ .UseOpenTelemetry(configure: c => c.EnableSensitiveData = env.IsDevelopment());
// .UseDistributedCache()
}
else if (string.IsNullOrEmpty(appSettings.AI?.AzureOpenAI?.EmbeddingApiKey) is false)
@@ -555,7 +555,7 @@ void AddDbContext(DbContextOptionsBuilder options)
Transport = new Azure.Core.Pipeline.HttpClientTransport(sp.GetRequiredService().CreateClient("AI"))
}).AsIEmbeddingGenerator(appSettings.AI.AzureOpenAI.EmbeddingModel))
.UseLogging()
- .UseOpenTelemetry();
+ .UseOpenTelemetry(configure: c => c.EnableSensitiveData = env.IsDevelopment());
// .UseDistributedCache()
}
else if (string.IsNullOrEmpty(appSettings.AI?.HuggingFace?.EmbeddingEndpoint) is false)
@@ -565,7 +565,7 @@ void AddDbContext(DbContextOptionsBuilder options)
apiKey: appSettings.AI.HuggingFace.EmbeddingApiKey,
httpClient: sp.GetRequiredService().CreateClient("AI"), loggerFactory: sp.GetRequiredService()))
.UseLogging()
- .UseOpenTelemetry();
+ .UseOpenTelemetry(configure: c => c.EnableSensitiveData = env.IsDevelopment());
// .UseDistributedCache()
}
//#endif
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.AppHost/Boilerplate.Server.AppHost.csproj b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.AppHost/Boilerplate.Server.AppHost.csproj
index aa4a612288..1036039851 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.AppHost/Boilerplate.Server.AppHost.csproj
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.AppHost/Boilerplate.Server.AppHost.csproj
@@ -1,4 +1,4 @@
-
+
Exe
diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Shared/Infrastructure/Extensions/WebApplicationBuilderExtensions.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Shared/Infrastructure/Extensions/WebApplicationBuilderExtensions.cs
index fc007f5edf..eece28d0fd 100644
--- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Shared/Infrastructure/Extensions/WebApplicationBuilderExtensions.cs
+++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Shared/Infrastructure/Extensions/WebApplicationBuilderExtensions.cs
@@ -159,7 +159,8 @@ private static TBuilder ConfigureOpenTelemetry(this TBuilder builder)
.AddHttpClientInstrumentation()
.AddRuntimeInstrumentation();
- metrics.AddMeter(ActivitySource.Current.Name);
+ metrics.AddMeter(ActivitySource.Current.Name)
+ .AddMeter("Experimental.Microsoft.Extensions.AI");
})
.WithTracing(tracing =>
{
@@ -189,7 +190,8 @@ private static TBuilder ConfigureOpenTelemetry(this TBuilder builder)
.AddEntityFrameworkCoreInstrumentation(options => options.Filter = (providerName, command) => command?.CommandText?.Contains("Hangfire") is false /* Ignore Hangfire */)
.AddHangfireInstrumentation();
- tracing.AddSource(ActivitySource.Current.Name);
+ tracing.AddSource(ActivitySource.Current.Name)
+ .AddSource("Experimental.Microsoft.Extensions.AI");
})
.ConfigureResource(resource =>
{
diff --git a/src/Websites/Careers/src/Bit.Websites.Careers.Client/Bit.Websites.Careers.Client.csproj b/src/Websites/Careers/src/Bit.Websites.Careers.Client/Bit.Websites.Careers.Client.csproj
index 21438e2cb7..a43d07da74 100644
--- a/src/Websites/Careers/src/Bit.Websites.Careers.Client/Bit.Websites.Careers.Client.csproj
+++ b/src/Websites/Careers/src/Bit.Websites.Careers.Client/Bit.Websites.Careers.Client.csproj
@@ -20,7 +20,7 @@
-
+
@@ -41,7 +41,7 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/src/Websites/Careers/src/Bit.Websites.Careers.Server/Bit.Websites.Careers.Server.csproj b/src/Websites/Careers/src/Bit.Websites.Careers.Server/Bit.Websites.Careers.Server.csproj
index 958380bbdd..ceb05d456a 100644
--- a/src/Websites/Careers/src/Bit.Websites.Careers.Server/Bit.Websites.Careers.Server.csproj
+++ b/src/Websites/Careers/src/Bit.Websites.Careers.Server/Bit.Websites.Careers.Server.csproj
@@ -20,11 +20,11 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
-
+
diff --git a/src/Websites/Careers/src/Bit.Websites.Careers.Shared/Bit.Websites.Careers.Shared.csproj b/src/Websites/Careers/src/Bit.Websites.Careers.Shared/Bit.Websites.Careers.Shared.csproj
index c4702d1294..2e96e00658 100644
--- a/src/Websites/Careers/src/Bit.Websites.Careers.Shared/Bit.Websites.Careers.Shared.csproj
+++ b/src/Websites/Careers/src/Bit.Websites.Careers.Shared/Bit.Websites.Careers.Shared.csproj
@@ -14,9 +14,9 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
compile; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Websites/Platform/src/Bit.Websites.Platform.Client/Bit.Websites.Platform.Client.csproj b/src/Websites/Platform/src/Bit.Websites.Platform.Client/Bit.Websites.Platform.Client.csproj
index 4505c77d9a..8ea0b336e8 100644
--- a/src/Websites/Platform/src/Bit.Websites.Platform.Client/Bit.Websites.Platform.Client.csproj
+++ b/src/Websites/Platform/src/Bit.Websites.Platform.Client/Bit.Websites.Platform.Client.csproj
@@ -23,7 +23,7 @@
-
+
@@ -45,8 +45,8 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
diff --git a/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03GettingStartedPage.razor b/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03GettingStartedPage.razor
index 9bd50023ad..42557c5cca 100644
--- a/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03GettingStartedPage.razor
+++ b/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03GettingStartedPage.razor
@@ -99,7 +99,7 @@
{
- wget https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.102/dotnet-sdk-10.0.102-linux-x64.tar.gz -O $HOME/dotnet.tar.gz
+ wget https://builds.dotnet.microsoft.com/dotnet/Sdk/10.0.103/dotnet-sdk-10.0.103-linux-x64.tar.gz -O $HOME/dotnet.tar.gz
mkdir -p $HOME/.dotnet
tar zxf $HOME/dotnet.tar.gz -C "$HOME/.dotnet"
echo 'PATH=$HOME/.dotnet:$HOME/.dotnet/tools:$PATH' >> ~/.bashrc
diff --git a/src/Websites/Platform/src/Bit.Websites.Platform.Server/Bit.Websites.Platform.Server.csproj b/src/Websites/Platform/src/Bit.Websites.Platform.Server/Bit.Websites.Platform.Server.csproj
index ee6cbed402..9b2c250a4c 100644
--- a/src/Websites/Platform/src/Bit.Websites.Platform.Server/Bit.Websites.Platform.Server.csproj
+++ b/src/Websites/Platform/src/Bit.Websites.Platform.Server/Bit.Websites.Platform.Server.csproj
@@ -21,15 +21,15 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
+
+
+
+
+
-
+
diff --git a/src/Websites/Platform/src/Bit.Websites.Platform.Shared/Bit.Websites.Platform.Shared.csproj b/src/Websites/Platform/src/Bit.Websites.Platform.Shared/Bit.Websites.Platform.Shared.csproj
index c4702d1294..2e96e00658 100644
--- a/src/Websites/Platform/src/Bit.Websites.Platform.Shared/Bit.Websites.Platform.Shared.csproj
+++ b/src/Websites/Platform/src/Bit.Websites.Platform.Shared/Bit.Websites.Platform.Shared.csproj
@@ -14,9 +14,9 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
compile; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Websites/Sales/src/Bit.Websites.Sales.Client/Bit.Websites.Sales.Client.csproj b/src/Websites/Sales/src/Bit.Websites.Sales.Client/Bit.Websites.Sales.Client.csproj
index 4499d38421..b9580c72e0 100644
--- a/src/Websites/Sales/src/Bit.Websites.Sales.Client/Bit.Websites.Sales.Client.csproj
+++ b/src/Websites/Sales/src/Bit.Websites.Sales.Client/Bit.Websites.Sales.Client.csproj
@@ -20,7 +20,7 @@
-
+
@@ -41,7 +41,7 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/src/Websites/Sales/src/Bit.Websites.Sales.Server/Bit.Websites.Sales.Server.csproj b/src/Websites/Sales/src/Bit.Websites.Sales.Server/Bit.Websites.Sales.Server.csproj
index 7aa9301c7c..c7ddc328dc 100644
--- a/src/Websites/Sales/src/Bit.Websites.Sales.Server/Bit.Websites.Sales.Server.csproj
+++ b/src/Websites/Sales/src/Bit.Websites.Sales.Server/Bit.Websites.Sales.Server.csproj
@@ -20,11 +20,11 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
-
+
diff --git a/src/Websites/Sales/src/Bit.Websites.Sales.Shared/Bit.Websites.Sales.Shared.csproj b/src/Websites/Sales/src/Bit.Websites.Sales.Shared/Bit.Websites.Sales.Shared.csproj
index c4702d1294..2e96e00658 100644
--- a/src/Websites/Sales/src/Bit.Websites.Sales.Shared/Bit.Websites.Sales.Shared.csproj
+++ b/src/Websites/Sales/src/Bit.Websites.Sales.Shared/Bit.Websites.Sales.Shared.csproj
@@ -14,9 +14,9 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
compile; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/global.json b/src/global.json
index 17c722f72d..eceef3a7a6 100644
--- a/src/global.json
+++ b/src/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "10.0.102",
+ "version": "10.0.103",
"rollForward": "disable"
},
"test": {