【问题标题】:Can the default location of an Orchard CMS module be changed?Orchard CMS 模块的默认位置可以更改吗?
【发布时间】:2011-12-13 15:14:43
【问题描述】:

我正在建立一个 Orchard CMS 项目,目的是创建一个模块来容纳我的 MVC 3 应用程序。此应用程序已经启动并且已经有 5 个项目。一个 Web 项目、一些测试项目和一个工作流项目。

要求 web 项目(以及其他 4 个为简单起见的项目)位于 /Orchard.Web/Modules/ 中是一个小不便 - 动态加载时是否可以更改 Orchard 的外观(或添加新位置)模块?

这不是什么大不了的事,但对这个项目来说是一件好事。

在一个理想的世界里,我能够拥有:

/OrchardStuff/Orchard.Web
/OrchardStuff/etc
/MyStuff/MyProj.Web
/MyStuff/MyProj.Tests

我知道我可以以一种很好的可用方式安排我的 sln,如果我可以在文件系统中复制它会很好。

干杯。

【问题讨论】:

    标签: orchardcms


    【解决方案1】:

    在您的 Web 项目中添加 afterBuild 任务以将应用程序复制到 Orchard 的模块目录不是更容易吗?

    csproj 文件中的类似内容可以解决问题(有点,我不完全确定我的语法。:'()

    <Target Name="AfterBuild">
      <ItemGroup>
      <AppFiles Include="**\*.*"/>
      </ItemGroup>
      <Copy SourceFiles="@(AppFiles)"
            DestinationFiles="@(AppFiles->'..\OrchardStuff\Orchard.Web\Modules\MyModule\%(RecursiveDir)%(Filename)%(Extension)')" />
    
    </Target>
    

    MSDN 文档在这里:http://msdn.microsoft.com/en-us/library/3e54c37h.aspx

    【讨论】:

      【解决方案2】:

      我使用的解决方案是在构建后操作中添加以下行:

      if not exist "$(SolutionDir)..\Orchard\src\Orchard.Web\Modules\$(ProjectName)" mklink /D "$(SolutionDir)..\Orchard\src\Orchard.Web\Modules\$(ProjectName)" ""$(ProjectDir)"
      

      此命令会在 Orchard 的 Modules 文件夹中创建您的 dev 文件夹的符号链接(仅当此类符号链接尚不存在时)。

      与@Eilistraee 的回答相比,它具有以下优势:

      1. 如果您在开发机器中更改 Javascript/CSS 文件,则无需构建项目即可将更改导入 Orchard。
      2. 您的驱动器上没有重复文件
      3. 构建后是一个更明确的选项,宏变量可以轻松复制到任何新模块。

      【讨论】:

        【解决方案3】:

        不,如果不付出一些重大努力,这是不可能的。不值得。

        【讨论】:

        • 感谢您的快速响应 - 您是否发现 Eilistraee 的上述想法有任何问题?
        • Eilistraee 的想法是已经在 Orchard.Azure 解决方案中使用的想法:在那里,模块需要位于 Orchard.Azure.Web/Modules 文件夹中,因此它们是从 Azure.Web/Modules 复制的在编译任务中。它在那里工作,所以它也应该适用于你的情况:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-29
        • 1970-01-01
        • 1970-01-01
        • 2015-06-18
        • 2012-08-12
        相关资源
        最近更新 更多