2017-04-21 92 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

相關問題