कोई निष्पादन योग्य मिलान आदेश "dotnet-ef" नहीं मिला


82

मैं Microsoft.EntityFramework.Coreऔर SQLite के साथ ASP.Net कोर RC2 का उपयोग करके एक परियोजना नमूना कर रहा हूँ ।

मैंने इस ट्यूटोरियल का अनुसरण किया है: https://damienbod.com/2015/08/30/asp-net-5-with-sqlite-and-entity-framework-7/

लेकिन, जब मैं यह कमांड चलाता हूं:

dotnet ef migrations add FirstMigration

मुझे यह त्रुटि मिली:

No executable found matching command "dotnet-ef"

यहाँ मेरा project.jsonविन्यास है:

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0-rc2-3002702",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0-rc2-final"
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
      "version": "1.0.0-preview1-final",
      "imports": "portable-net45+win8+dnxcore50"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "dnxcore50",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "gcServer": true
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

इस घोषणा से पता चलता है कि यदि आप टूल का उपयोग कर रहे हैं तो आपके प्रोजेक्ट.जसन को RC2 में कैसा दिखना चाहिए: github.com/aspnet/Announcements/issues/172
Pawel

जवाबों:


60

इकाई फ्रेमवर्क कोर 1.0

इसे शामिल करने के लिए आपको बस toolsअपने प्रोजेक्ट के खंड को अद्यतन करने की आवश्यकता होनी चाहिए।

"Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview1-final",
  "imports": [
    "portable-net45+win8+dnxcore50",
    "portable-net45+win8"
  ]
}

इससे dotnet efकमांड उपलब्ध होनी चाहिए ।

जरूरी

मुझे यहां यह भी ध्यान रखना चाहिए कि dotnet efकमांड केवल उसी डायरेक्टरी से चलने पर उपलब्ध होंगे, जिसमें प्रोजेक्ट.जॉन फाइल है।

एंटिटी फ्रेमवर्क कोर 1.1
यदि आपको एंटिटी फ्रेमवर्क कोर 1.1 में अपग्रेड करने के बाद फिर से यह समस्या हो रही है, तो Microsoft.EntityFrameworkCore.Toolsनिर्भरता को Microsoft.EntityFrameworkCore.Tools.DotNetसंस्करण के साथ बदलना सुनिश्चित करें 1.1.0-preview4importsअनुभाग रखने की कोई आवश्यकता नहीं है , या तो। इस बारे में अधिक जानकारी के लिए, इकाई फ्रेमवर्क कोर 1.1 रिलीज घोषणा ब्लॉग पोस्ट के तहत "अपग्रेडिंग टू 1.1" शीर्षक देखें ।


बहुत बहुत धन्यवाद: D
Redplane

22
फ़ोल्डर में नहीं होने के साथ project.jsonमेरी समस्या थी, धन्यवाद!
kitsu.eb

6
यह मेरे लिए काम नहीं करता है। मुझे वही त्रुटि मिलती रहती है।
निकोला शॉ

1
@NikolaSchou आपको भी cmd को फिर से खोलना होगा।
टायलर

1
@ एड्रियन, आपको भी धन्यवाद। लंबे समय के बाद मैं .net कोर पर वापस आता हूं। जिस समय मैंने यह प्रश्न पूछा, मैं पुरानी समस्या से जूझ रहा था। इतना मज़ेदार
रेडप्लेन

56

इकाई फ्रेमवर्क कोर 1.1

यदि आप VS2017 का उपयोग नई .csproj परियोजनाओं के साथ बिना Project.json फ़ाइल के कर रहे हैं तो इस पर जोड़ना

आपको .csproj फाइल को एडिट करने की जरूरत है (राइट इन सॉल्यूशन एक्स्प्लोरर पर क्लिक करें और जो भी एडिट करें क्लिक करें।) और फिर उसमें पेस्ट करें

<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet">
      <Version>1.0.0-*</Version>
    </DotNetCliToolReference>
  </ItemGroup>

शिष्टाचार: https://github.com/aspnet/EntityFramework/issues/7358#issuecomment-278379967


