c# - 装饰主要方法的属性构造函数不会在发布版本中被调用

标签 c# custom-attributes

有谁知道为什么修饰 main 方法的属性的构造函数在调试版本中被调用,但在发布版本中却不被调用?
我如何确保在发布版本中也调用构造函数?当然无需手动调用。

非常感谢对此主题的任何见解。

最佳答案

我可以重现这个(在调试和发布中),当通过 IDE 执行时并启用“调试”=>“启用 Visual Studio 托管进程”选项,通过以下方式。在命令行中它将打印“hello”,而通过 IDE 它将打印“world”。看起来 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();
    }
}

关于c# - 装饰主要方法的属性构造函数不会在发布版本中被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4244691/

相关文章:

c# - 同一类上的两组序列化属性

Magento loadByAttribute 用于自定义类别属性

symfony1 - 为 sfDoctrineGuard 插件的 sfGuardUser 模型添加 avatar 字段

c# - ASP.NET Web API C# 并发请求导致数据库重复

c# - 隐式修饰由智能感知接口(interface)公开的方法

c# - 如何泛化此 C# 代码?

asp.net - 在 ASP.NET MVC 中构建自定义授权

c# - 从 Windows 文件资源管理器拖放到 Windows 窗体上不起作用

c# - .net(winforms,不是 asp)多服务器部署

c# - 具有自定义属性的Autofac拦截