.NET कोर 3 में डॉटनेट एफई नहीं मिला


170

प्रारंभिक माइग्रेशन बनाने के लिए मैं डॉक्स का अनुसरण कर रहा हूं । जब मैं निष्पादित करता हूं dotnet, मुझे सहायता अनुभाग मिलता है, जिसका अर्थ है कि पेट ठीक से काम करता है।

फिर मैं कंसोल विंडो में डॉक्स से नीचे कमांड को निष्पादित करने का प्रयास करता हूं:

dotnet ef migrations add InitialCreate  

मुझे निम्नलिखित त्रुटि मिलती है:

Could not execute because the specified command or file was not found.  
Possible reasons for this include:  
  * You misspelled a built-in dotnet command.  
  * You intended to execute a .NET Core program, but dotnet-ef does not exist.  
  * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
  • मैंने कमांड को कॉपी करने के बाद पहले आइटम को बाहर कर दिया।
  • मैंने दूसरा आइटम बाहर रखा क्योंकि पैकेज Microsoft.EntityFrameworkCore.SqlServer स्थापित है।
  • मैंने तीसरे आइटम को बाहर कर दिया क्योंकि डॉटनेट को इनवॉइस करते समय मुझे सहायता अनुभाग मिलता है ।

मैं इस समस्या को हल कर रहा हूं, लेकिन चूंकि संस्करण नया है, इसलिए बहुत आगे नहीं जाना है और / या यह पहले के संस्करणों से समान मुद्दों में डूब रहा है।

मैंने केवल Microsoft.EntityFrameworkCore को जबरन स्थापित करने का प्रयास किया है, जब इसे स्पष्ट रूप से जोड़ा जाना चाहिए। मैं यह बताने में त्रुटि संदेश में भाग गया कि नवीनतम संस्करण 2.2.6 है और डाउनग्रेड एक नो-गो है। मुझे यकीन नहीं है कि मैं अपने सिस्टम पर पहले से मौजूद एसक्यूएल-पैकेज के साथ संगत संस्करण कैसे स्थापित कर सकता हूं (और इस मुद्दे को मारने के लिए अगर यह सही तरीका है तो भी कम निश्चित है)।

पैकेज डाउनग्रेड किया गया पता: Microsoft.EntityFrameworkCore 3.0.0-preview6.19304.10 से 2.2.6 तक। किसी भिन्न संस्करण का चयन करने के लिए प्रोजेक्ट से सीधे पैकेज का संदर्भ लें।
वेब ->
Microsoft.EntityFrameworkCore.SqlServer 3.0.0-प्रीव्यू 6.19304.10 ->
Microsoft.EntityFrameworkCore.Relational 3.0.0-preview6.19304.10 ->
Microsoft.EntityFrameworkCore (> = 3.0.0-pred6.19304.10)
वेब -> Microsoft। EntityFrameworkCore (> = 2.2.6)

जवाबों:


330

ASP.NET Core 3 पूर्वावलोकन 4 के लिए घोषणा देखें , जो बताता है कि यह उपकरण अब बिल्ट-इन नहीं है और इसके लिए एक स्पष्ट इंस्टॉल की आवश्यकता है:

डॉटनेट एफई टूल अब .NET कोर एसडीके का हिस्सा नहीं है

यह परिवर्तन हमें dotnet efएक नियमित .NET CLI उपकरण के रूप में जहाज करने की अनुमति देता है जिसे वैश्विक या स्थानीय उपकरण के रूप में स्थापित किया जा सकता है। उदाहरण के लिए, माइग्रेशन प्रबंधित करने में सक्षम होने के लिए या एक पाड़ DbContext, dotnet efएक वैश्विक उपकरण के रूप में स्थापित करें जो निम्न कमांड टाइप कर रहा है:

dotnet tool install --global dotnet-ef

उपकरण के एक विशिष्ट संस्करण को स्थापित करने के लिए, निम्नलिखित कमांड का उपयोग करें:

dotnet tool install --global dotnet-ef --version 3.1.4

परिवर्तन का कारण डॉक्स में बताया गया है :

क्यों

यह परिवर्तन हमें dotnet efनूगेट पर एक नियमित .NET सीएलआई उपकरण के रूप में वितरित करने और अपडेट करने की अनुमति देता है , इस तथ्य के अनुरूप कि ईएफ कोर 3.0 को हमेशा नूगेट पैकेज के रूप में भी वितरित किया जाता है।

