5

我们正在使用 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 的 bin 加载代码: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 更改 CurrentDomain,直到 NSASS 文件的程序集加载。

也值得注意。这是一个 EPiServer 网络,所以不确定 EPiServer 是否有任何改变。但如果是这样,开发环境中的问题也不应该是这样吗?

4

2 回答 2

6

我终于找到了问题!

在使用 DependencyWalker 分析 NSASS 的 dll 后,我发现服务器没有正确版本的 C++ Redistriburable。

所以安装后一切正常!

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

于 2014-04-28T07:20:50.830 回答
0

我们有同样的问题,但修复最终是两件事。

  1. 将 Visual Studio 2013 的 Visual C++ Redistributable Packages 安装到我们的服务器上。 可以在这里下载

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

于 2014-12-03T07:33:08.677 回答