Я могу воспроизвести это (как в режиме отладки, так и в выпуске), при выполнении через IDE с включенной опцией «Debug» => «Включить процесс размещения Visual Studio», с помощью приведенного ниже.В командной строке он выведет «привет», а через IDE - «мир».Похоже, что IDE по-разному отражает атрибуты.
Это не ожидаемое поведение, и вы не должны полагаться на это поведение.Если вы хотите, чтобы какой-то конкретный код выполнялся: вызывайте нужный код явно.Чтобы получить предсказуемое поведение, отключите параметр «Отладка» => «Включить процесс размещения Visual Studio».
using System;
public class MyTestAttribute : Attribute {
public MyTestAttribute() {
Program.text = "world";
}
}
class Program {
public static string text = "hello";
[MyTest]
static void Main() {
Console.WriteLine(text);
Console.ReadKey();
}
}