首页 文章

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

提问于
浏览
1

Following situation:
我有一个包含多个项目的.sln(数据访问,业务对象,业务逻辑,Web服务器) .
Web-Project是一个ASP.NET核心Web应用程序,使用.Net-Core 1.1,具有单独的用户帐户授权(Identity)和"WebApplication" -Template .
其余项目使用.Net-Framework 4.6.2 .

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

Now here comes the problem:
使用完整的.NET-Framework for Web-Server(创建".NET-Core Web-Application (.Net-Framework)")这样做是成功的,并且工作得很好 .
使用.Net-Core 1.1每当我尝试登录或注册用户时,我都会收到关于"System.ComponentModel.DataAnnotations"的FileNotFound-Exception .
现在我已经读过,DataAnnotations与.Net-Core不兼容,我也试图将其他NuGet-Packages和Assemblies添加到Web-Project中 .

我不知道我还能做些什么,因为我应该将.NET-Core Framework 1.1用于Web-Projekt并且它不断给我这个特殊的错误 .

Has anybody got a clue on how to solve this issue?
我已经搜索了一段时间,但我还没有找到解决方案......

如果它有任何相关性:我正在使用VS2017企业级RC .

提前致谢 .

UPDATE 这是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>

1 回答

  • 0

    不要与不同的"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应用程序,它可以在 .NET Framework 4.5.1 和/或 .NET Core 上构建/运行 . 但是你需要所有的依赖关系也 Build 在(兼容) .NET Framework 4.5.1 和/或 .NET Core 上 .

    因此,如果您的应用需要一些不适用于 NET Core 的库(例如 System.ComponentModel.DataAnnotations ),则无法在 .NET Core 上构建/运行应用 . 您只能在 .NET Framework 4.5.1+ 之上构建 ASP.NET Core app .

相关问题