2013-05-15 73 views
0

我的代碼中有以下聲明,它可以在.NET框架工作2.0中正常工作,最近我將項目升級到了框架4.0,並且我得到了構建錯誤,說嵌入式聲明不能聲明.Net 2.0 vs 4.0

「嵌入語句不能是聲明」

任何想法,這裏有什麼問題?

const int sNoPrompt = 0x1; 
const int sUseFileName = 0x2; 
const Int32 sEmbedFonts = 0x10; 
const int MultilingualSupport = 0x80; 
+0

請顯示重現錯誤的示例。或者自行搜索錯誤代碼,以查看有關錯誤的更多信息。 –

+0

還可以查看http://blogs.msdn.com/b/spike/archive/2010/02/16/compiling-application-gives-embedded-statement-cannot-be-a- declarative或orlabeled -statement。 aspx和http://stackoverflow.com/questions/15946679/embedded-statement-error –

+1

在我的測試中工作得很好。請給出更多的代碼,例如代碼所在的類。 – Kai

回答

2

我明白了,在聲明之上有一個IF聲明,沒有大括號。這是造成錯誤的原因。我剛剛刪除了IF,因爲在我的情況下這沒有必要。現在它工作正常。

2

該代碼在框架4.0中運行完美,可能是您在其他代碼行中遇到了問題。

0

我之前使用下面的代碼工作正常。

if (output == "Success") 
    terminate(); 

Configuration config = 
     ConfigurationManager.OpenExeConfiguration(System.Windows.Forms.Application.ExecutablePath); 
var setting = config.AppSettings.Settings["PATH"]; 

由於需求的變化,我註釋掉的函數調用結束()

if (output == "Success") 
    //terminate(); 

Configuration config = 
     ConfigurationManager.OpenExeConfiguration(System.Windows.Forms.Application.ExecutablePath); 
var setting = config.AppSettings.Settings["PATH"]; 

這引發錯誤嵌入語句不能在配置變量聲明聲明或標記語句線。並且拋出另一個錯誤在設置變量聲明行中使用未分配的局部變量「config」

由於terminate()被註釋,它會嘗試將下一條語句作爲if條件塊。

解決方案是註釋掉滿條件塊。

//if (output == "Success") 
    //terminate(); 

Configuration config = 
     ConfigurationManager.OpenExeConfiguration(System.Windows.Forms.Application.ExecutablePath); 
var setting = config.AppSettings.Settings["PATH"]; 

另一種解決方法是根據需要放置花括號。

if (output == "Success") 
{ 
    //terminate(); 

    Configuration config = 
     ConfigurationManager.OpenExeConfiguration(System.Windows.Forms.Application.ExecutablePath); 
    var setting = config.AppSettings.Settings["PATH"]; 
}