2016-06-30 16 views
7

(Domanda sottotitolo: sono risorse non supportato in .netstandard 1.3 o è il mio file di progetto appena incasinato?)Perché non posso utilizzare le risorse incorporate (resx) durante il targeting .netstandard 1.3?

Ho appena creato una libreria di classi portatile esempio in Visual Studio 2015 Update 3 e aggiunto un file di risorse di esempio. Inizialmente, il file project.json assomiglia a questo:

{ 
    "supports": { 
    "net46.app": {}, 
    "uwp.10.0.app": {}, 
    "dnxcore50.app": {} 
    }, 
    "dependencies": { 
    "Microsoft.NETCore": "5.0.0", 
    "Microsoft.NETCore.Portable.Compatibility": "1.0.0" 
    }, 
    "frameworks": { 
    "dotnet": { 
     "imports": "portable-net452+win81" 
    } 
    } 
} 

fine: No errori di compilazione!

Successivamente, ho utilizzato le proprietà del progetto per il target .NETStandard 1.3.

portable class library target

Ora project.json assomiglia a questo:

{ 
    "supports": {}, 
    "dependencies": { 
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1", 
    "NETStandard.Library": "1.6.0" 
    }, 
    "frameworks": { 
    "netstandard1.3": {} 
    } 
} 

Ora ho il seguente costruire errore - che in pratica significa l'azione di costruzione EmbeddedRessource non è supportata:

german error

Non sono davvero esperto con project.json, ma per me le cose sembrano incoerenti - e non ho idea di dove sia il problema.

  • nel primo project.json: se io sostengo net46, perché è importando net452?
  • nel secondo project.json: se utilizzo netstandard1.3, perché esiste una dipendenza della libreria nella versione 1.6?
  • e infine, che cos'è .NETPortable, Version=v5.0? La modifica del nome di .NET Core ha avuto luogo all'inizio di quest'anno - perché ci riferiamo ancora alla versione 5.0? Anche MSDN non sa <TargetFrameworkVersion>5.0</TargetFrameworkVersion> che è specificato nel csproj

Per me, questo mi sembra netstandard non riguarda solo le librerie disponibili, utensili sembra coinvolto, anche. Ma questo non spiega, perché ha funzionato per dnxcore50.

+0

ho il sospetto che questo ha qualcosa a che fare con il fatto che le applicazioni Windows universali non usano 'resx 'file. Ma: le applicazioni universali di Windows sono compatibili con 'netstandard 1.4' e superiori ... – ventiseis

+0

hai ragione sulla parte resx, ma gli UWP sono effettivamente compatibili con' netstandard1.4' e inferiori non più alti. – nawfal

+1

Hai ragione, ho guardato [la matrice] (https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md) e frainteso le frecce. Ma è anche scritto lì: _Se una libreria è stata progettata per .NET Platform Standard versione 1.3, può funzionare solo su .NET Framework 4.6 o versioni successive, .NET Core, Universal Windows Platform 10 (UWP) e piattaforme Mono/Xamarin ._ – ventiseis

risposta

5

È necessario Diagonstics.Tools and Resources.ResourceManager.

Ho ottenuto questo lavoro (per .NETStandard 1.4 però) installando i pre versioni, in questo momento:

  • "System.Diagnostics.Tools": "4.3.0-preview1-24530- 04"
  • 'System.Resources.ResourceManager': '4.3.0-preview1-24530-04'
+0

Se provo di nuovo questo in un progetto VS 2015 pulito, nuovo e aggiornato, in realtà funziona, dopo aver installato il pacchetto 'System.Reflection.Emit.ILGeneration' nell'app UWP. Ma segnerò la tua risposta perché mi hai dato il suggerimento di installare pacchetti mancanti. – ventiseis

+1

Sembra che Microsoft abbia creato una nuova giungla di pacchetti compatibili e non compatibili, numeri di versione e dipendenze che non è molto facile da capire e da gestire se non sei un mago del nuovo mondo di .NET. Spero che questo sarà pulito e stabilizzato in futuro. – ventiseis

+2

Sono sicuro che lo farà e lieto di averlo capito –

Problemi correlati