コード例 #1
0
        private void generateServerSideConsoleProjectCode(DevelopmentInstallation installation, ServerSideConsoleProject project)
        {
            var projectGeneratedCodeFolderPath = EwlStatics.CombinePaths(installation.GeneralLogic.Path, project.Name, "Generated Code");

            Directory.CreateDirectory(projectGeneratedCodeFolderPath);
            var isuFilePath = EwlStatics.CombinePaths(projectGeneratedCodeFolderPath, "ISU.cs");

            IoMethods.DeleteFile(isuFilePath);
            using (TextWriter writer = new StreamWriter(isuFilePath)) {
                writer.WriteLine("using System;");
                writer.WriteLine("using System.Collections.Generic;");
                writer.WriteLine("using System.Collections.Immutable;");
                writer.WriteLine("using System.IO;");
                writer.WriteLine("using System.Reflection;");
                writer.WriteLine("using System.Runtime.InteropServices;");
                writer.WriteLine("using System.Threading;");
                writer.WriteLine("using EnterpriseWebLibrary;");
                writer.WriteLine("using EnterpriseWebLibrary.DataAccess;");
                writer.WriteLine();
                writeAssemblyInfo(writer, installation, project.Name);
                writer.WriteLine();
                writer.WriteLine("namespace " + project.NamespaceAndAssemblyName + " {");
                writer.WriteLine("internal static partial class Program {");

                writer.WriteLine("[ MTAThread ]");
                writer.WriteLine("private static int Main( string[] args ) {");
                writer.WriteLine("SystemInitializer globalInitializer = null;");
                writer.WriteLine("initGlobalInitializer( ref globalInitializer );");
                writer.WriteLine("var dataAccessState = new ThreadLocal<DataAccessState>( () => new DataAccessState() );");
                writer.WriteLine(
                    "GlobalInitializationOps.InitStatics( globalInitializer, \"" + project.Name + "\", false, mainDataAccessStateGetter: () => dataAccessState.Value );");
                writer.WriteLine("try {");
                writer.WriteLine("return GlobalInitializationOps.ExecuteAppWithStandardExceptionHandling( () => {");

                // See https://stackoverflow.com/a/44135529/35349.
                writer.WriteLine("Console.SetIn( new StreamReader( Console.OpenStandardInput(), Console.InputEncoding, false, 4096 ) );");

                writer.WriteLine("ewlMain( Newtonsoft.Json.JsonConvert.DeserializeObject<ImmutableArray<string>>( Console.ReadLine() ) );");
                writer.WriteLine("} );");
                writer.WriteLine("}");
                writer.WriteLine("finally {");
                writer.WriteLine("GlobalInitializationOps.CleanUpStatics();");
                writer.WriteLine("}");
                writer.WriteLine("}");

                writer.WriteLine("static partial void initGlobalInitializer( ref SystemInitializer globalInitializer );");
                writer.WriteLine("static partial void ewlMain( IReadOnlyList<string> arguments );");

                writer.WriteLine("}");
                writer.WriteLine("}");
            }
        }
