2010-05-25 44 views
3

恆定我注意到,如果我離開過終止雙引號的字符串在Visual Studio 2010不變,沒有錯誤,甚至警告,即的Visual Studio不會標記未終止的字符串在VB.Net

Dim foo as String = "hi 

但是,我們使用標記錯誤的持續集成工具:

error BC30648: String constants must end with a double quote. 

這是怎麼回事嗎? VB.Net中是否有一些語言規則使得終止雙引號可選「有時」?在Visual Studio中是否有一些設置會將其標記爲錯誤,所以我可以避免以這種方式「破壞構建」?

+0

你是怎麼得到這個進入VS的? 我從來沒有見過類似的東西,因爲VS-autoformat而根本不可能。 – 2010-05-25 17:18:02

+0

@Tim,似乎autoformat是一個選項 – JoelFan 2010-05-26 02:19:07

回答

5

實際上,歷史上,BASIC語言從來不需要結束報價。這可以追溯到70年代。 GW-Basic,BasicA,QBASIC,QuickBasic,甚至更舊的Tandy和TRS-80計算機都不需要結束報價。這並不是什麼新鮮事。原因是因爲BASIC不是像C或C#這樣的免費流語言。這意味着無論何時找到換行符,BASIC都知道你的字符串必須結束,不管是否引用。 Microsoft有意不執行此規則以與舊代碼兼容。

+0

足夠公平......那麼爲什麼構建服務器將它標記爲錯誤? – JoelFan 2010-05-26 02:20:23

+0

因爲編譯器本身並不需要它,所以它會被標記爲錯誤,因爲它確實是錯誤的形式。應該有一個開關可以用來使檢查不那麼「嚴格」。 – Icemanind 2010-05-26 03:14:50

0

我注意到如果你有這個選項,「代碼的漂亮列表(重新格式化)」Visual Studio會爲你添加終止雙引號,無論你是否需要它。

關閉該選項後,它允許看起來是無效的語法。

1

那不是按照規範的規範規定的第2.4.4節:

字符串文字是零個或多個Unicode字符開始,用ASCII雙引號字符

結束序列

http://msdn.microsoft.com/en-us/library/aa711651%28v=VS.71%29.aspx

通常情況下,Visual Studio會自動添加結尾雙引號,如果您沒有輸入。我不會感到驚訝,如果它與此相關(也許測試從來沒有拿起它,因爲它們總是被添加或類似)。

+0

但問題是他們沒有被添加!構建和本地測試都沒有問題,並且代碼以這種方式進行檢查! – JoelFan 2010-05-25 17:39:20

+0

是的,我的意思是說開發者可能會認爲他們會被添加,所以他們忘了測試它。然而,冰人似乎有正確的答案,而不僅僅是一個猜測。 – 2010-05-25 18:15:11

1

您是否在集成工具中使用MSBuild?如果是,請確保您指向Visual Studio使用的同一個MSBuild。

這是一個很好的文章,我發現在這裏:使用的MSBuild從東西MSDN - MSBuild is now part of Visual Studio

而不是像C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ MSBuild.exe使用以下命令:

On 32-bit machines they can be found in: C:\Program Files\MSBuild\12.0\bin

On 64-bit machines the 32-bit tools will be under: C:\Program Files (x86)\MSBuild\12.0\bin

and the 64-bit tools under: C:\Program Files (x86)\MSBuild\12.0\bin\amd64

這對我們很有效。

相關問題