2017-04-21 96 views
3

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

起初它抱怨我有Powershell 2,所以我安装了v3。 然后我从软件包管理器中安装了Package 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, 

版本= 15.0.0.0,文化=中性公钥= b03f5f7f11d50a3a”未标记为可序列化“ 在C:\用户\ Devel.nuget \包\的EntityFramework \ 6.1.3 \工具\的EntityFramework .psm1:720 char:5 + $ domain.SetData('startUpProject',$ startUpProject)

我正在使用VS.2017更新1,我得到的印象是这个“核心”的东西使生活更复杂更简单

+2

对我来说,帮助将启动项目设置为ASP.NET Core Web应用程序以外的其他项目。 –

+0

似乎是EF6的问题:https://github.com/aspnet/EntityFramework6/issues/231 – Matthias

回答

1

不知道这是否有帮助:将我的内容放置在一个面向.NET 4.6.2的项目中后,我遇到了同样的问题,但使用“新”MSBuild-Syntax(我认为这就是它所称的)。

Projectname.csproj(含从实体框架代码中的一个)是这样的:

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

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

,该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> 

我仍然可以添加“新”项目,以包含ASP项目的引用.NET核心的东西。更重要的是,在包含EF类型的项目上使用“Add-Migration”现在可以工作(编辑:我仍然需要遵循Damian Drygiel给出的建议:启动项目必须是具有有效app.config的不同项目) 。

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

我的外卖到目前为止:不要尝试使用.NET 4.6的“新”项目格式。目前这似乎并不奏效。

2

我必须做到以下几点:

  1. 设为启动项目我的单元测试项目,
  2. 设置平台,任何CPU,
  3. 添加一个空的构造的背景下(不调用基地(“名称= XXX”))。

然后我就发出这样的命令启用的迁移

启用的迁移-ProjectName “MyProjectWithContext” -ConnectionString“数据源= \ SQL;初始目录= XXXXX;集成安全性=真; MultipleActiveResultSets =真” -ConnectionProviderName System.Data.SqlClient的

同样的事情为添加迁移

添加迁移-Name MYNAME -ProjectName “MyProject的” -ConnectionString “数据源= \ SQL;初始目录= XXXX;集成 安全= TRUE; MultipleActiveResultSets =真” -ConnectionProviderName System.Data。 SqlClient

+0

第一次setp就是我所需要的一切 – tgarcia

相关问题