2015-05-16 6 views
8

Ho appena eseguito uno dei miei progetti e ho utilizzato un po 'di nuove funzionalità del C# 6 come l'operatore di propagazione null handler?.Invoke(null, e), che viene creato in Visual Studio. Tuttavia, quando ho eseguito il mio script di pubblicare i pacchetti NuGet, ricevo errori di compilazione dicendo:NuGet Pack - Il costruttore sembra non capire C# 6.0

EventName.cs(14,66): error CS1056: Unexpected character '$' 
EventName.cs(69,68): error CS1519: Invalid token '=' in class, struct, or interface member declaration 
EventName.cs(69,74): error CS1520: Method must have a return type 

Sembrerebbe NuGet sta usando una vecchia versione del compilatore, ma mi chiedevo se qualcuno conosceva un lavoro in giro o configurazione che potrebbe essere impostata per risolvere il problema.

+0

NuGet non deve compilare nulla. La mia ipotesi sarebbe che il problema è nella tua sceneggiatura. – svick

+0

@svick Lo script è rimasto invariato, l'unica modifica è stata l'utilizzo delle funzionalità di C# 6.0. Non esitate a controllare la sceneggiatura stessa, ma è sufficiente chiamare la nuget CLI - https://github.com/G3N7/LAN.Core.Eventing/blob/master/NugetBuild.cmd – Gent

+1

Spiacente, non ero a conoscenza del ' Opzione "Costruttore" (e in qualche modo è mancato nel titolo). Penso che una soluzione alternativa sarebbe non usarlo. – svick

risposta

2

Sembra che tu abbia trovato anche questo bug nel Nuget che non è ancora risolto: https://github.com/NuGet/Home/issues/1107

È possibile utilizzare la seguente soluzione:

  1. Modificare lo script per costruire il vostro progetto utilizzando corretta versione di MSBuild - basta chiamare il numero MSBuild.exe, fornire il percorso del file csproj o sln e creare il progetto in una configurazione corretta.

  2. Creare un file nuspec che descrive il pacchetto (https://docs.nuget.org/create/nuspec-reference). Puoi usare l'app Nuget Package Explorer. Utilizzare le DLL prodotte nel passaggio 1.

  3. Utilizzare nuget pack mypackage.nuspec per creare il pacchetto.

+0

Il problema di Github di cui sopra è stato risolto, ora è possibile specificare quale versione di MSBuild utilizzare. Grazie mille per questa informazione! – Gent