.NET-eszközök használati problémáinak elhárítása
Előfordulhat, hogy problémákat tapasztal egy .NET-eszköz telepítésekor vagy futtatásakor, amely lehet globális vagy helyi eszköz. Ez a cikk ismerteti a gyakori kiváltó okokat és néhány lehetséges megoldást.
A telepített .NET-eszköz nem fut
Ha egy .NET-eszköz nem fut, valószínűleg a következő problémák egyikével ütközött:
- Az eszköz végrehajtható fájlja nem található.
- A .NET-futtatókörnyezet megfelelő verziója nem található.
Nem található végrehajtható fájl
Ha a végrehajtható fájl nem található, a következőhöz hasonló üzenet jelenik meg:
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 program, but dotnet-xyz 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.
A végrehajtható fájl neve határozza meg, hogyan hívja meg az eszközt. Az alábbi táblázat a formátumot ismerteti:
Végrehajtható névformátum | Meghívás formátuma |
---|---|
dotnet-<toolName>.exe |
dotnet <toolName> |
<toolName>.exe |
<toolName> |
Globális eszközök
A globális eszközök az alapértelmezett könyvtárban vagy egy adott helyen telepíthetők. Az alapértelmezett könyvtárak a következők:
OS | Elérési út |
---|---|
Linux/macOS | $HOME/.dotnet/tools |
Ablakok | %USERPROFILE%\.dotnet\tools |
Ha globális eszközt próbál futtatni, ellenőrizze, hogy a számítógépen található PATH
környezeti változó tartalmazza-e azt az elérési utat, ahová a globális eszközt telepítette, és hogy a végrehajtható fájl ezen az elérési úton található-e.
A .NET CLI megpróbálja hozzáadni az alapértelmezett helyet a PATH környezeti változóhoz az első használatkor. Vannak azonban olyan esetek, amikor előfordulhat, hogy a hely nem lesz automatikusan hozzáadva a PATH-hoz:
- Ha Linuxot használ, és a .NET SDK-t .tar.gz fájlokkal telepítette, és nem apt-get vagy rpm használatával.
- Ha macOS 10.15 "Catalina" vagy újabb verziót használ.
- Ha macOS 10.14 "Mojave" vagy korábbi verziót használ, és a .NET SDK-t .tar.gz fájlokkal telepítette, a .pkg-t nem.
- Ha telepítette a .NET Core 3.0 SDK-t, és a környezeti változót a
DOTNET_ADD_GLOBAL_TOOLS_TO_PATH
következőrefalse
állította be: . - Ha telepítette a .NET Core 2.2 SDK-t vagy korábbi verzióit, és beállította a
DOTNET_SKIP_FIRST_TIME_EXPERIENCE
környezeti változóttrue
.
Ezekben a forgatókönyvekben, vagy ha dotnetes eszköz telepítésekor adta meg a --tool-path
beállítást, a PATH
számítógépen lévő környezeti változó nem tartalmazza automatikusan azt az elérési utat, amelyen a globális eszközt telepítette. Ebben az esetben fűzze hozzá az eszköz helyét (például) a PATH
környezeti változóhoz bármilyen módszerrel, $HOME/.dotnet/tools
amelyet a rendszerhéj biztosít a környezeti változók frissítéséhez. További információ: .NET-eszközök.
Helyi eszközök
Ha helyi eszközt próbál futtatni, ellenőrizze, hogy van-e dotnet-tools.json nevű jegyzékfájl az aktuális könyvtárban vagy annak szülőkönyvtáraiban. Ez a fájl a gyökérmappa helyett a projektmappák hierarchiájában bárhol a .config nevű mappa alatt is élhet. Ha létezik dotnet-tools.json , nyissa meg, és keresse meg a futtatni kívánt eszközt. Ha a fájl nem tartalmaz bejegyzést "isRoot": true
, akkor további eszközjegyzékfájlokat is kereshet a fájlhierarchiában.
Ha egy megadott elérési úttal telepített .NET-eszközt próbál futtatni, az eszköz használatakor ezt az elérési utat kell megadnia. Az eszközútvonalra telepített eszközök használatára példa:
..\<toolDirectory>\dotnet-<toolName>
A futtatókörnyezet nem található
A .NET-eszközök keretrendszerfüggő alkalmazások, ami azt jelenti, hogy a számítógépen telepített .NET-futtatókörnyezetre támaszkodnak. Ha a várt futtatókörnyezet nem található, a normál .NET-futtatókörnyezeti roll-forward szabályokat követik, például:
- Az alkalmazás a megadott fő- és alverzió legmagasabb patch kiadására kerül.
- Ha nincs egyező futtatókörnyezet egyező fő- és alverziószámmal, a rendszer a következő magasabb alverziót használja.
- Az előretekerés nem történik meg a futtatókörnyezet előzetes verziói, illetve az előzetes verziók és a kiadási verziók között. Ezért az előzetes verziókkal létrehozott .NET-eszközöket újra kell létrehoznia és újra közzé kell tennie a szerzőnek, és újra kell telepítenie.
Az előretekerés alapértelmezés szerint nem történik meg két gyakori forgatókönyvben:
- Csak a futtatókörnyezet alacsonyabb verziói érhetők el. Az előretekerés csak a futtatókörnyezet későbbi verzióit jelöli ki.
- Csak a futtatókörnyezet magasabb főverziói érhetők el. Az előretekerés nem lépi át a főverzió határait.
Ha egy alkalmazás nem talál megfelelő futtatókörnyezetet, nem fut, és hibát jelez.
Az alábbi parancsok egyikével megtudhatja, hogy mely .NET-futtatókörnyezetek vannak telepítve a számítógépen:
dotnet --list-runtimes
dotnet --info
Ha úgy gondolja, hogy az eszköznek támogatnia kell a telepített futtatókörnyezeti verziót, forduljon az eszköz szerzőjéhez, és ellenőrizze, hogy frissíthetik-e a verziószámot vagy a többpéldányos verziót. Miután újra lefordították és újra közzétették az eszközcsomagot a NuGetben egy frissített verziószámmal, frissítheti a másolatot. Bár ez nem történik meg, a leggyorsabb megoldás a futtatókörnyezet olyan verziójának telepítése, amely a futtatni kívánt eszközzel működik. Egy adott .NET-futtatókörnyezeti verzió letöltéséhez látogasson el a .NET letöltési oldalára.
Ha a .NET SDK-t nem alapértelmezett helyre telepíti, a környezeti változót DOTNET_ROOT
a végrehajtható fájlt tartalmazó dotnet
könyvtárra kell beállítania.
A .NET-eszköz telepítése sikertelen
A .NET globális vagy helyi eszköz telepítése több okból is meghiúsulhat. Ha az eszköz telepítése sikertelen, az alábbihoz hasonló üzenet jelenik meg:
Tool '{0}' failed to install. This failure may have been caused by:
* You are attempting to install a preview release and did not use the --version option to specify the version.
* A package by this name was found, but it was not a .NET tool.
* The required NuGet feed cannot be accessed, perhaps because of an Internet connection problem.
* You mistyped the name of the tool.
For more reasons, including package naming enforcement, visit https://aka.ms/failure-installing-tool
A hibák diagnosztizálásához a NuGet-üzenetek közvetlenül a felhasználó számára jelennek meg az előző üzenettel együtt. A NuGet-üzenet segíthet a probléma azonosításában.
- Csomagelnevezési kényszerítés
- Előzetes kiadások
- A csomag nem .NET-eszköz
- A NuGet-hírcsatorna nem érhető el
- A csomagazonosító helytelen
- 401 (Jogosulatlan)
Csomagelnevezési kényszerítés
A Microsoft módosította az eszközök csomagazonosítójára vonatkozó útmutatóját, így számos eszköz nem található az előrejelzett névvel. Az új útmutató az, hogy az összes Microsoft-eszköz előtagja a "Microsoft" lesz. Ez az előtag fenntartott, és csak a Microsoft által hitelesített tanúsítvánnyal aláírt csomagokhoz használható.
Az áttűnés során egyes Microsoft-eszközök a csomagazonosító régi formájával, míg mások az új űrlappal rendelkeznek:
dotnet tool install -g Microsoft.<toolName>
dotnet tool install -g <toolName>
A csomagazonosítók frissítése során a legújabb frissítések beszerzéséhez át kell váltania az új csomagazonosítóra. Az egyszerűsített eszköznévvel rendelkező csomagok elavultak lesznek.
Előzetes verziók
- Megkísérli telepíteni az előzetes verziójú kiadást, és nem adta meg a
--version
verziót.
Az előzetes verzióban lévő .NET-eszközöket a név egy részével kell megadni, hogy jelezzék, hogy előzetes verzióban vannak. Nem kell a teljes előnézetet belefoglalnia. Feltételezve, hogy a verziószámok a várt formátumban vannak, az alábbi példához hasonlót használhat:
dotnet tool install -g --version 1.1.0-pre <toolName>
A csomag nem .NET-eszköz
- Egy Ilyen nevű NuGet-csomag található, de nem .NET-eszköz volt.
Ha olyan NuGet-csomagot próbál telepíteni, amely normál NuGet-csomag, és nem .NET-eszköz, az alábbihoz hasonló hibaüzenet jelenik meg:
NU1212: Érvénytelen projektcsomag kombináció a következőhöz
<toolName>
: . A DotnetToolReference projektstílus csak DotnetTool típusú hivatkozásokat tartalmazhat.
A NuGet-hírcsatorna nem érhető el
- A szükséges NuGet-hírcsatorna nem érhető el, talán internetkapcsolati probléma miatt.
Az eszköztelepítéshez hozzá kell férnie az eszközcsomagot tartalmazó NuGet-hírcsatornához. Sikertelen, ha a hírcsatorna nem érhető el. Módosíthatja a hírcsatornákat egy adott nuget.config
fájllalnuget.config
, vagy további hírcsatornákat is megadhat a --add-source
kapcsolóval. Alapértelmezés szerint a NuGet hibát jelez minden olyan hírcsatorna esetében, amely nem tud csatlakozni. A jelölő --ignore-failed-sources
kihagyhatja ezeket a nem elérhető forrásokat.
A csomagazonosító helytelen
- Helytelenül írta be az eszköz nevét.
A hiba gyakori oka, hogy az eszköz neve nem helyes. Ez történhet helytelenül, vagy az eszköz áthelyezése vagy elavultsága miatt. Az NuGet.org eszközeinek egyik módja annak biztosítása, hogy a név helyes legyen, ha megkeresi az eszközt a NuGet.org, és másolja a telepítési parancsot.
401 (jogosulatlan)
Valószínűleg egy másik NuGet-hírcsatornát adott meg, és ez a hírcsatorna hitelesítést igényel. Ezt többféleképpen is megoldhatja:
Adja hozzá a paramétert,
--ignore-failed-sources
hogy megkerülje a hibát a privát hírcsatornából, és használja a nyilvános Microsoft-hírcsatornát.Ha egy eszközt a Microsoft NuGet-hírcsatornából telepít, az egyéni hírcsatorna ezt a hibát adja vissza, mielőtt a Microsoft NuGet-hírcsatornája eredményül ad vissza. A hiba megszakítja a kérést, és megszakítja a többi függőben lévő hírcsatorna-kérést, amely lehet a Microsoft NuGet-csatornája. A
--ignore-failed-sources
beállítás hozzáadása miatt a parancs figyelmeztetésként kezeli ezt a hibát, és lehetővé teszi, hogy más hírcsatornák feldolgozzák a kérést.dotnet tool install -g --ignore-failed-sources <toolName>
Kényszerítse a Microsoft NuGet-hírcsatornát a
--add-source
paraméterrel.Előfordulhat, hogy a globális vagy helyi NuGet-konfigurációs fájlból hiányzik a nyilvános Microsoft NuGet-hírcsatorna. Használja a hibás hírcsatorna és
--ignore-failed-sources
a--add-source
paraméterek kombinációját, és támaszkodjon a nyilvános Microsoft-hírcsatornára.dotnet tool install -g --add-source 'https://api.nuget.org/v3/index.json' --ignore-failed-sources <toolName>
Használjon egyéni NuGet-konfigurációt,
--configfile <FILE>
paramétert.Hozzon létre egy helyi nuget.config fájlt csak a nyilvános Microsoft NuGet-hírcsatornával, és hivatkozzon rá a
--configfile
következő paraméterrel:dotnet tool install -g --configfile "./nuget.config" <toolName>
Íme egy példa konfigurációs fájl:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> </packageSources> </configuration>
További információ: nuget.config reference
Adja hozzá a szükséges hitelesítő adatokat a konfigurációs fájlhoz.
Ha tudja, hogy a csomag megtalálható a konfigurált hírcsatornában, adja meg a bejelentkezési hitelesítő adatokat a NuGet konfigurációs fájljában. A nuget-konfigurációs fájlok hitelesítő adataival kapcsolatos további információkért tekintse meg a nuget.config referencia packageSourceCredentials szakaszát.
Kapcsolódó információk
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: