使用代码生成模块在果园中创建新主题

时间:2016-10-01 08:35:23

标签: c# orchardcms

我正在关注此OrchardProject.net link的文档。我打开已激活CodeGeneration模块并在项目的根目录(Orchard.Web)上打开命令提示符并编写“bin / Orchard.exe”以运行命令。然后一切都很好。现在,当我尝试运行以下命令时,它给出了以下异常。命令是:

codegen theme mishrajiTheme / BasedOn:TheThemeMachine / CreateProject:true / IncludeInSolution:true

以下是命令的输出。

  

创建主题   mishrajiTheme

     

执行命令“codegen theme mishrajiTheme”

时出错      

指定的参数超出了有效值的范围。参数   name:startIndex

     

异常详细信息:System.ArgumentOutOfRangeException:已指定   参数超出了有效值的范围。参数名称:   的startIndex

     

堆栈追踪:

     

[ArgumentOutOfRangeException:指定的参数超出范围   有效值。参数名称:startIndex] at   System.String.Insert(Int32 startIndex,String value)at   Orchard.CodeGeneration.Commands.CodeGenerationCommands.AddToSolution(的TextWriter   output,String projectName,String projectGuid,String   containsFolder,String solutionFolderGuid)at   Orchard.CodeGeneration.Commands.CodeGenerationCommands.CreateThemeFromTemplates(的TextWriter   output,String themeName,String baseTheme,String projectGuid,   布尔includeInSolution)at   Orchard.CodeGeneration.Commands.CodeGenerationCommands.IntegrateTheme(字符串   themeName,String baseTheme)at   Orchard.CodeGeneration.Commands.CodeGenerationCommands.CreateTheme(字符串   THEMENAME)

     

我在这里做错了或者它是Orchard代码生成模块中的错误。 请指导。我正在使用Orchard 1.10版本。

2 个答案:

答案 0 :(得分:2)

我通过更改Orchard 1.10中第434行的CodeGenerationCommands类解决了这个问题。这条线是:

 solutionText = solutionText.Insert(solutionText.LastIndexOf("EndProject\r\n"),   projectReference);

到此:

 solutionText = solutionText.Insert(solutionText.LastIndexOf("EndProject\n"), projectReference);

我不知道为什么\r\n无法找到最终的EndProject并将其更改为\n它可以正常工作

答案 1 :(得分:1)

有问题的代码行是这样的:

solutionText = solutionText.Insert(solutionText
   .LastIndexOf("EndProject\r\n"),projectReference)
   .Replace("GlobalSection(ProjectConfigurationPlatforms) = postSolution\r\n", 
       projectConfiguationPlatforms);

如果solutionText.LastIndexOf("EndProject\r\n")找不到任何内容,则会返回-1 - 请参阅MSDN docs here

看起来这样会传递给string.Insert,这是一个无效的索引。

我唯一可以想到的是,你的git客户端或者你得到的果园源代码已经以某种方式改变了文件中的行结尾,因此无法找到\r\n。< / p>

我猜你是来自印度次大陆,你的操作系统是否运行非英语语言?我不认为.sln文件会对EndProject这样的字段进行本地化处理,而且我认为Windows不会改变其换行字符,但这里出现了问题。

解决方法解决方案

这是codegen theme命令执行的最后一件事,它创建了其他所有内容,但未能将项目添加到Orchard.sln中。要立即行动,您只需将其添加到您的解决方案中:

  1. 在visual studio中,打开解决方案资源管理器窗口
  2. 右键单击主题解决方案文件夹
  3. 单击“添加”|现有项目
  4. 导航到该文件夹​​并选择新主题
  5. 潜在的错误

    似乎这里可能存在错误。您是否愿意通过电子邮件将.sln文件发布给我,以便进一步调查?