我正在关注此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版本。
答案 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
中。要立即行动,您只需将其添加到您的解决方案中:
似乎这里可能存在错误。您是否愿意通过电子邮件将.sln文件发布给我,以便进一步调查?