A “ordem textual” entre as classes parciais é formalmente definida?

Especificamente, em relação aos inicializadores de campo (neste caso, estáticos) - §17.11 no ECMA 334:

Se uma classe contiver campos estáticos com inicializadores, esses inicializadores serão executados em ordem textual imediatamente antes da execução do construtor estátic

Agora, se tivermos váriospartial classes em arquivos separados, essa ordem é determinada em algum lugar? Meu intestino diz "não definido formalmente, mas provavelmente está relacionado à ordem incluída no csproj ou à ordem anotada no csc". Isso está correto?

(e sim, eu sei que seria melhor evitar completamente a ambiguidade - provavelmente movendo toda a inicialização para um construtor estático

Por exemplo, se eu tivera.cs:

using System;
partial class Program
{
    private static int Foo = Write("Foo");
    static int Write(string name)
    {
        Console.WriteLine(name);
        return 0;
    }
    static void Main()
    {
        Console.WriteLine("[press any key]");
        Console.ReadLine();
    }
}

andb.cs:

partial class Program
{
    private static int Bar = Write("Bar");
}

e

<Compile Include="a.cs" />
<Compile Include="b.cs" />

then isFoo entãoBar; se, no entanto, for:

<Compile Include="b.cs" />
<Compile Include="a.cs" />

then isBar entãoFoo. Esteapoi a observação, mas não a declara fortemente. §8.7.13 (declarações de tipo parcial) não faz comentários sobre o pedido ao combinarpartial Aulas. Então; existe algo mais forte que podemos dizer aqui, a partir da especificação da linguagem C # ou da documentação do ferramental?

Além disso, ele se comporta de maneira semelhante comcsc a.cs b.cs vscsc b.cs a.cs.

questionAnswers(2)

yourAnswerToTheQuestion