ASP.NET 核心 WebApp(.NET Core) 缺少 DataAnnotations

ASP.NET Core WebApp(.NET Core) missing DataAnnotations


以下情况:
我有一个包含多个项目(数据访问、业务对象、业务逻辑、Web 服务器)的 .sln。
Web 项目是一个 ASP.NET 核心 Web 应用程序,使用具有个人用户帐户授权(身份)和 "WebApplication"-Template 的 .Net-Core 1.1。
其余项目正在使用 .Net-Framework 4.6.2。

现在我要从网络服务器中删除 DBContext,而是使用与数据访问项目中相同的内容。
我相应地设置了我的 ApplicationDBContext,我的用户实体扩展了 IdentityUser。我还更改了 web-server-project 中的所有内容以使用 ApplicationDBContext(在我的例子中称为 WTHListModell)。
我还有对项目 WTHList.GO(业务对象)和 WTHList.DZ(数据访问)的引用。

问题来了:
使用 Web 服务器的完整 .NET-Framework(创建“.NET-Core Web-Application (.Net-Framework)”)这样做是成功的,并且工作正常。
使用 .Net-Core 1.1,每当我尝试登录或注册用户时,我都会收到关于 "System.ComponentModel.DataAnnotations" 的 FileNotFound-Exception。
现在我已经读到,DataAnnotations 与 .Net-Core 不兼容,我还尝试将其他 NuGet 包和程序集添加到 Web 项目中。

我不知道我还能做些什么,因为我应该为 Web-Projekt 使用 .NET-Core Framework 1.1,但它一直给我这个特定的错误。


有人知道如何解决这个问题吗?
我已经搜索了一段时间,但还没有找到解决方案...

如果它有任何相关性:我正在使用 VS2017 Enterprise RC。

提前致谢。

更新 这是csproj文件的内容:

<Project ToolsVersion="15.0" Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup Label="Globals">
    <SccProjectName>SAK</SccProjectName>
    <SccProvider>SAK</SccProvider>
    <SccAuxPath>SAK</SccAuxPath>
    <SccLocalPath>SAK</SccLocalPath>
  </PropertyGroup>
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.1</TargetFramework>
    <PreserveCompilationContext>true</PreserveCompilationContext>
  </PropertyGroup>
  <PropertyGroup>
    <PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
  </PropertyGroup>
  <PropertyGroup>
    <UserSecretsId>aspnet-WTHList.Web2-ab5b6dbd-698d-4877-a2b3-6dd9b7a37960</UserSecretsId>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.0" />
    <PackageReference Include="Microsoft.NETCore.App" Version="1.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="1.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Routing" Version="1.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.0.0" />
    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="1.0.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink.Loader" Version="14.0.0" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="1.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="1.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.0.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0-preview4-final" />
    <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="1.0.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.0.0-msbuild2-final" />
  </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild2-final" />
    <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0-msbuild2-final" />
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild2-final" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\WTHList.DZ\WTHList.DZ.csproj" />
    <ProjectReference Include="..\WTHList.GL\WTHList.GL.csproj" />
    <ProjectReference Include="..\WTHList.GO\WTHList.GO.csproj" />
  </ItemGroup>
</Project>

不要与不同的 "Core" 术语混淆:.NET Core 是新的 "base" 框架,"looks like" .NET Framework 4.5(4.6 等),但这是 other 框架。您可以一次编译同一项目的多个版本(针对不同的框架)。

ASP.NET Core 就像旧的 ASP.NET,但是是新的。它是 compiled twice - 一次用于 .NET Framework 4.5.1(和 "compatible" 4.5.2、4.6、4.6.1),一次用于 .NET Core(实际上,用于 netstandart1.6是某种"specification",由NET Core).

实现

因此,您可以使用 ASP.NET Core 创建 Web 应用程序,它可以 build/run .NET Framework 4.5.1 and/or .NET Core。但是您需要所有依赖项也建立在 .NET Core.

上(兼容).NET Framework 4.5.1 and/or

因此,如果您的应用程序需要某些库(例如 System.ComponentModel.DataAnnotations),而这些库不适用于 NET Core - 您无法在 .NET Core 上使用 build/run 应用程序。您只能在 .NET Framework 4.5.1+.

之上构建 ASP.NET Core 应用程序