vslangproj80 una swiplcs puede operacion newtonsoft ensamblado dependencias cargar archivo admitida c# .net azure

c# - swiplcs - Azure SDK 2.2 en producción: no se pudo cargar el archivo o ensamblado ''msshrtmi'' o una de sus dependencias. El sistema no puede encontrar el archivo especificado



no se puede cargar el archivo o ensamblado telerik web ui (6)

Creo que no es necesario cambiar "Para cada rol web y proyecto de rol de trabajador, configure la plataforma para x64 y elimine la plataforma de cualquier solución de CPU".

Parte importante es establecer todos los ensamblados de Azure SDK y cualquier Dlls de terceros que no formen parte de .NET framework para marcarlos como CopyLocal = true; Esto resolvió mi problema. Y para obtener más información sobre errores, siga revisando los registros de eventos de la máquina virtual Azure en la sección Evento de Azure. Esto le dará una idea de cuál podría ser el motivo posible de su error de compilación o cualquier otro error no controlado durante el inicio de la aplicación.

He leído sobre este problema en varios otros hilos tanto en StackOverflow como en otros sitios. Ninguna de las otras soluciones ha resuelto mi problema y la mayoría están desactualizadas, haciendo referencia a las versiones anteriores de Azure SDK.

Tengo un rol de sitio web típico de Azure implementado en Azure que usa Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener para registrar mensajes de seguimiento. Cuando se produce el seguimiento, parece que DiagnosticMonitorTraceListener está utilizando la clase RoleEnvironment , que a su vez intenta cargar el aparentemente inexistente msshrtmi.dll . Aquí hay una parte del seguimiento de la pila que se está registrando en el sistema de archivos en Azure:

[FileNotFoundException: Could not load file or assembly 'msshrtmi, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.] Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeEnvironment() +0 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment..cctor() +747 [TypeInitializationException: The type initializer for 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' threw an exception.] Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.get_IsAvailable() +0 Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.GetDefaultStartupInfoForCurrentRoleInstance() +23 Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener..ctor() +34 [ConfigurationErrorsException: Could not create Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.] System.Diagnostics.TraceUtils.GetRuntimeObject(String className, Type baseType, String initializeData) +9004943 System.Diagnostics.TypedElement.BaseGetRuntimeObject() +110 System.Diagnostics.ListenerElement.GetRuntimeObject() +989 System.Diagnostics.ListenerElementsCollection.GetRuntimeObject() +252 System.Diagnostics.TraceInternal.get_Listeners() +331 System.Diagnostics.TraceInternal.WriteLine(String message) +161 Microsoft.WindowsAzure.AzureApplicationSettings..ctor() +437 Microsoft.WindowsAzure.CloudConfigurationManager.get_AppSettings() +137 Microsoft.WindowsAzure.CloudConfigurationManager.GetSetting(String name) +27 TankSoft.EverMarket.EverMarketPrereleaseRole.Endpoints.Api.Notify..ctor() +40 lambda_method(Closure , Object[] ) +60 Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate() +315

Varios hilos han mencionado cómo debo limpiar esta DLL desde mi carpeta bin, pero la DLL no se está copiando desde el principio. Sospecho que esto tiene que ver conmigo corriendo bajo Azure SDK 2.2 y no 1.x. Me doy cuenta de que puedo hacer referencia a la DLL directamente, pero creo que no debería tener que hacer esto para implementar lo que es un proyecto bastante normal para Azure. ¿Por qué Microsoft no detecta automáticamente que mi proyecto requiere este archivo y despliega el archivo correcto para mí? Esto es enloquecedor.

Permítanme también decir que el proyecto que estoy publicando no es un Servicio en la Nube, sino más bien un proyecto regular de Azure.

¿Alguien que ejecuta Azure SDK 2.x logró resolver este problema? ¿Cuáles fueron los pasos exactos que siguió?


Desinstale todas las otras versiones de Azure SDK y asegúrese de tener la última versión.

Este es un conflicto común que hace que Visual Studio haga referencia a parte de Microsoft.WindowsAzure.ServiceRuntime (en este caso, msshrtmi.dll) a una versión anterior del SDK.


Encontré este mismo error al publicar una aplicación web. Después de probar cada otra solución anterior, lo siguiente finalmente funcionó para mí:

En Azure Portal, seleccione su aplicación web. Seleccione ''Configuración> Configuración de la aplicación''. Cambie el valor de la plataforma de 32 bits a 64 bits. Republicar.


Esto parece un truco, pero era la única forma en que podía pensar para resolver este problema.

  1. Abra Configuration Manager para la solución
  2. Seleccione la configuración de la solución Debug
  3. Crea una nueva plataforma de solución para x64
  4. Para cada rol web y proyecto de rol de trabajador, configure la plataforma como x64
  5. Elimine la plataforma de cualquier solución de CPU
  6. Haga los mismos cambios en la configuración de Release
  7. Agregue una referencia a C:/Program Files/Microsoft SDKs/Windows Azure/.NET SDK/v2.2/bin/runtimes/base/x64/msshrtmi.dll
  8. Establezca Copy Local en la nueva referencia a True

EDITAR : terminé eliminando el código que estaba verificando RoleEnvironment; en cambio, estoy confiando en las transformaciones de Web.config / App.config para modificar el comportamiento en el tiempo de ejecución. Esto elimina la dependencia de msshrtmi.dll.


He encontrado el mismo problema. Tengo Azure SDK 2.5 instalado en mi máquina, pero el proyecto se creó en SDK 2.2 y anteriormente se instaló SDK 2.2. El problema es que el SDK 2.2 se eliminó del GAC y su apuntando a 2.5. Por lo tanto, hice referencia a Microsoft.WindowsAzure.ServiceRuntime 2.2 y marqué como "Copiar a local = true", el ensamblado tiene dependencias en "msshrtmi.dll", así que puse el evento postbuild en mi proyecto. Por lo tanto, se copiará "msshrtmi.dll".

Recuerde, no necesita hacer referencia a "msshrtmi.dll".

Espero que esto sea de ayuda.


También estoy usando SDK 2.2 y estoy implementando un sitio web usando Visual Studio 2013. En proyectos anteriores, tenía las siguientes líneas en mi línea de comando de eventos Postbuild:

cd $(OutDir) del msshrtmi.dll

Pero esto ya no resuelve mi problema. El dll ya no se está copiando en la carpeta bin.