Ejemplo n.º 1
0
        /// <summary>
        /// Builds the source code for the CompilerMetadata class.
        /// </summary>
        private static String WriteCompilerMetadataFile(Boolean debug)
        {
            var writer             = new DataSourceWrapperWriter();
            var applicationAsm     = Assembly.GetEntryAssembly();
            var applicationVersion = applicationAsm == null ? "1.0.0.0" : FileVersionInfo.GetVersionInfo(applicationAsm.Location).FileVersion;
            var compilerVersion    = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion;

            writer.WriteLine("using System;");
            writer.WriteLine("using System.Reflection;");
            writer.WriteLine("using System.Runtime.Versioning;");
            writer.WriteLine();
            writer.WriteLine("[assembly: TargetFramework(\".NETStandard,Version=v2.0\", FrameworkDisplayName = \"\")]");
            writer.WriteLine("[assembly: AssemblyCompany(\"Ultraviolet Framework\")]");
            writer.WriteLine("[assembly: AssemblyConfiguration(\"" + (debug ? "Debug" : "Release") + "\")]");
            writer.WriteLine("[assembly: AssemblyFileVersion(\"{0}\")]", applicationVersion);
            writer.WriteLine("[assembly: AssemblyInformationalVersion(\"{0}\")]", applicationVersion);
            writer.WriteLine("[assembly: AssemblyProduct(\"Compiled Binding Expressions\")]");
            writer.WriteLine("[assembly: AssemblyTitle(\"Compiled Binding Expressions\")]");
            writer.WriteLine("[assembly: AssemblyVersion(\"{0}\")]", applicationVersion);
            writer.WriteLine();
            writer.WriteLine("namespace " + PresentationFoundationView.DataSourceWrapperNamespaceForViews);
            writer.WriteLine("{");
            writer.WriteLine("#pragma warning disable 1591");
            writer.WriteLine("#pragma warning disable 0184");
            writer.WriteLine("// Generated by the UPF Binding Expression Compiler, version {0}", compilerVersion);
            writer.WriteLine("[System.CLSCompliant(false)]");
            writer.WriteLine("public sealed class CompilerMetadata");
            writer.WriteLine("{");
            writer.WriteLine("public static String Version {{ get {{ return \"{0}\"; }} }}", compilerVersion);
            writer.WriteLine("}");
            writer.WriteLine("#pragma warning restore 1591");
            writer.WriteLine("#pragma warning restore 0184");
            writer.WriteLine("}");
            return(writer.ToString());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Builds the source code for the CompilerMetadata class and writes it to a file.
        /// </summary>
        private static String WriteCompilerMetadataFile()
        {
            var writer  = new DataSourceWrapperWriter();
            var version = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion;

            writer.WriteLine("using System;");
            writer.WriteLine();
            writer.WriteLine("namespace " + PresentationFoundationView.DataSourceWrapperNamespaceForViews);
            writer.WriteLine("{");
            writer.WriteLine("#pragma warning disable 1591");
            writer.WriteLine("#pragma warning disable 0184");
            writer.WriteLine("[System.CLSCompliant(false)]");
            writer.WriteLine("// Generated by the UPF Binding Expression Compiler, version {0}", FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion);
            writer.WriteLine("public sealed class CompilerMetadata");
            writer.WriteLine("{");
            writer.WriteLine("public static String Version {{ get {{ return \"{0}\"; }} }}", version);
            writer.WriteLine("}");
            writer.WriteLine("#pragma warning restore 1591");
            writer.WriteLine("#pragma warning restore 0184");
            writer.WriteLine("}");

            var path = Path.Combine(Path.GetTempPath(), "CompilerMetadata.cs");

            File.WriteAllText(path, writer.ToString());

            return(path);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Writes the source code for the specified data source wrapper.
        /// </summary>
        private static void WriteSourceCodeForDataSourceWrapper(RoslynExpressionCompilerState state,
                                                                DataSourceWrapperInfo dataSourceWrapperInfo)
        {
            using (var writer = new DataSourceWrapperWriter())
            {
                // Using statements
                var imports = Enumerable.Union(new[] { "System" }, dataSourceWrapperInfo.Imports).Distinct().OrderBy(x => x);
                foreach (var import in imports)
                {
                    writer.WriteLine("using {0};", import);
                }
                writer.WriteLine();

                // Namespace declaration
                var @namespace = dataSourceWrapperInfo.DataSourceDefinition.DataSourceWrapperNamespace;
                writer.WriteLine("namespace " + @namespace);
                writer.WriteLine("{");
                writer.WriteLine("#pragma warning disable 1591");
                writer.WriteLine("#pragma warning disable 0184");

                // Data source wrapper class - main
                WriteSourceCodeForDataSourceWrapperClass(state, dataSourceWrapperInfo, writer);

                // Data source wrapper class - dependent
                foreach (var dependentWrapperInfo in dataSourceWrapperInfo.DependentWrapperInfos)
                {
                    WriteSourceCodeForDataSourceWrapperClass(state, dependentWrapperInfo, writer);
                }

                // Namespace complete
                writer.WriteLine("#pragma warning restore 0184");
                writer.WriteLine("#pragma warning restore 1591");
                writer.WriteLine("}");

                dataSourceWrapperInfo.DataSourceWrapperSourceCode = writer.ToString();
            }
        }