文档(here和here)明显缺乏有关如何解决模块中引用的信息:
参考决议
(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
文件夹?
答案 0 :(得分:1)
为了让Orchard使用您的自定义模块,您需要将它放在路径上:your_web_application_path / Modules / your_custom_module,我们使用sym链接来实现它。
然后您的主模块(Web应用程序)应该看到您的自定义模块。如果要将新模块添加到现有的orchard应用程序,则可能需要从管理面板/模块菜单中手动启用它。对于新安装,您可以向配方添加功能启用指令,并将相关性添加到main module.txt文件中(假设您希望模块始终打开)。
另一个麻烦的拍摄提示: