Exemple #1
0
        public ExecutableScript MakeScriptExecutable(LinqPadQuery script, string generatedDataContextCode)
        {
            var program = new ExecutableScript();

            // Set Assemblies
            // GAC Reference parsing from: https://github.com/mcintyre321/LINQPadRunner/blob/master/LPRun/Program.cs
            var assemblyGroups = new[]
            {
                script.GACReferences.Select(s => s.Substring(0, s.IndexOf(",")) + ".dll"),
                script.RelativeReferences,
                script.OtherReferences,
                StandardAssemblies,
            };

            program.AssemblyReferences.AddRange(assemblyGroups.SelectMany(group => group));

            // Prepare to Include Namespaces
            var namespaceGroups = new[]
            {
                script.Namespaces,
                StandardNamespaces
            };
            var namespaces = String.Join("\n", from namespaceGroup in namespaceGroups
                                         from nspace in namespaceGroup
                                         select string.Format("using {0};", nspace));

            // Wrap Code in Main() method (if needed)
            var scriptMethodCode = ConvertScriptIntoMethodByQueryKind(script, generatedDataContextCode);

            var code = string.Format(@"

                // Namespaces
                {0}
            
                namespace Generated
                {{
                    public class MyProgram
                    {{
                        {1}
                    }}
                }}
            
            ", namespaces, scriptMethodCode);

            // Add Code and DataContext source to executable script
            program.SourceCodePieces.Add(code);
            program.SourceCodePieces.Add(generatedDataContextCode);

            return(program);
        }
        public ExecutableScript MakeScriptExecutable(LinqPadQuery script, string generatedDataContextCode)
        {
            var program = new ExecutableScript();

            // Set Assemblies
            // GAC Reference parsing from: https://github.com/mcintyre321/LINQPadRunner/blob/master/LPRun/Program.cs
            var assemblyGroups = new[]
                                 {
                                     script.GACReferences.Select(s => s.Substring(0, s.IndexOf(",")) + ".dll"),
                                     script.RelativeReferences,
                                     script.OtherReferences,
                                     StandardAssemblies,
                                 };
            program.AssemblyReferences.AddRange(assemblyGroups.SelectMany(group => group));

            // Prepare to Include Namespaces
            var namespaceGroups = new[]
                {
                    script.Namespaces,
                    StandardNamespaces
                };
            var namespaces = String.Join("\n", from namespaceGroup in namespaceGroups
                                               from nspace in namespaceGroup
                                               select string.Format("using {0};", nspace));

            // Wrap Code in Main() method (if needed)
            var scriptMethodCode = ConvertScriptIntoMethodByQueryKind(script, generatedDataContextCode);

            var code = string.Format(@"

                // Namespaces
                {0}

                namespace Generated
                {{
                    public class MyProgram
                    {{
                        {1}
                    }}
                }}

            ", namespaces, scriptMethodCode);

            // Add Code and DataContext source to executable script
            program.SourceCodePieces.Add(code);
            program.SourceCodePieces.Add(generatedDataContextCode);

            return program;
        }