5 Stimmen

Einen NSASS in der Produktionsumgebung einrichten?

Wir verwenden NSASS, um unsere Sass-Dateien in CSS zu kompilieren (https://github.com/TBAPI-0KA/NSass). NSASS ist eingerichtet und funktioniert hervorragend in der Entwicklungsumgebung. Aber wenn wir versuchen, es auf unseren Testserver zu deployen, können wir NSASS nicht zum Laufen bringen.

Wir erhalten immer

Ausnahmefehlerinformationen:
Ausnahmeart: FileNotFoundException
Ausnahmemeldung: Die Datei oder Assembly "NSass.Wrapper.x64.dll" oder eine Abhängigkeit davon wurde nicht gefunden. Das angegebene Modul wurde nicht gefunden.
   bei NSass.SassCompiler..ctor()
   bei NSass.SassHandler..ctor()

Das Problem ist, dass NSASS eine dynamische Methode zum Laden dieser DLLs verwendet, die anscheinend nicht funktioniert. Die DLL befindet sich im Verzeichnis \bin\NSass.Wrapper, aber fuslogvw protokolliert nur, dass es versucht, das bin-Verzeichnis zu durchsuchen. Die dynamische Art und Weise, diese DLL zu laden, ist so konzipiert, dass sie je nach Betriebssystem entweder die x86- oder x64-Version lädt, wenn ich das richtig verstehe.

Für den Code zum Laden des bin-Verzeichnisses von NSASS: https://github.com/TBAPI-0KA/NSass/blob/master/NSass.Core/AssemblyResolver.cs

Ich habe versucht, die DLL-Dateien (sowohl X64 als auch x86) in den bin-Ordner zu verschieben, aber ich erhalte denselben Fehler, wenn ich im Ereignisprotokoll nachschaue, auch wenn fuslogvw sagt, dass alles in Ordnung ist.

Hat jemand Tipps, was ich als nächsten Schritt tun kann, um dieses Problem zu lösen?

Bearbeiten: Habe versucht, AppDomain.CurrentDomain.SetupInformation.PrivateBinPath zu protokollieren, und es zeigt auf den bin-Ordner, wie es sollte, und AppDomain.CurrentDomain.BaseDirectory zeigt ebenfalls auf den richtigen Ordner. Bin mir nicht sicher, ob sich etwas am aktuellen Domänen-Setup ändert vom Application_Start, wo ich protokolliere, bis zur Assembly Load der NSASS-Dateien.

Auch erwähnenswert: Dies ist eine EPiServer-Webseite, also weiß nicht, ob EPiServer etwas ändert. Aber wenn ja, sollten nicht auch in der Entwicklungsumgebung Probleme auftreten?

6voto

JohanSellberg Punkte 2378

Ich habe endlich das Problem gefunden!

Nachdem ich DependencyWalker verwendet habe, um die dlls von NSASS zu analysieren, stellte ich fest, dass der Server nicht die richtige Version von C++ Redistributable hatte.

Also, nachdem ich das installiert habe, funktioniert alles einwandfrei!

Ich hoffe, das hilft anderen Personen mit dem gleichen Problem.

0voto

Dannyh Punkte 112

Wir hatten das gleiche Problem, aber die Lösung bestand letztendlich aus zwei Dingen.

  1. Installation von Visual C++ Redistributable Packages für Visual Studio 2013 auf unseren Servern. kann hier heruntergeladen werden

  2. Ändern unseres Compilers auf libsass-net mithilfe von nuget, es scheint sehr ähnlich zu NSass (github).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X