Visual Studio не отмечает неопределенную строковую константу в VB.Net - PullRequest
3 голосов
/ 25 мая 2010

Я заметил, что если я пропущу завершающую двойную кавычку для строковой константы в Visual Studio 2010, ошибки или даже предупреждения не будет, т. Е.

Dim foo as String = "hi

Тем не менее, инструмент непрерывной интеграции, который мы используем, отмечает ошибку:

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

Что здесь происходит? Есть ли какое-то языковое правило в VB.Net, которое делает завершающую двойную кавычку необязательной «иногда»? Есть ли какая-то настройка в Visual Studio, которая заставит его пометить это как ошибку, поэтому я могу избежать "нарушения сборки" таким образом?

Ответы [ 4 ]

5 голосов
/ 25 мая 2010

На самом деле, исторически, язык BASIC никогда не требовал заключительной цитаты. Это восходит к 70-х годов. GW-Basic, BasicA, QBASIC, QuickBasic, даже более старые компьютеры Tandy и TRS-80 НИКОГДА не требовали заключительного предложения. В этом нет ничего нового. Причина этого в том, что BASIC не является языком свободного потока, как C или C #. Это означает, что всякий раз, когда обнаруживается новая строка, BASIC знает, что ваша строка должна заканчиваться, в кавычках или нет. Microsoft намеренно не применяет это правило для обеспечения совместимости со старым кодом.

1 голос
/ 04 января 2016

Используете ли вы MSBuild в своем инструменте интеграции? Если это так, убедитесь, что вы указываете на тот же MSBuild, что и Visual Studio.

Есть хорошая статья, которую я нашел здесь: MSDN - MSBuild теперь является частью Visual Studio

Вместо использования MSBuild из чего-то вроде C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe используйте следующее:

На 32-битных машинах их можно найти в: C: \ Program Файлы \ MSBuild \ 12,0 \ Bin

На 64-битных машинах 32-битные инструменты будут находиться в: C: \ Program Files (X86) \ MSBuild \ 12,0 \ Bin

и 64-битные инструменты в: C: \ Program Files (X86) \ MSBuild \ 12,0 \ Bin \ amd64

Это сработало для нас.

1 голос
/ 25 мая 2010

Это не соответствует спецификации, как указано в разделе 2.4.4 спецификации:

Строковый литерал - это последовательность из нуля или более символов Юникода, начинающаяся и заканчивающаяся символом двойной кавычки ASCII

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

Обычно Visual Studio автоматически добавляет конечную двойную кавычку, если вы не введете одну из них. Я не удивлюсь, если это связано с этим (возможно, тестирование никогда не обнаруживало, потому что они всегда добавлялись или были похожими).

0 голосов
/ 25 мая 2010

Я заметил, если у вас есть эта опция, «Довольно перечисление (переформатирование) кода», Visual Studio добавит завершающую двойную кавычку для вас, хотите вы этого или нет.

Если эта опция отключена, она допускает неправильный синтаксис.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...