コード例 #2
0
        private void generateServerSideConsoleProjectCode( DevelopmentInstallation installation, ServerSideConsoleProject project )
        {
            var projectGeneratedCodeFolderPath = EwlStatics.CombinePaths( installation.GeneralLogic.Path, project.Name, "Generated Code" );
            Directory.CreateDirectory( projectGeneratedCodeFolderPath );
            var isuFilePath = EwlStatics.CombinePaths( projectGeneratedCodeFolderPath, "ISU.cs" );
            IoMethods.DeleteFile( isuFilePath );
            using( TextWriter writer = new StreamWriter( isuFilePath ) ) {
                writer.WriteLine( "using System;" );
                writer.WriteLine( "using System.Reflection;" );
                writer.WriteLine( "using System.Runtime.InteropServices;" );
                writer.WriteLine( "using System.Threading;" );
                writer.WriteLine( "using EnterpriseWebLibrary;" );
                writer.WriteLine( "using EnterpriseWebLibrary.DataAccess;" );
                writer.WriteLine();
                writeAssemblyInfo( writer, installation, project.Name );
                writer.WriteLine();
                writer.WriteLine( "namespace " + project.NamespaceAndAssemblyName + " {" );
                writer.WriteLine( "internal static partial class Program {" );

                writer.WriteLine( "[ MTAThread ]" );
                writer.WriteLine( "private static int Main( string[] args ) {" );
                writer.WriteLine( "SystemInitializer globalInitializer = null;" );
                writer.WriteLine( "initGlobalInitializer( ref globalInitializer );" );
                writer.WriteLine( "var dataAccessState = new ThreadLocal<DataAccessState>( () => new DataAccessState() );" );
                writer.WriteLine(
                    "GlobalInitializationOps.InitStatics( globalInitializer, \"" + project.Name + "\", false, mainDataAccessStateGetter: () => dataAccessState.Value );" );
                writer.WriteLine( "try {" );
                writer.WriteLine( "return GlobalInitializationOps.ExecuteAppWithStandardExceptionHandling( () => ewlMain( args ) );" );
                writer.WriteLine( "}" );
                writer.WriteLine( "finally {" );
                writer.WriteLine( "GlobalInitializationOps.CleanUpStatics();" );
                writer.WriteLine( "}" );
                writer.WriteLine( "}" );

                writer.WriteLine( "static partial void initGlobalInitializer( ref SystemInitializer globalInitializer );" );
                writer.WriteLine( "static partial void ewlMain( string[] args );" );

                writer.WriteLine( "}" );
                writer.WriteLine( "}" );
            }
        }
コード例 #3
0
        private void generateServerSideConsoleProjectCode(DevelopmentInstallation installation, ServerSideConsoleProject project)
        {
            var projectGeneratedCodeFolderPath = StandardLibraryMethods.CombinePaths(installation.GeneralLogic.Path, project.Name, "Generated Code");

            Directory.CreateDirectory(projectGeneratedCodeFolderPath);
            var isuFilePath = StandardLibraryMethods.CombinePaths(projectGeneratedCodeFolderPath, "ISU.cs");

            IoMethods.DeleteFile(isuFilePath);
            using (TextWriter writer = new StreamWriter(isuFilePath)) {
                writer.WriteLine("using System;");
                writer.WriteLine("using System.Reflection;");
                writer.WriteLine("using System.Runtime.InteropServices;");
                writer.WriteLine("using System.Threading;");
                writer.WriteLine("using RedStapler.StandardLibrary;");
                writer.WriteLine("using RedStapler.StandardLibrary.DataAccess;");
                writer.WriteLine();
                writeAssemblyInfo(writer, installation, project.Name);
                writer.WriteLine();
                writer.WriteLine("namespace " + project.NamespaceAndAssemblyName + " {");
                writer.WriteLine("internal static partial class Program {");

                writer.WriteLine("[ MTAThread ]");
                writer.WriteLine("private static int Main( string[] args ) {");
                writer.WriteLine("SystemInitializer globalInitializer = null;");
                writer.WriteLine("initGlobalInitializer( ref globalInitializer );");
                writer.WriteLine("var dataAccessState = new ThreadLocal<DataAccessState>( () => new DataAccessState() );");
                writer.WriteLine("AppTools.Init( globalInitializer, \"" + project.Name + "\", false, mainDataAccessStateGetter: () => dataAccessState.Value );");
                writer.WriteLine("try {");
                writer.WriteLine("return AppTools.ExecuteAppWithStandardExceptionHandling( () => ewlMain( args ) );");
                writer.WriteLine("}");
                writer.WriteLine("finally {");
                writer.WriteLine("AppTools.CleanUp();");
                writer.WriteLine("}");
                writer.WriteLine("}");

                writer.WriteLine("static partial void initGlobalInitializer( ref SystemInitializer globalInitializer );");
                writer.WriteLine("static partial void ewlMain( string[] args );");

                writer.WriteLine("}");
                writer.WriteLine("}");
            }
        }