在生产环境中设置 NSASS



我们使用NSASS将我们的Sass文件编译为css ( https://github.com/TBAPI-0KA/NSass )。NSASS在开发环境中建立并运行良好。但是当我们尝试将其部署到我们的测试服务器时,我们无法启动并运行 NSASS。

我们不断得到

Exception information: 
Exception type: FileNotFoundException 
Exception message: Could not load file or assembly 'NSass.Wrapper.x64.dll' or one of its dependencies. The specified module could not be found.
   at NSass.SassCompiler..ctor()
   at NSass.SassHandler..ctor()

问题是NSASS使用某种动态的方式来加载这些dll,这似乎不起作用。dll 位于 \bin\NSass.Wrapper 中,但 fuslogvw 记录它只尝试搜索 bin 目录。加载此 dll 的动态方式是为了让它加载 x86 或 x64,具体取决于操作系统,如果我理解正确的话。

对于 NSASS 的箱加载代码:https://github.com/TBAPI-0KA/NSass/blob/master/NSass.Core/AssemblyResolver.cs

我尝试将 dll 文件(X64 和 x86)移动到 bin 文件夹,但即使 fuslogvw 说一切正常,我也会在事件查看器中查找相同的错误。

任何人都对我可以做些什么来尝试解决这个问题有任何提示吗?

编辑:尝试记录AppDomain.CurrentDomain.SetupInformation.PrivateBinPath,它指向bin文件夹,AppDomain.CurrentDomain.BaseDirectory也指向正确的文件夹。不确定是否有任何更改当前域从我登录Application_Start直到 NSASS 文件的程序集加载。

还值得一提。这是一个EPiServer网站,所以不确定EPiServer是否更改了任何内容。但是,如果是这样,那不是也是开发环境中的问题吗?

我终于找到了问题!

在使用DependencyWalker分析NSASS的dlls后,我发现服务器没有正确版本的C++可再发行组件。

因此,安装后一切正常!

希望这对其他人有同样的问题有帮助。

我们遇到了同样的问题,但修复结果是两件事。

  1. 将 Visual Studio 2013 的 Visual C++ 可再发行组件包安装到我们的服务器上。可以在这里下载

  2. 使用nuget将我们的编译器更改为libsass-net,它似乎与NSass(github)非常相似。

最新更新