コード例 #1
0
    public void GenerateModel_warns_when_output_encoding()
    {
        using var projectDir = new TempDirectory();

        var contextTemplate = Path.Combine(projectDir, "CodeTemplates", "EFCore", "DbContext.t4");

        Directory.CreateDirectory(Path.GetDirectoryName(contextTemplate));
        File.WriteAllText(
            contextTemplate,
            @"<#@ output encoding=""us-ascii"" #>");

        var reporter  = new TestOperationReporter();
        var generator = CreateGenerator(reporter);
        var model     = new ModelBuilder()
                        .FinalizeModel();

        var result = generator.GenerateModel(
            model,
            new()
        {
            ContextName      = "Context",
            ConnectionString = @"Name=DefaultConnection",
            ProjectDir       = projectDir
        });

        Assert.Collection(
            reporter.Messages,
            x =>
        {
            Assert.Equal(LogLevel.Warning, x.Level);
            Assert.Equal(DesignStrings.EncodingIgnored("us-ascii"), x.Message);
        });
    }
コード例 #2
0
    private string ProcessTemplate(string inputFile, TextTemplatingCallback handler)
    {
        var output = _host.ProcessTemplate(
            inputFile,
            File.ReadAllText(inputFile),
            handler);

        foreach (CompilerError error in handler.Errors)
        {
            var builder = new StringBuilder();

            if (!string.IsNullOrEmpty(error.FileName))
            {
                builder.Append(error.FileName);

                if (error.Line > 0)
                {
                    builder
                    .Append("(")
                    .Append(error.Line);

                    if (error.Column > 0)
                    {
                        builder
                        .Append(",")
                        .Append(error.Line);
                    }
                    builder.Append(")");
                }

                builder.Append(" : ");
            }

            builder
            .Append(error.IsWarning ? "warning" : "error")
            .Append(" ")
            .Append(error.ErrorNumber)
            .Append(": ")
            .AppendLine(error.ErrorText);

            if (error.IsWarning)
            {
                _reporter.WriteWarning(builder.ToString());
            }
            else
            {
                _reporter.WriteError(builder.ToString());
            }
        }

        if (handler.OutputEncoding != Encoding.UTF8)
        {
            _reporter.WriteWarning(DesignStrings.EncodingIgnored(handler.OutputEncoding.WebName));
        }

        return(output);
    }