यह काम करता है लेकिन, सही संस्करण को जानने की जरूरत है। जैसा कि मैं नया हूं, मेरे लिए सही संस्करण का पता लगाना भी बहुत मुश्किल था। तो उत्तर का अनुसरण करने वाला कोई भी व्यक्ति आपके Microsoft.EntityFrameworkCore.Tools.DotNet संस्करण को जानता है और संस्करण टैग में रखता है। अर्थात <संस्करण> 2.0.3 </ संस्करण>
सालेह एनाम शोहग

यह वास्तव में मेरा दिन बचाता है। धन्यवाद! मैंने अपडेट किया VS2017और यह स्वचालित रूप dotnet core CLIसे उस 2.0संस्करण में अपडेट हो गया जो संगत नहीं है dotnet core 1.0। लेकिन ऐसा लगता है कि मुझे अपनी परियोजना .net core 1.0को अपडेट करना चाहिए 2.0
Boooooooooms

40

VS2017 15.3 या अधिक से अधिक और ASP.NET कोर 2.0 या बाद के लिए विशिष्ट ...

कमांड लाइन या नगेट पैकेज मैनेजर के माध्यम से डीबी प्रदाता के लिए नगेट स्थापित करें।

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

.Csproj पर निम्न अनुभाग जोड़ें

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" 
    Version="2.0.0" />
</ItemGroup>

VS2017 में कमांडलाइन या नगेट मैनेजर के माध्यम से डिजाइन टाइम टूल्स स्थापित करें।

dotnet add package Microsoft.EntityFrameworkCore.Design

यह प्रोजेक्ट निर्देशिका में कमांड लाइन पर dotnet ef * को सक्षम करता है।

डॉटनेट ef * को कमांड लाइन पर प्रोजेक्ट डायरेक्टरी में कमांड करता है,

dotnet ef migrations add Initial
dotnet ef database update Initial
dotnet ef dbcontext scaffold 

2
शानदार जवाब, मैं सब कुछ देख रहा था और 'आइटमग्रुप' में जोड़ने पर अनुभाग था जो वास्तव में मेरे लिए .NET कोर 2 वेब एपीआई पर ईएफ कोर 2 का उपयोग करके अवरुद्ध कर रहा था
djangojazz

मुझे भी। DotNetCliToolReference Tools.DotNet साथ मेरे मामले में महत्वपूर्ण था
blfuentes

यह मेरी समस्या है, नेट कोर 2 वेब एपीआई के साथ
ईएफ़

32

.NET कोर 1.0 से .NET कोर 1.1+ या 2.x पर स्विच करते समय यह एक सामान्य समस्या है।

इसे ठीक करने के लिए, आपको निम्न करने की आवश्यकता है:

  • Microsoft.EntityFrameworkCore.Tools और Microsoft.EntityFrameworkCore.Tools.DotNet पैकेज लाइब्रेरीज़ को NuGet का उपयोग करके प्राप्त करें ।
  • मैन्युअल रूप से आपके project.json(.NET .NET 1.0 के लिए) या <projectName>.csproj.NET .NET 1.1+ और 2.x प्रोजेक्ट कॉन्फ़िगरेशन फ़ाइल के भीतर इस पैकेज का संदर्भ जोड़ें ।

विशेष रूप से, .NET कोर 1.0 परियोजनाओं के लिए, इसे जोड़ें:

"tools": {
   "Microsoft.EntityFrameworkCore.Tools": "1.0.0"
   "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"
 }

.NET कोर 1.1+ और .NET कोर 2.x परियोजनाओं के लिए, इसे जोड़ें:

<ItemGroup>
  <DotNetCliToolReference 
      Include="Microsoft.EntityFrameworkCore.Tools" 
      Version="2.0.0" />
  <DotNetCliToolReference 
      Include="Microsoft.EntityFrameworkCore.Tools.DotNet" 
      Version="2.0.0" />
</ItemGroup>

यदि आपके पास पहले से ही एक toolsjson कुंजी या एक <ItemGroup>तत्व है जिसमें एक या अधिक मौजूदा DotNetCliToolReferenceतत्व हैं, तो नए को मौजूदा समूह में जोड़ें।

