【问题标题】:Setting up NSASS in production environment?在生产环境中设置 NSASS?
【发布时间】:2014-04-07 09:31:21
【问题描述】:

我们正在使用 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 是否有任何改变。但是如果是这样的话,Dev 环境中不应该也有问题吗?

【问题讨论】:

    标签: dll sass assemblies fuslogvw


    【解决方案1】:

    我终于找到问题了!

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

    所以安装后一切正常!

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

    【讨论】:

    • 感谢您发布此信息。它需要哪个版本的 C++ Redistributable?谢谢
    • 有效!对我来说它需要 version 2012 所以我建议每个人都从尝试开始。如果仍然无法正常工作,请尝试安装所有其他版本,例如 2010 和 2013 或使用免费的DependencyWalker 工具并在该工具中打开 NSass.Wrapper.x64.dll。我从最后的手段开始,并没有失望。谢谢@swippen :)
    【解决方案2】:

    我们遇到了同样的问题,但最终解决了两件事。

    1. 将适用于 Visual Studio 2013 的 Visual C++ Redistributable Package 安装到我们的服务器上。 can be downloaded here

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

    【讨论】:

    猜你喜欢
    • 2011-04-14
    • 1970-01-01
    • 2023-04-09
    • 2015-05-30
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    相关资源
    最近更新 更多