用代码退化模块在果园中创建新的主题

本文关键字:创建 果园 代码 模块 | 更新日期: 2023-09-27 18:09:42

我一直在关注这个OrchardProject.net链接上的文档。我打开并激活了CodeGeneration模块,并在项目(Orchard.Web)的根处打开命令提示符,并编写"bin/Orchard.exe"以运行命令。在那之前一切都很好。现在,当我尝试运行下面的命令时,它给出了下面的异常。命令为:

codegen主题mishrajiTheme/BasedOn: thethememmachine/CreateProject:true/IncludeInSolution:true

命令输出如下:

创建主题mishrajiTheme

执行"codegen theme mishrajiTheme"命令出错

指定的参数超出有效值范围。参数名称:startIndex

Exception Details: System。ArgumentOutOfRangeException:指定参数超出有效值范围。参数名称:startIndex

堆栈跟踪:

[ArgumentOutOfRangeException:指定的参数超出范围。有效值的。参数名称:startIndex] atSystem.String。插入(Int32 startIndex,字符串值)Orchard.CodeGeneration.Commands.CodeGenerationCommands.AddToSolution (TextWriter输出,字符串projectName,字符串projectGuid,字符串containingFolder, String solutionFolderGuid)Orchard.CodeGeneration.Commands.CodeGenerationCommands.CreateThemeFromTemplates (TextWriter输出:字符串themeName,字符串baseTheme,字符串projectGuid,布尔值includeInSolution) atOrchard.CodeGeneration.Commands.CodeGenerationCommands.IntegrateTheme(字符串主题名称,字符串baseTheme)Orchard.CodeGeneration.Commands.CodeGenerationCommands.CreateTheme(字符串themeName)


我在这里做错了什么,或者这是一个bug在果园代码生成模块。请指导。我使用的是Orchard 1.10版本。

用代码退化模块在果园中创建新的主题

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

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

to this:

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

我不知道为什么'r'n不能找到最终的EndProject,通过将其更改为'n,它可以正常工作

失败的代码行是:

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

如果solutionText.LastIndexOf("EndProject'r'n")没有找到任何东西,它将返回-1 -参见MSDN文档。

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

我能想到的唯一一件事是你的git客户端或者不管你得到了果园源,不知怎么地改变了文件中的行尾,所以它找不到'r'n

我猜你来自印度次大陆,你的操作系统运行非英语语言吗?我不认为.sln文件像EndProject一样本地化了字段,我不认为Windows改变了它的换行字符表示,但这里出了问题。

解决方案解决方案

这是codegen theme命令所做的最后一件事,它已经创建了其他所有内容,只是未能将项目添加到Orchard.sln中。现在你可以把它添加到你的解决方案中:

    在visual studio中,打开解决方案资源管理器窗口右键单击主题解决方案文件夹
  1. 点击添加|现有项目
  2. 导航到文件夹,选择你的新主题

潜在缺陷

这里好像有一个bug。您是否愿意将您的。sln文件通过电子邮件发给我,以便我进一步调查?