2014-07-02 13 views
10

Sto provando a creare un'applicazione console in .NET vNext da Windows PowerShell. Finora ho aggiornato il pacchetto daCome eseguire l'applicazione vNext da Windows PowerShell?

KVM aggiornare

da cui ho ottenuto la versione del pacchetto "KRE-svr50-x86.1.0.0-alpha3-10070" e anche controllato il "alias" per conformare la versione.

Ora, ho scritto una console app contiene le righe seguenti:

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     Console.WriteLine("Why Soo serious!!!! "); 
    } 
} 

e Bramito project.json

{ 
    "dependencies": { 
    "System.Console": "4.0.0.0" 
    }, 
    "configurations": { 
    "net45": {}, 
    "k10": {} 
    } 
} 

E ora, ogni volta che provo a eseguire questo da Windows Poweshell elenca fuori mancante dll (in particolare namespace System) sotto l'output di build:
(entrambi i file json e cs nella stessa cartella quindi nessun errore relativo a json)

KPM accumulo

(1,12): l'errore CS0246: Il nome del tipo o dello spazio dei nomi 'sistema' non poteva trovato (Vi manca un un riferimento all'assembly direttiva using o?)

Come fare riferimento alla biblioteca. Per favore aiutami a trovare dove (cosa) mi manca e come risolverlo ...

risposta

12

Il tuo problema è legato alla configurazione di nuget.

Per vedere come funziona vai alla cartella project.json e fai un "kpm restore". si vedrà:

Impossibile individuare System.Console> = 4.0.0.0

Questa happends perché la KPM utilizza un repository pepita diverso e cioè: https://www.myget.org/F/aspnetvnext/

Questo repository non ha pacchetto NuGet per System.Console

Per risolvere questo problema è necessario un file NuGet.Config appena all'esterno della cartella project.json in cui verrà specificato il repository standard di nuget (per ottenere il pacchetto System.Console) e th e asp.net repository vnext in modo da poter ottenere i repository specifici di asp.net vnext.

Questo file dovrebbe essere simile a questa:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageSources> 
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/" /> 
    <add key="NuGet.org" value="https://nuget.org/api/v2/" /> 
    </packageSources> 
    <packageSourceCredentials> 
    <AspNetVNext> 
     <add key="Username" value="aspnetreadonly" /> 
     <add key="ClearTextPassword" value="4d8a2d9c-7b80-4162-9978-47e918c9658c" /> 
    </AspNetVNext> 
    </packageSourceCredentials> 
</configuration> 

Se vuoi anche per la struttura delle cartelle:

/ - root folder 
- NuGet.config 
- your project folder 
-- project.json 
-- source code files 

Dopo aver creato la struttura delle cartelle come esemplificato e mettere il NuGet.config in nel posto giusto fai un "ripristino di kpm" e vedrai che System.Console è stato risolto e quindi emettendo "kpm build" tutto sta funzionando correttamente

+0

Mi mancava il Nuget.config deve essere un bit di livello superiore. Non avrei mai immaginato che ... – jeffa00

+1

Risposta perfetta - come mai questo non è documentato altrove? –

+0

Ho avuto lo stesso identico problema e questa soluzione non mi è stata di alcun aiuto - Ricevo ancora 'Impossibile trovare il messaggio di errore System.Console> = 4.0.0.0' quando eseguo' kpm restore' –

7

Se sei ancora havi questo problema, e avevo meno di 10.10, prova a cambiare il tuo progetto.di file JSON a questo:

"dependencies": { 
    "System.Console": "4.0.0-beta-22210" 
}, 

(si badi bene, che dovrà essere aggiornato come è cambiato System.Console, ma almeno sarete in grado di compilare oggi).

+4

impostandolo su ** 3.9.9.9 ** può funzionare anche. almeno se lo fai, riceverai gli aggiornamenti man mano che vengono rilasciati. per qualsiasi motivo, 4.0.0-beta-22210 <4.0.0.0 a kpm. – mrBallistic

+1

ha funzionato per me su 'ubuntu 14.04' –

+0

Ho appena usato il modello dell'applicazione console yeoman di yeoman e il project.json generato specifica la seguente dipendenza" System.Console ":" 4.0.0-beta - * "'. Questa potrebbe essere un'opzione migliore man mano che i numeri di build avanzano. – Lou