使用PreApplicationStartMethod属性发生在我身上的奇怪事情。我在我的最新项目中实现了它。在AssemblyInfo.cs中我有以下行:PreApplicationStartMethod属性导致异常
[assembly: PreApplicationStartMethod(typeof(MyAssembly.Initializer), "Initialize")]
的类型和方法是这样的:
namespace MyAssembly
{
public static class Initializer
{
public static void Initialize()
{
TranslationKeys.Initialize();
}
}
}
当我重建我的应用程序,并在浏览器中我得到以下错误加载它:
The method specified by the PreApplicationStartMethodAttribute on assembly 'MyWebApp, Version=0.0.1.0, Culture=neutral, PublicKeyToken=null' cannot be resolved. Type: 'MyAssembly.Initializer', MethodName: 'Initialize'. Verify that the type is public and the method is public and static (Shared in Visual Basic).
我真的不知道问题出在哪里。
顺便说一句,在这之前,仔细检查你是否将该属性放在包含该类的相同组件上。即它不能指向不同组件中的类型。 --------------------------------------- 谢谢!那就是诀窍。在我的解决方案中我有不同的项目。 Initialize类与我的Web应用程序不同。 – Joop 2010-06-21 08:46:25
但是。考虑它并查看堆栈跟踪我认为这是一个奇怪的事情,这个类需要在同一个项目/程序集中。它说:System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies()。并且引用包含我的Initialize类的程序集。 – Joop 2010-06-21 08:49:32
不要让太多的内部方法的名称:)在这里,它的意思是它为每个引用的程序集查找Init方法。但是对于一个给定的装配体,它只能看到该装配体本身。这是一个delibarate检查,我们添加了这个检查来防止程序集导致调用另一个程序集中不相关的代码。我们遵循的逻辑基本上就是我上面所写的,所以相同的程序集检查是完全故意的。 – 2010-06-21 21:09:34