महत्वपूर्ण : उपरोक्त चरणों को करने के अलावा, आपको dotnet efप्रोजेक्ट रूट फ़ोल्डर (प्रोजेक्ट फ़ाइल वाला एक) के भीतर कमांड लॉन्च करना होगा, अन्यथा यह काम नहीं करेगा।

अतिरिक्त जानकारी और इस मुद्दे की एक विस्तृत व्याख्या के लिए आप मेरे ब्लॉग पोस्ट पर अधिक पढ़ सकते हैं ।


धन्यवाद दोस्त आप दिन बचाओ :)
marvelTracker

आप प्रोजेक्ट रूट फ़ोल्डर के भीतर डॉटनेट एफई कमांड कैसे लॉन्च करते हैं?
इयान वारबटन

1
C:\Program Files\dotnetPATH पर्यावरण चर में होने या पूर्ण पथ का उपयोग करके C:\Program Files\dotnet\dotnet.exe
@IanWarburton

.NET कोर 2.0 में मेरे लिए काम किया। स्वीकृत समाधान मेरे काम नहीं आया। महत्वपूर्ण अनुभाग ने मेरे लिए चाल चली। धन्यवाद।
mpatel

18

मुझे लगता है कि मुझे समस्या के लिए सटीक समाधान मिल गया है - डॉटनेट: कोई निष्पादन योग्य नहीं मिला मिलान कमांड "डॉटनेट-एफई" ..

मैं वीएस 2017 बहुमुखी 15.5.3 में डॉट नेट कोर 2.0 का उपयोग कर रहा हूं

इस त्रुटि का कारण

इस त्रुटि के कारण क्योंकि है Nuget है ढूँढने में सक्षम नहीं समाधान फ़ाइल स्थान पर।

समाधान: - उस निर्देशिका में जाएँ जहाँ आपके पास 'Startup.cs' वर्ग है

  1. मैं आपके पैकेज मैनेजर कंसोल पर नीचे कमांड जोड़कर रूट पर चला गया ।

    सीडी। \ स्कूल 1

यहाँ 'School1' परियोजना की मेरी मूल निर्देशिका थी, और इसमें मेरा 'Start..cs' वर्ग शामिल था, यह आपके मामले में अलग होगा।

  1. फिर पैकेज मैनेजर कंसोलdotnet ef पर कमांड चलाएं जो अब सफलतापूर्वक चलेगा।

स्पष्ट समझ के लिए चित्रों के साथ उदाहरण

  1. मुझे रनिंग के दौरान एरर एरर आया dotnet efयहां छवि विवरण दर्ज करें

  2. मैंने कमांड के साथ रूट फ़ोल्डर में जाकर त्रुटि को ठीक किया cd .\School1

आशा है कि यह मेरे साथी डॉट नेट डेवलपर्स को मदद करेगा।

यहां छवि विवरण दर्ज करें


1
हां, इससे मुझे उसी प्रकार के मुद्दे को ठीक करने में मदद मिली जो मैं सामना कर रहा था। धन्यवाद।
मनसे

1
यह कुछ हद तक मेरी मदद करता है। मेरे मामले की समस्या को हल करने के लिए मैं @Michael Freidgeim के उत्तर का भी पालन करता हूं
सालेह एनाम शोहग

12

मुझे Microsoft.EntityFrameworkCore.Tools को जोड़ना था। काम करने के लिए डॉटनेट । आपकी project.json फ़ाइल का टूल सेक्शन इस तरह दिखेगा:

"tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
    "Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final",
    "Microsoft.EntityFrameworkCore.Tools":"1.1.0-preview4-final",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
},

"Microsoft.EntityFrameworkCore.Tools.DotNet" नहीं है
एल्विन ममाडोव

2
वहाँ है ... ब्राउज़ करें के माध्यम से प्रबंधित करें NuGet संकुल GUI खोज शब्द ।Tools.DotNet इसे लाएगा। नवीनतम प्री-रिलीज़ 1.1.0-प्रीव्यू 4-फाइनल है।
K7Boyoy

