dnx web en ubuntu 14.04 lanza la excepción "System.Runtime.InteropServices.Marshal" (1.0.0-beta8)

Estoy siguiendo varias publicaciones de blog que muestran cómo tomar una aplicación ASP.NET Core 1.0 (anteriormente ASP.NET 5) y luego instalar los tiempos de ejecución correctos .net core para Linux, para que pueda ejecutar en Linux, específicamente en ubuntu 14.04 lts.

Tengo instaladas las herramientas principales de .net (dnvm y dnx), y tengo una aplicación ASP.NET que es solo la aplicación de plantilla estándar, y he creado un repositorio que lo contiene, y estoy tratando de ejecutarlo en mi sistema Ubuntu. La última herramienta de .Net y Visual Studio en Windows es 1.0.0-beta8, y también la tengo en mi cuadro de ubuntu, que informa que Mono-x64-1.0.0-beta8-15858 está instalado.

Cloné mi código fuente en el sistema ubuntu y ejecuté dnu restore, que tuvo éxito.

Desde la carpeta que contiene project.json, ejecutodnx web y entiendo esto:

Application startup exception: System.TypeLoadException: Could not load type 'System.Runtime.InteropServices.Marshal' from assembly 'System.Reflection.Metadata'.
  at System.Reflection.Internal.StreamMemoryBlockProvider.ReadMemoryBlockNoLock (System.IO.Stream stream, Boolean isFileStream, Int64 start, Int32 size) [0x00000] in <filename unknown>:0 
  at System.Reflection.PortableExecutable.PEReader..ctor (System.IO.Stream peStream, PEStreamOptions options, Nullable`1 sizeOpt) [0x00000] in <filename unknown>:0 
  at System.Reflection.PortableExecutable.PEReader..ctor (System.IO.Stream peStream, PEStreamOptions options) [0x00000] in <filename unknown>:0 
  at Microsoft.CodeAnalysis.ModuleMetadata.CreateFromStream (System.IO.Stream peStream, PEStreamOptions options) [0x00000] in <filename unknown>:0 
  at Microsoft.Dnx.Compilation.CSharp.MetadataReferenceExtensions.CreateAssemblyMetadata (IMetadataFileReference fileReference) [0x00000] in <filename unknown>:0 
  at Microsoft.Dnx.Compilation.CSharp.RoslynCompiler+<>c__DisplayClass8_0.<.ctor>b__1 (Microsoft.Dnx.Compilation.Caching.CacheContext ctx) [0x00000] in <filename unknown>:0 
  at Microsoft.Dnx.Compilation.Caching.CacheExtensions+<>c__DisplayClass0_0`1[Microsoft.CodeAnalysis.AssemblyMetadata].<Get>b__0 (Microsoft.Dnx.Compilation.Caching.CacheContext ctx) [0x00000] in <filename unknown>:0 
  at Microsoft.Dnx.Compilation.Caching.Cache.CreateEntry (System.Object k, System.Func`2 acquire) [0x00000] in <filename unknown>:0 
  at Microsoft.Dnx.Compilation.Caching.Cache+<>c__DisplayClass5_0.<AddEntry>b__0 () [0x00000] in <filename unknown>:0 
  at System.Lazy`1[Microsoft.Dnx.Compilation.Caching.Cache+CacheEntry].InitValue () [0x00000] in <filename unknown>:0 

¿Esto indica que hay versiones conflictivas de componentes o que falta algo en mi carpeta .dnx o que hay algo mal en el código fuente de mi proyecto?

Al principio, vi otra extraña excepción, que creo que tenía algo que ver con una versión "1.0.0-rc2" de dnvm que fue visible brevemente en servidores públicos hoy, y luego desapareció.

Algunos pasos generales de configuración:

Inspeccione ~ / .config / NuGet / NuGet.Config, debería ser así:

.

<configuration>
  <packageSources>
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnetbeta8/api/v2/" />
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </packageSources>
  <disabledPackageSources />
</configuration>

Asegúrese de que los binarios dnx y dnu y dnvm estén presentes y actualizados. Asegúrese de que libuv exista y sea la versión correcta. Instale tiempos de ejecución si no están presentes. (Verifíquelos con la lista dnvm, use dnvm install para instalar).

Clona tus fuentes.

Seleccione una versión dnx mediante el uso de dnvm.

Asegúrese de que sus paquetes de tiempo de ejecución dnx a nivel de cuenta de usuario se restauran mediante dnu restore.

??¿¿Qué??

Vaya a la carpeta que contiene project.json y ejecutednx web. ¿Éxito?

Actualización: si uso dnvm uso 1.0.0-beta8 en ubuntu 14.04, la falla de tiempo de ejecución web dnx puede serMissing method AllocHGlobal in assembly /home/user/.dnx/runtimes/dnx-mono.1.0.0-beta8/bin/System.Reflection.Metadata.dll, type System.Runtime.InteropServices.Marshal o puede ser System.Runtime.InteropServices.Marshall en el título.

Actualización 2: cuando tenía el contenido incorrecto en NuGet.Config, estaba viendo algunas compilaciones de canales de desarrollador (internos no publicados).

Salida actual de la lista dnvm:

me@mabox:~$ dnvm list

Active Version              Runtime Architecture OperatingSystem Alias
------ -------              ------- ------------ --------------- -----
       1.0.0-beta7          mono                 linux/osx
  *    1.0.0-beta8          mono                 linux/osx       default

Actualización 3: una vez que instalé el tipo de tiempo de ejecución de coreclr, este problema desapareció. Una vez que está instalado, la lista dnvm se ve así:

Active Version              Runtime Architecture OperatingSystem Alias
------ -------              ------- ------------ --------------- -----
  *    1.0.0-beta8          coreclr x64          linux
       1.0.0-beta8          mono                 linux/osx       default

Actualización 4: Ambas respuestas a continuación contienen información esencial. Un error que cometí fue asumir que las antiguas versiones mono-2.x que se incluyen en los repositorios apt-get de Ubuntu 14.04 son aceptables para el uso de DNX. No son, en cambio, a partir de la fecha en que escribo esto, solo se sabe que funcionan las versiones nocturnas mono-2015.11.xx recientes. En algún momento en el futuro, una vez que se lance una versión 4.3.0+ estable, probablemente la usará con DNX, pero no puedo decir con certeza.

Respuestas a la pregunta(2)

Su respuesta a la pregunta