diff --git a/LangChain.sln b/LangChain.sln
index 111c5a1a..1b6768b1 100644
--- a/LangChain.sln
+++ b/LangChain.sln
@@ -246,6 +246,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebBase", "WebBase", "{ED26
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LangChain.Splitters.Abstractions.Tests", "src\Splitters\Abstractions\test\LangChain.Splitters.Abstractions.Tests.csproj", "{1F76A632-BC80-4225-ABA3-2D87BBA064E9}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Helpers", "Helpers", "{1325D29E-D42F-423F-A6AC-5E880BE2AB68}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrimmingHelper", "src\Helpers\TrimmingHelper\TrimmingHelper.csproj", "{BEE04F82-38FB-4BB2-AB48-A73AD0104142}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -496,6 +500,10 @@ Global
{1F76A632-BC80-4225-ABA3-2D87BBA064E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1F76A632-BC80-4225-ABA3-2D87BBA064E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F76A632-BC80-4225-ABA3-2D87BBA064E9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BEE04F82-38FB-4BB2-AB48-A73AD0104142}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BEE04F82-38FB-4BB2-AB48-A73AD0104142}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BEE04F82-38FB-4BB2-AB48-A73AD0104142}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BEE04F82-38FB-4BB2-AB48-A73AD0104142}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -594,6 +602,7 @@ Global
{7D97D652-AFF5-465C-8688-FC3066423707} = {ED2684D8-5229-4397-A2FB-06AF1E5A6CBC}
{16D0189E-2B4A-4B7C-B60C-CD74EF83D119} = {ED2684D8-5229-4397-A2FB-06AF1E5A6CBC}
{1F76A632-BC80-4225-ABA3-2D87BBA064E9} = {FBF5D827-0D5B-4A71-BBBF-3EAA5A5AA1C2}
+ {BEE04F82-38FB-4BB2-AB48-A73AD0104142} = {1325D29E-D42F-423F-A6AC-5E880BE2AB68}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5C00D0F1-6138-4ED9-846B-97E43D6DFF1C}
diff --git a/src/Core/src/LangChain.Core.csproj b/src/Core/src/LangChain.Core.csproj
index 967bc348..f0d410e5 100644
--- a/src/Core/src/LangChain.Core.csproj
+++ b/src/Core/src/LangChain.Core.csproj
@@ -6,6 +6,9 @@
$(NoWarn);CA1031;CA1822;CA1307;CA1002;CA1303;CA1003;CA1724;CA1034;CA1849
$(NoWarn);CA2227;CA2214;CA1040;CA1812;CA1720;CS9107
$(NoWarn);CA1308;CA1862;CA1510;CA1850;CA1305;CA1725
+ false
+ false
+ false
diff --git a/src/Databases/Chroma/src/ChromaVectorStore.cs b/src/Databases/Chroma/src/ChromaVectorStore.cs
index de8a1a98..a0a100a3 100644
--- a/src/Databases/Chroma/src/ChromaVectorStore.cs
+++ b/src/Databases/Chroma/src/ChromaVectorStore.cs
@@ -1,3 +1,4 @@
+using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using LangChain.Common.Converters;
using LangChain.Docstore;
@@ -14,6 +15,8 @@ namespace LangChain.Databases;
/// ChromaDB vector store.
/// According: https://api.python.langchain.com/en/latest/_modules/langchain/vectorstores/chroma.html
///
+[RequiresDynamicCode("Requires dynamic code.")]
+[RequiresUnreferencedCode("Requires unreferenced code.")]
public class ChromaVectorStore : VectorStore
{
private const string LangchainDefaultCollectionName = "langchain";
diff --git a/src/Databases/Postgres/src/PostgresDbClient.cs b/src/Databases/Postgres/src/PostgresDbClient.cs
index 71c9850c..523fd9d3 100644
--- a/src/Databases/Postgres/src/PostgresDbClient.cs
+++ b/src/Databases/Postgres/src/PostgresDbClient.cs
@@ -1,3 +1,4 @@
+using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
using System.Text.Json;
using LangChain.Common.Converters;
@@ -10,6 +11,8 @@ namespace LangChain.Databases.Postgres;
///
///
///
+[RequiresDynamicCode("Requires dynamic code.")]
+[RequiresUnreferencedCode("Requires unreferenced code.")]
public class PostgresDbClient
{
private readonly NpgsqlDataSource _dataSource;
diff --git a/src/Databases/Postgres/src/PostgresVectorStore.cs b/src/Databases/Postgres/src/PostgresVectorStore.cs
index 902a805c..e01959f5 100644
--- a/src/Databases/Postgres/src/PostgresVectorStore.cs
+++ b/src/Databases/Postgres/src/PostgresVectorStore.cs
@@ -1,3 +1,4 @@
+using System.Diagnostics.CodeAnalysis;
using LangChain.Databases.Postgres;
using LangChain.Docstore;
using LangChain.Providers;
@@ -12,6 +13,8 @@ namespace LangChain.Databases;
/// required: CREATE EXTENSION IF NOT EXISTS vector
///
///
+[RequiresDynamicCode("Requires dynamic code.")]
+[RequiresUnreferencedCode("Requires unreferenced code.")]
public class PostgresVectorStore : VectorStore
{
private readonly DistanceStrategy _distanceStrategy;
diff --git a/src/Databases/Redis/src/RedisChatMessageHistory.cs b/src/Databases/Redis/src/RedisChatMessageHistory.cs
index 91c54882..a9f9e4f9 100644
--- a/src/Databases/Redis/src/RedisChatMessageHistory.cs
+++ b/src/Databases/Redis/src/RedisChatMessageHistory.cs
@@ -1,3 +1,4 @@
+using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using LangChain.Memory;
using LangChain.Providers;
@@ -8,6 +9,8 @@ namespace LangChain.Databases;
///
/// Chat message history stored in a Redis database.
///
+[RequiresDynamicCode("Requires dynamic code.")]
+[RequiresUnreferencedCode("Requires unreferenced code.")]
public class RedisChatMessageHistory : BaseChatMessageHistory
{
private readonly string _sessionId;
diff --git a/src/Databases/Sqlite/src/SQLiteVectorStore.cs b/src/Databases/Sqlite/src/SQLiteVectorStore.cs
index 9bb68819..0a14fea2 100644
--- a/src/Databases/Sqlite/src/SQLiteVectorStore.cs
+++ b/src/Databases/Sqlite/src/SQLiteVectorStore.cs
@@ -1,4 +1,5 @@
-using System.Text.Json;
+using System.Diagnostics.CodeAnalysis;
+using System.Text.Json;
using LangChain.Base;
using LangChain.Docstore;
using LangChain.Indexes;
@@ -12,6 +13,8 @@ namespace LangChain.Databases;
///
///
///
+[RequiresDynamicCode("Requires dynamic code.")]
+[RequiresUnreferencedCode("Requires unreferenced code.")]
public sealed class SQLiteVectorStore : VectorStore, IDisposable
{
private readonly string _tableName;
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index e2ff56b5..50bd3518 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -9,7 +9,7 @@
true
- true
+ true
diff --git a/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.Anthropic.cs b/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.Anthropic.cs
index b5975ce1..0a8fccd6 100644
--- a/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.Anthropic.cs
+++ b/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.Anthropic.cs
@@ -1,4 +1,5 @@
-using LangChain.Providers.Anthropic;
+using System.Diagnostics.CodeAnalysis;
+using LangChain.Providers.Anthropic;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
@@ -15,6 +16,8 @@ public static partial class ServiceCollectionExtensions
///
///
///
+ [RequiresDynamicCode("Requires dynamic code.")]
+ [RequiresUnreferencedCode("Requires unreferenced code.")]
public static IServiceCollection AddAnthropic(
this IServiceCollection services)
{
diff --git a/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.Anyscale.cs b/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.Anyscale.cs
index a5bbd59f..bd1c19b4 100644
--- a/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.Anyscale.cs
+++ b/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.Anyscale.cs
@@ -1,4 +1,5 @@
-using LangChain.Providers.Anyscale;
+using System.Diagnostics.CodeAnalysis;
+using LangChain.Providers.Anyscale;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
@@ -15,6 +16,8 @@ public static partial class ServiceCollectionExtensions
///
///
///
+ [RequiresDynamicCode("Requires dynamic code.")]
+ [RequiresUnreferencedCode("Requires unreferenced code.")]
public static IServiceCollection AddAnyscale(
this IServiceCollection services)
{
diff --git a/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.HuggingFace.cs b/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.HuggingFace.cs
index 0275cfd6..9fe757c3 100644
--- a/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.HuggingFace.cs
+++ b/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.HuggingFace.cs
@@ -1,4 +1,5 @@
-using LangChain.Providers.HuggingFace;
+using System.Diagnostics.CodeAnalysis;
+using LangChain.Providers.HuggingFace;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
@@ -15,6 +16,8 @@ public static partial class ServiceCollectionExtensions
///
///
///
+ [RequiresDynamicCode("Requires dynamic code.")]
+ [RequiresUnreferencedCode("Requires unreferenced code.")]
public static IServiceCollection AddHuggingFace(
this IServiceCollection services)
{
diff --git a/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.OpenAi.cs b/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.OpenAi.cs
index 2870bc0f..6535b6e0 100644
--- a/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.OpenAi.cs
+++ b/src/Extensions/DependencyInjection/src/ServiceCollectionExtensions.OpenAi.cs
@@ -1,4 +1,5 @@
-using LangChain.Providers.OpenAI;
+using System.Diagnostics.CodeAnalysis;
+using LangChain.Providers.OpenAI;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
@@ -15,6 +16,8 @@ public static partial class ServiceCollectionExtensions
///
///
///
+ [RequiresDynamicCode("Requires dynamic code.")]
+ [RequiresUnreferencedCode("Requires unreferenced code.")]
public static IServiceCollection AddOpenAi(
this IServiceCollection services)
{
diff --git a/src/Helpers/TrimmingHelper/Program.cs b/src/Helpers/TrimmingHelper/Program.cs
new file mode 100644
index 00000000..16d79d1a
--- /dev/null
+++ b/src/Helpers/TrimmingHelper/Program.cs
@@ -0,0 +1 @@
+Console.WriteLine("Build, rebuild or publish this app to see trimming warnings.");
\ No newline at end of file
diff --git a/src/Helpers/TrimmingHelper/TrimmingHelper.csproj b/src/Helpers/TrimmingHelper/TrimmingHelper.csproj
new file mode 100644
index 00000000..8d32a5aa
--- /dev/null
+++ b/src/Helpers/TrimmingHelper/TrimmingHelper.csproj
@@ -0,0 +1,34 @@
+
+
+
+ Exe
+ net8.0
+ enable
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ win-x64
+ osx-arm64
+
+ true
+
+
+
+
+
+
+
diff --git a/src/Packaging.props b/src/Packaging.props
index fbe446bf..31c2186b 100644
--- a/src/Packaging.props
+++ b/src/Packaging.props
@@ -52,6 +52,18 @@
$(NoWarn);CS1591
+
+ true
+ true
+ true
+ false
+ false
+
+
+
+ true
+
+
all
diff --git a/src/Providers/Amazon.Bedrock/src/LangChain.Providers.Amazon.Bedrock.csproj b/src/Providers/Amazon.Bedrock/src/LangChain.Providers.Amazon.Bedrock.csproj
index f617051b..642178a0 100644
--- a/src/Providers/Amazon.Bedrock/src/LangChain.Providers.Amazon.Bedrock.csproj
+++ b/src/Providers/Amazon.Bedrock/src/LangChain.Providers.Amazon.Bedrock.csproj
@@ -4,6 +4,9 @@
net4.6.2;netstandard2.0;net6.0;net7.0;net8.0
$(NoWarn);CA1003;CA1307;CA1054;CA1711;CA1819;CA2234
LangChain.Providers.Amazon.Bedrock
+ false
+ false
+ false
diff --git a/src/Providers/Amazon.Sagemaker/src/LangChain.Providers.Amazon.SageMaker.csproj b/src/Providers/Amazon.Sagemaker/src/LangChain.Providers.Amazon.SageMaker.csproj
index c9d1bb80..d416fd93 100644
--- a/src/Providers/Amazon.Sagemaker/src/LangChain.Providers.Amazon.SageMaker.csproj
+++ b/src/Providers/Amazon.Sagemaker/src/LangChain.Providers.Amazon.SageMaker.csproj
@@ -4,6 +4,9 @@
net4.6.2;netstandard2.0;net6.0;net7.0;net8.0
$(NoWarn);CA2016
LangChain.Providers.Amazon.SageMaker
+ false
+ false
+ false
diff --git a/src/Providers/Ollama/src/LangChain.Providers.Ollama.csproj b/src/Providers/Ollama/src/LangChain.Providers.Ollama.csproj
index b374b42f..57d20d2c 100644
--- a/src/Providers/Ollama/src/LangChain.Providers.Ollama.csproj
+++ b/src/Providers/Ollama/src/LangChain.Providers.Ollama.csproj
@@ -4,6 +4,9 @@
net4.6.2;netstandard2.0;net6.0;net7.0;net8.0
false
$(NoWarn);CA1003;CA1307;CA1054;CA1711;CA1819;CA2234
+ false
+ false
+ false