2017-09-22 3 views
1

Ich versuche, eine dynamische Expression StringFileNotFoundException: Konnte Datei oder Assembly ‚System.Data.Entity‘ laden

var x = Expression.Parameter(typeof(T), "x"); 
var e = Dynamic.DynamicExpression.ParseLambda(new[] { x }, null, "x.Id > 1"); 

var compiledDelegate = exp.Compile(); 

var values = new List<T> 
{ 
    new T 
    { 
     Id = 1 
    }, 
    new T 
    { 
     Id = 2 
    } 
}; 

var result = values.Where((Func<T, bool>)compiledDelegate); 

mit Linq zu analysieren Beim Versuch, die ParseLambda Zeile auszuführen, führt der Code die unten Ausnahme

enter image description here

ich bin mit netto-Standard 2.0 und Visual Studio 15.3.5.

Ich ziehe die unten zwei Pakete mit allen notwendigen ASP.NET Core-Sachen.

<PropertyGroup> 
    <TargetFramework>netstandard2.0</TargetFramework> 
    <NeutralLanguage>en</NeutralLanguage> 
    </PropertyGroup> 

    <ItemGroup> 
    <PackageReference Include="System.Linq.Dynamic" Version="1.0.7" /> 
    <PackageReference Include="System.Linq.Expressions" Version="4.3.0" /> 
    </ItemGroup> 
    <PropertyGroup> 
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> 
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> 
    </PropertyGroup> 
+0

Haben Sie System.Data.Entity explizit in Ihrem Projekt verwiesen? Es ist nicht als Paketreferenz aufgeführt – DiskJunky

+0

Es gibt keine "System.Data" oder "System.Data.Entity" in NuGet. Es gibt 'System.Data.Common', aber immer noch kein Glück. – Ayman

Antwort

1

Mit mehr googeln fand ich, dass System.Data noch nicht portiert ist Standard 2.0 APIs .net (wenn es jemals sein wird), um so System.Linq.Dynamic mit .net-Standard 2.0 eigentlich nicht kompatibel war.

enter image description here

Stattdessen fand ich einen anderen Port der gleichen Baugruppe System.Linq.Dynamic.Core, die den Job.

enter image description here

Verwandte Themen