我的代碼中有以下聲明,它可以在.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;
我的代碼中有以下聲明,它可以在.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;
我明白了,在聲明之上有一個IF聲明,沒有大括號。這是造成錯誤的原因。我剛剛刪除了IF,因爲在我的情況下這沒有必要。現在它工作正常。
該代碼在框架4.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"];
}
請顯示重現錯誤的示例。或者自行搜索錯誤代碼,以查看有關錯誤的更多信息。 –
還可以查看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 –
在我的測試中工作得很好。請給出更多的代碼,例如代碼所在的類。 – Kai