4

यदि आप इस समस्या को पूरा करते हैं और सीएलआई उपकरण के साथ asp.net कोर चलाते हैं, तो आप इसे <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> xx.csproj फ़ाइल में जोड़कर हल कर सकते हैं , और dotnet restore । तब आप डॉटनेट एफई कमांड का उपयोग कर सकते हैं।


मैं वास्तव में एक ही मुद्दे में भाग गया। मैं 2.0.2 Microsoft.EntityFrameworkCore.Tools.DotNet का उपयोग कर रहा था, और प्रोज फ़ाइल को अपडेट कर रहा था, परियोजना को फिर से लोड किया, और फिर सेवानिवृत्त हो गया और यह काम किया। धन्यवाद!
मीलों

1

वीएस पैकेज मैनेजर कंसोल टाइप में एक अलग कंसोल विंडो खोलने के बजाय और निम्न कमांड चलाएं:

माइग्रेशन जोड़ें

Add-Migration <migration name>

अंतिम माइग्रेशन निकालें

Remove-Migration

माइग्रेशन लागू होने से पहले (या माइग्रेशन लागू करने के लिए):

Update-Database

जब माइग्रेशन लागू किया गया है:

Update-Database -Migration <previous migration> -Context <db context name>

HTH

EDIT : आपको अपने MVC कोर प्रोजेक्ट में निम्न वर्ग की आवश्यकता हो सकती है:

public class DbContextFactory : IDesignTimeDbContextFactory<NotesContext>
{
    public YourDbContext CreateDbContext(string[] args)
    {
        var builder = new DbContextOptionsBuilder<YourDbContext>();
        builder.UseSqlServer("DefaultConnection", optionsBuilder => optionsBuilder.MigrationsAssembly(typeof(YourDbContext).GetTypeInfo().Assembly.GetName().Name));
        return new YourDbContext(builder.Options);
    }
}

1

मेरे मामले dotnet efमें उपलब्ध नहीं था और सूची में नहीं दिखाया गया है कि कब dotnet -hचलाया जाता है।

मैंने निम्नलिखित आदेश के साथ विश्व स्तर पर डॉटनेट-एफई स्थापित किया है और अब मैं इसका उपयोग करने में सक्षम हूं। लेकिन फिर भी सूची में नहीं है।

dotnet tool install -g dotnet-ef 

0

मैं एक अलग श्रेणी की लाइब्रेरी परियोजना का उपयोग कर रहा था। पैकेज मैनेजर कंसोल में उपरोक्त सभी को आज़माने और विफल करने के बाद। मैंने कमांड प्रॉम्प्ट का उपयोग किया, और यह काम किया! अजीब। हालाँकि, इस लेख का श्रेय जाता है । और यदि आप अलग श्रेणी के पुस्तकालय परियोजना का उपयोग कर रहे हैं, तो यह आपका समाधान है।


0

विजुअल स्टूडियो 2017 के तहत मुझे इन कमांड को पैकेज मैनेजर कंसोल से चलाने की आवश्यकता थी

install-package Microsoft.EntityFrameworkCore.SqlServer.Design

Scaffold-DbContext "Server=.\sqlexpress;Database=MyDb;Trusted_Connection=True;MultipleActiveResultSets=true" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Model -Context "MyApp"

0

उपकरण अनुभाग में नीचे कोड जोड़ें,

 "tools": {

    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview2-final",

    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {

      "version": "1.0.0-preview2-final",
      "imports": "portable-net45+win8+dnxcore50"
    }
  }

कोड के इस प्रारूप ने मेरी त्रुटि को हल किया।


0

डिफ़ॉल्ट रूप से एक NuGet Pkg को जोड़ने पर इसे PackageReference के रूप में जोड़ा जाएगा, यह गलत है, इसलिए इसे मैन्युअल रूप से संपादित करें

1- .csproj फ़ाइल को संपादित करें

2- "PackageReference" से परिवर्तन:

<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.1"/>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3"/>
</ItemGroup>
to:
<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.1"/>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3"/>
</ItemGroup>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.