我想实现Orchard IShapeTableProvider,
,以便为主List
形状添加替代。我做了以下事情:
下载Orchard.Source.1.8.zip,在VS 2013中构建,并通过代码生成创建一个新主题:
orchard.exe
feature enable Orchard.CodeGeneration
codegen theme My.FirstTheme
theme enable My.FirstTheme
在主题>中将以下代码添加到我的主题中My.FirstTheme>代码> ListShapeProvider.cs文件。
namespace Themes.My.FirstTheme.Code
{
using Orchard.Autoroute.Models;
using Orchard.ContentManagement;
using Orchard.DisplayManagement.Descriptors;
public class ListShapeProvider : IShapeTableProvider
{
public void Discover(ShapeTableBuilder builder)
{
System.Diagnostics.Debugger.Break(); // * not hit
}
}
}
清理并构建Orchard解决方案,然后调试Orchard.Web。调试器没有命中System.Diagnostics.Debugger.Break()。
我读过Orchard的仁慈独裁者Orchard shapeshifting。
此外,我已经安装,构建并运行Contoso主题作为IShapeTableProvider
的示例实现。 IShapeTableProvider
的实现位于ContentShapeProvider.cs文件中。 Contoso主题还包括一个Contoso.csproj文件,该文件将ContentShapeProvider.cs文件作为编译项。
<ItemGroup>
<Compile Include="Code\ContentShapeProvider.cs" />
</ItemGroup>
我创建的新主题没有.csproj文件。我认为缺少的.csproj文件解释了为什么我的ListShapeProvider.cs断点没有执行。
我应该为我的主题创建一个.csproj文件吗?是否有另一种推荐的方式在主题中包含C#?例如,我应该使用App_Code文件夹吗?
答案 0 :(得分:1)
在Orchard.exe代码生成中,添加/CreateProject:true
。这将为您生成.csproj文件。例如。
orchard.exe
feature enable Orchard.CodeGeneration
codegen theme My.FirstTheme /CreateProject:true
theme enable My.FirstTheme
现在,当您添加ListShapeProvider.cs文件时,Visual Studio将自动作为My.FirstTheme.csproj文件的以下条目。
<ItemGroup>
<Compile Include="ListShapeProvider.cs" />
</ItemGroup>
答案 1 :(得分:0)
您也可以在/IncludeInsolution:true
中添加codegen theme My.FirstTheme /CreateProject:true
它将在主题顶级文件夹下添加您的主题项目。