2011-12-13 59 views
2

我正在创建一个Orchard CMS项目,目的是创建一个模块来容纳我的MVC 3应用程序。这个应用程序已经启动,已经有5个项目。一个Web项目,一些测试项目和一个工作流程项目。可以更改Orchard CMS模块的默认位置吗?

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

这不是一个大规模的交易,但对这个项目很有好处。

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

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

我知道我可以安排我的一个很好的方式使用SLN,将是很好,如果我可以在文件系统中复制此。

干杯。

回答

2

在您的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

0

。不,那是不可能没有一些重大的努力不值得

+0

感谢您的快速反应 - 您是否看到上述Eilistraee的想法存在任何问题? –

+0

Eilistraee的想法是已经在Orchard.Azure解决方案中使用的想法:在那里,模块需要位于Orchard.Azure.Web/Modules文件夹中,以便在comppilation任务中从Azure.Web/Modules中复制模块。它在那里工作,所以它也应该为你的情况:) – Falanwe

+0

伟大的,感谢您的反馈! –

1

我使用的添加以下行的解决方案生成后操作:

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文件在你的dev的机器,你不需要建项目,以获得变为果园。
  2. 你不会在你的驱动器上得到重复的文件
  3. 后构建是一个更明确的选项,宏变量可以很容易地复制到任何新的模块。