用代码退化模块在果园中创建新的主题
本文关键字:创建 果园 代码 模块 | 更新日期: 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中,打开解决方案资源管理器窗口右键单击主题解决方案文件夹
- 点击添加|现有项目 导航到文件夹,选择你的新主题
这里好像有一个bug。您是否愿意将您的。sln文件通过电子邮件发给我,以便我进一步调查?