2011-03-29 206 views
2

我在這裏有一個簡單的程序,演示了我遇到的問題。我有一個庫,我正在嘗試使用.net,併爲x86/32bit開發。現在我在64位和Visual Studio中的窗口在調試時出錯,圖像格式不正確,因此我將構建目標更改爲x86。現在我收到了訪問LocalUserAppDataPath時發生的另一個錯誤。爲什麼Application.LocalUserAppDataPath引發InvalidDeploymentException「未設置應用程序標識」。

static void Main() { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Console.WriteLine(System.Windows.Forms.Application.LocalUserAppDataPath); 
    } 

有沒有人有任何想法如何解決這個問題。如果我在沒有調試器的情況下運行它,它可以正常工作,但在Visual Studio調試器中,它會給出異常。

回答

0

跟蹤通過使用反射框架:

public static string LocalUserAppDataPath 
{ 
    get 
    { 
     ... 
     if (ApplicationDeployment.IsNetworkDeployed) 

的呼叫:

public static bool IsNetworkDeployed 
{ 
    get 
    { 
     ... 
     ApplicationDeployment currentDeployment = CurrentDeployment; 

的呼叫:

public static ApplicationDeployment CurrentDeployment 
{ 
    ... 
    get 
    { 
     ActivationContext activationContext = AppDomain.CurrentDomain.ActivationContext; 
     ... 
     fullName = activationContext.Identity.FullName; 

     if (string.IsNullOrEmpty(fullName)) 
     { 
     throw new InvalidDeploymentException(Resources.GetString("Ex_AppIdNotSet")); 
     } 

所以,檢查是否AppDomain.CurrentDomain.ActivationContext分配。

如果是,請檢查.Identity.Fullname是什麼。

+0

這裏的問題是IsNetworkDeployed屬性的實現方式。它使用異常來控制工作流程。基本上,如果您在「輸出」窗口中看到該異常,則意味着該應用程序未被網絡部署。 如果您沒有進行ClickOnce部署,您不應該擔心這個煩人的異常。 – 2013-08-23 17:56:32

相關問題