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

7
文档(这里这里)明显缺少有关模块中引用解析的信息:

引用解析

(TODO: 通过查看csproj文件中的“References”部分以及查看每个模块“bin”目录中放置的其他程序集二进制文件来解析Orchard如何找出引用)

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

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

因此,我的问题是:Orchard对模块引用做了什么,我需要特别注意什么才能使Orchard获取我的模块的引用? 编辑: 可以在此博客文章及其评论中找到更好的信息。 但是,我的自定义程序集已经存在于src\Orchard.Web\App_Data\Dependencies中,但我仍然收到错误。 编辑2: 我们在lib文件夹中有一个自定义DLL的副本,因此我尝试引用该DLL(因为我们还有另一个成功引用它的模块),但仍然没有改变。 编辑3: 关于前两个编辑,它没有从lib文件夹复制到App_Data\Dependencies文件夹。 我刚刚将一个新的DLL添加到lib文件夹并进行了引用,但它没有出现在Dependencies文件夹中。 我认为当前的Custom.dll没有替换那里的文件,这就是为什么我会收到错误的原因。 但是为什么Orchard不会复制到Dependencies文件夹呢?
1个回答

1
为了让Orchard使用您的自定义模块,您需要将其放在路径上:your_web_application_path/Modules/your_custom_module,我们使用符号链接来实现这一点。
然后,您的主模块(Web应用程序)应该看到您的自定义模块。如果您要向现有的Orchard应用程序添加新模块,则可能需要手动从管理面板/模块菜单启用它。对于新安装,您可以向配方中添加功能启用指令,并将依赖项添加到主模块.txt文件中(假设您希望始终使用您的模块)。
另外一些故障排除提示:
- 确保您的模块构建路径设置为bin/文件夹(而不是某些bin/debug等)。 - 确保您的模块确实是Orchard模块(具有module.txt文件),并且在管理面板/模块中可见。 - 确保已启用它,默认情况下禁用新模块。 - 确保所引用的库是从静态文件夹引用的,我的意思是不是从像bin这样的文件夹引用的,在重建期间会清理掉。

一旦我们将引用的DLL(位于静态文件夹中)移动到“Dependencies”文件夹中,该模块就会正常显示和工作。(该模块已放置在正确位置 - 我使用orchard命令行创建了它。) - zimdanen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接