无法在VS.2017中使用ASP.NET Core Web应用程序启用迁移

时间:2017-04-21 23:02:27

标签: asp.net-core entity-framework-6 asp.net-identity

我开始使用ASP.NET Core模板构建我的ASP.NET Web应用程序。我注意到它已经在〜\ Data \ Migrations文件夹中有两个文件,一个是naemd * _CreateIdentitySchema.cs,另一个是ApplicationDbContextModelSnapshot。

起初它抱怨我有Powershell 2所以我安装了v3。 然后我从包管理器安装了包EntityFramework(v6.1.3),因为某种方式没有从模板安装,就像在VS.2015中那样。

现在它给我一个错误,比如" 异常调用" SetData"用" 2"参数:"然后是一堆东西。

 $domain.SetData('contextProject', $contextProject)
 CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
  FullyQualifiedErrorId : SerializationException
 Exception calling "SetData" with "2" argument(s): "Type 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' in assembly 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation, 

Version = 15.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'没有标记为可序列化。" 在C:\ Users \ Devel.nuget \ packages \ entityframework \ _6.1.3 \ tools \ EntityFramework.psm1:720 char:5 + $ domain.SetData(' startUpProject',$ startUpProject)

我正在使用VS.2017 Update 1,我得到了这个"核心"事情使生活复杂化,而不是简单化。

3 个答案:

答案 0 :(得分:2)

我做了以下事情:

  1. 设置为StartUp Project 我的单元测试项目
  2. 将平台设置为任何CPU,
  3. 在Context中添加了一个空构造函数(不调用 base(" name = XXX"))。
  4. 然后我发出了这个命令启用 - 迁移

      

    启用 - 迁移 - 项目名称" MyProjectWithContext"   -ConnectionString" Data Source =。\ SQL; Initial Catalog = XXXXX; Integrated Security = True; MultipleActiveResultSets = True" -ConnectionProviderName System.Data.SqlClient

    添加迁移

    的内容相同
      

    Add-Migration -Name MyName -ProjectName" MyProject" -ConnectionString   "数据源=。\ SQL;初始目录= XXXX;集成   安全= TRUE; MultipleActiveResultSets =真" -ConnectionProviderName   System.Data.SqlClient的

答案 1 :(得分:1)

不确定是否有任何帮助:在将我的内容放入针对.NET 4.6.2的项目中后,我遇到了同样的问题,但是使用了“新的”MSBuild-Syntax(我认为这就是所谓的内容)。 / p>

Projectname.csproj(包含实体框架代码的那个)看起来像这样:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net462</TargetFramework>

我现在使用VS 2017的“Windows经典桌面 - 类库(.NET Framework)”模板重新创建项目(基本上:复制所有代码并再次设置所有依赖项)。

现在,Projectname.csproj看起来像这样(遗留的MSBuild?不知道如何调用它):

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

我仍然可以添加“new”项目作为对包含ASP.NET Core内容的项目的引用。而且,更重要的是,在包含EF类型的项目中使用“添加 - 迁移”现在可以工作(编辑:我仍然需要遵循Damian Drygiel给出的建议:启动项目必须是具有有效app.config的不同项目)

老实说,我仍然不确定使用这种解决方法是否是一个好主意,因为它会导致混合两种类型的项目/ MSBuild版本。不确定其含义是什么。到目前为止,似乎有效。

到目前为止我的外卖:不要尝试将.NET 4.6与“新”项目格式一起使用。目前这似乎不太好。

答案 2 :(得分:0)

大家好,我也遇到相同的错误,其主要原因是您的类库属于标准库类型,使用.net框架类型的类库,问题已解决,安装了实体框架并运行enable-迁移命令的工作原理,它应该包含一个上下文类。