在生产环境中设置NSASS?

时间:2014-04-07 09:31:21

标签: dll sass assemblies fuslogvw

我们正在使用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指向正确的文件夹。不确定是否有任何更改CurrentDomain从我记录的Application_Start,直到NSASS文件的程序集加载。

另外值得注意的是。这是一个EPiServer网站,因此不确定EPiServer是否会发生任何变化。但是,如果是这样,那么Dev环境中的问题也是如此?

2 个答案:

答案 0 :(得分:4)

我终于找到了问题!

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

所以安装完毕后一切正常!

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

答案 1 :(得分:0)

我们遇到了同样的问题,但修复最终成了两件事。

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

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