Orchard如何解析模块中的引用?

时间:2013-05-03 19:23:38

标签: orchardcms orchardcms-1.6

文档(herehere)明显缺乏有关如何解决模块中引用的信息:

  

参考决议

     

(TODO:解释Orchard如何通过查看csproj文件的“引用”部分以及查看每个模块“bin”目录中删除的其他程序集二进制文件来计算引用)

不幸的是,这正是我需要的信息。我创建了一个自定义模块,它引用了一个自定义的内部DLL。当我尝试使用此DLL中的类时,我得到以下异常:

  

无法从程序集“Custom,Version = [version],Culture = [culture],PublicKeyToken = [token]'加载”Custom.MyClass“类型。

所以,我的问题是:Orchard对模块引用做了什么,是否需要做些什么让Orchard拿起模块的引用呢?

编辑:在this blog post及其评论中可以找到更好的信息。但是,我的自定义程序集已存在于src\Orchard.Web\App_Data\Dependencies中,我仍然收到错误。

EDIT2 :我们在lib文件夹中有自定义DLL的副本,所以我尝试引用那个(因为我们有另一个成功完成的模块),但仍然没有变化。

EDIT3 ::在参考前两个编辑时,它不是从lib文件夹复制到App_Data\Dependencies文件夹。我刚刚在lib文件夹中添加了一个新的DLL并引用它,它没有出现在Dependencies文件夹中。我认为当前的Custom.dll并没有取代那里的那个,这就是我收到错误的原因。但是为什么Orchard没有复制到Dependencies文件夹?

1 个答案:

答案 0 :(得分:1)

为了让Orchard使用您的自定义模块,您需要将它放在路径上:your_web_application_path / Modules / your_custom_module,我们使用sym链接来实现它。

然后您的主模块(Web应用程序)应该看到您的自定义模块。如果要将新模块添加到现有的orchard应用程序,则可能需要从管理面板/模块菜单中手动启用它。对于新安装,您可以向配方添加功能启用指令,并将相关性添加到main module.txt文件中(假设您希望模块始终打开)。

另一个麻烦的拍摄提示:

  • 确保您的模块构建路径设置为bin /文件夹(不是某些bin / debug等。)
  • 确保您的模块真的是一个果园模块(有module.txt文件),并在管理面板/模块中看到
  • 确保已启用,默认情况下禁用新模块
  • 确保引用的库是从静态文件夹引用的,我的意思是不是像重建期间清理的bin那样