2016-10-20 4 views
3

Ich habe versucht, die Grundlagen der Programmierung für .NET Core mit den .NET Core CLI-Tools zu lernen. Ich habe die .NET-Core-SDK für Windows, Version 1.0.1 und befolgte die einfachen Anweisungen auf der Download-Seite (https://www.microsoft.com/net/core#windows):Fehler beim Erstellen der Standard .NET Core Console-Anwendung für das gesamte .NET-Framework 4.6.2

mkdir hwapp 
cd hwapp 
dotnet new 
dotnet restore 
dotnet run 

Dies kompiliert und läuft auf meinem Windows 10, X 64 Maschine in Ordnung.

Ich bekomme Probleme, wenn ich versuche, das .NET Framework 4.6.2 in der gleichen Anwendung zu targetieren. Von dem, was ich gelesen habe, soll ich nur einen Knoten mit Mehrwert „net462“ unter dem „Rahmen“ Knoten:

{ 
    "net462": {} 
} 

Doch nach diesen Knoten hinzufügen, läuft die Dotnet wiederherstellen und dann der Dotnet build CLI Befehle, erhalte ich folgende Fehlermeldung:

Project hwapp (.NETFramework,Version=v4.6.2) will be compiled because expected outputs are missing 
Compiling hwapp for .NETFramework,Version=v4.6.2 
C:\Program Files\dotnet\dotnet.exe compile-csc @C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.rsp returned Exit Code 1 
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(2,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?) 
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(3,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?) 
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(4,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?) 
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(5,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?) 
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(2,58): error CS0518: Predefined type 'System.String' is not defined or imported 
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(3,54): error CS0518: Predefined type 'System.String' is not defined or imported 
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(4,67): error CS0518: Predefined type 'System.String' is not defined or imported 
C:\Development\dotNet\hwapp\obj\Debug\net462\dotnet-compile.assemblyinfo.cs(5,62): error CS0518: Predefined type 'System.String' is not defined or imported 
C:\Development\dotNet\hwapp\Program.cs(1,7): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?) 
C:\Development\dotNet\hwapp\Program.cs(5,18): error CS0518: Predefined type 'System.Object' is not defined or imported 
C:\Development\dotNet\hwapp\Program.cs(7,33): error CS0518: Predefined type 'System.String' is not defined or imported 
C:\Development\dotNet\hwapp\Program.cs(7,23): error CS0518: Predefined type 'System.Void' is not defined or imported 

Compilation failed. 
    0 Warning(s) 
    12 Error(s) 

Wie Sie aus der Ausgabe lesen können, wenn Sie das .NET Framework 4.6.2 Targeting, der Compiler scheint nicht in der Lage sein, die System-Namespace zu finden. Derselbe Fehler tritt auf, wenn ich versuche, frühere .NET Frameworks wie 4.6.1 und 4.5.2 zu targetieren.

Ich habe versucht, eine Kopie der x64-Version von System.dll und mscorlib.dll vom GAC in das Verzeichnis C: \ Programme \ dotnet \ zu verschieben, damit das Programm csc.exe den Namespace System mit Nein finden kann Erfolg.

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "debugType": "portable", 
    "emitEntryPoint": true 
    }, 
    "dependencies": {}, 
    "frameworks": { 
    "net462": {}, 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.1" 
     } 
     }, 
     "imports": "dnxcore50" 
    } 
    } 
} 

Jede Hilfe wäre sehr geschätzt:

Wenn es hilfreich wäre, bitte den Inhalt meiner project.json Datei unten zu finden!

+0

Ihr project.json funktioniert gut für mich. Haben Sie [.NET Framework 4.6.2 Developer Pack] (http://getdotnet.azurewebsites.net/target-dotnet-platforms.html) installiert? – svick

+0

Durch Installieren des .NET Framework 4.6.2 Developer Pack wurde das Problem behoben! Danke @svick! – PennTx

Antwort

2

Wenn Sie .Net 4.6.2 als Ziel verwenden möchten, müssen Sie .NET Framework 4.6.2 Developer Pack installieren.

+0

Diese Antwort funktionierte genau wie vorgeschrieben. Um das Problem ein wenig weiter voranzutreiben ... könnten Sie mir in Richtung einer Literatur zeigen, warum das Developer Pack installiert werden musste, damit die .NET Core App das .NET Framework 4.6.2 korrekt ansprechen kann ? Ich hatte diese .NET-Version bereits auf meinem Computer installiert. Was hat die Installation des Developer Packs so gemacht, dass C: \ Programme \ dotnet \ dotnet.exe compile-csc mit .NET Framework 4.6.2 funktionieren kann? – PennTx

+0

Nicht sicher, ob dies irgendwo dokumentiert ist, aber bei der Installation einer Version von .Net Framework erhalten Sie in der Regel nur die Laufzeitassemblys (die zum Ausführen von Anwendungen verwendet werden). Die verschiedenen Developer/Targetting-Pakete bieten Ihnen * Referenz-Assemblies * (zum Kompilieren von Code). – svick

+0

Das macht Sinn. Da ich versuche, auf einer neuen Maschine ohne Visual Studio zu entwickeln, waren meine anfänglichen Bemühungen aufgrund meiner falschen Erwartungen, die durch die Verwendung von Visual Studio, das die Bibliotheken zum Kompilieren von Code gegen verschiedene Versionen von .NET bereitstellt, verursacht wurden, zu wünschen übrig. – PennTx

Verwandte Themen