इसके अलावा, आपको अपने प्रोजेक्ट में निम्नलिखित NuGet पैकेज जोड़ने की आवश्यकता हो सकती है:


5
यदि आप इंस्टॉल करने के लिए संस्करण को सत्यापित करना चाहते हैं तो जुगेट की लिंक यहां है
जुआन डे ला क्रूज़

2
बस एक नोट .. [dotnet-ef --version 3.0.0] [डॉटनेट कोर संस्करण 3.1.100] के लिए सबसे अधिक संगत है।
कैटालिस्ट

विश्व स्तर पर स्थापित करना सुविधाजनक है, लेकिन आप अब स्थानीय रूप से डॉटनेट उपकरण भी स्थापित कर सकते हैं
ज़च एस्पोसिटो

Microsoft.EntityFrameworkCore.Tools की जरूरत नहीं है।
योगीहोस्टिंग 13

9

संपादित करें: यदि आप तैनाती के लिए डॉकफाइल का उपयोग कर रहे हैं तो ये कदम हैं जो आपको इस मुद्दे को हल करने के लिए उठाने की आवश्यकता है।

निम्नलिखित को शामिल करने के लिए अपने डॉकफाइल को बदलें:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
ENV PATH $PATH:/root/.dotnet/tools
RUN dotnet tool install -g dotnet-ef --version 3.1.1

अपने dotnet efआदेशों को भी बदलेंdotnet-ef


मामले में अभी भी, PATH काम नहीं करता है, इस तरह ENV निर्देश का उपयोग करें: ENV PATH $ PATH: /root/.dotnet/tools
Jaliya Udagedara

4

वैश्विक उपकरण डिफ़ॉल्ट निर्देशिका में या किसी विशिष्ट स्थान पर स्थापित किए जा सकते हैं। डिफ़ॉल्ट निर्देशिका हैं:

  • Linux / macOS ---> $ HOME / .dotnet / उपकरण

  • विंडोज --->% USERPROFILE% \। डॉटनेट \ टूल्स

यदि आप एक वैश्विक उपकरण चलाने का प्रयास कर रहे हैं, तो जांच लें कि आपकी मशीन पर PATH पर्यावरण चर में वह पथ है जहाँ आपने वैश्विक उपकरण स्थापित किया था और निष्पादन योग्य उस पथ में है।

.NET कोर उपकरण उपयोग समस्याओं का निवारण करें


यह मेरी समस्या थी, जब मैंने "डॉटनेट टूल इंस्टॉल --global dotnet-ef" के माध्यम से मैकओएस पर स्थापित किया, तो मुझे टर्मिनल विंडो को बंद करने और फिर से खोलने का संकेत मिला, ताकि नया कॉन्फ़िगरेशन प्रभावी हो, लेकिन वास्तव में डिफ़ॉल्ट इंस्टॉलेशन फ़ोल्डर $ घर / .net / उपकरण को पाथ चर में नहीं जोड़ा गया था।
माइक डैलर

मुझे खुशी है कि इसने आपकी मदद की :)
गैम्बीटियर

1

PowerShell या कमांड प्रॉम्प्ट को व्यवस्थापक के रूप में चलाएं और कमांड के नीचे चलाएं।

डॉटनेट टूल इंस्टॉल --global dotnet-ef --version 3.1.3


0

मुझे भी यही समस्या थी। मैंने हल किया, अपने पीसी में सभी संस्करणों की स्थापना रद्द की और फिर डॉटनेट को पुनर्स्थापित किया।


6
टिप्पणी के रूप में बेहतर अनुकूल। यह बताना चाहिए कि संसाधनों के साथ कैसे और क्यों हल करना है
जोश एडम्स

0

यदि आपका स्नैप पैकेज डॉटनेट- sdk का उपयोग लिनक्स पर कर रहा है तो यह आपके ~ .bashrc / आदि को अपडेट करके हल कर सकता है:

#!/bin/bash
export DOTNET_ROOT=/snap/dotnet-sdk/current
export MSBuildSDKsPath=$DOTNET_ROOT/sdk/$(${DOTNET_ROOT}/dotnet --version)/Sdks
export PATH="${PATH}:${DOTNET_ROOT}"
export PATH="$PATH:$HOME/.dotnet/tools"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.