使用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