Инструменты для преобразования кода опции strict off в опцию strict on?

Мне нужно взять на себя проект, написанный на vb.net, который содержит более 400 тысяч строк кода, написанного в режиме strict off. Я хочу сначала построить его под параметром strict, прежде чем делать что-либо еще, что, возможно, преобразует его в С#. Я обнаружил, что тысячи строк кода вызывают ошибку компиляции, в основном о неявном приведении типов.

Есть ли какой-нибудь инструмент, который поможет скомпилировать его в строгом режиме, если я не хочу исправлять каждую строку вручную? Потому что очень сложно самому добавлять вызов CStr/CInt в каждую строку кода.


person deerchao    schedule 28.03.2010    source источник
comment
Зачем кому-то преобразовывать весь этот производственный код в C#? Я говорю вам, что ненавижу Java, но если бы я унаследовал программу Java, я бы не стал преобразовывать ее в VB.NET или любой другой язык. Смирись с этим.   -  person AMissico    schedule 28.03.2010
comment
Я хочу преобразовать плохие коды в хорошие. Даже если мне придется застрять в VB.net и не конвертировать его в C#, я все равно хочу, чтобы он был строго включен.   -  person deerchao    schedule 28.03.2010
comment
После некоторого исследования я решил добавить параметр strict on в один файл за раз и заставить его компилироваться до тех пор, пока все файлы не будут преобразованы. Очень жаль, что я не могу найти никаких инструментов, чтобы сделать это проще.   -  person deerchao    schedule 06.04.2010
comment
7,5 лет спустя, и я имею дело с тем же самым: явные преобразования типов данных"> stackoverflow.com/questions/47562402/ Просто вижу это сейчас..   -  person Isaac Kleinman    schedule 06.12.2017


Ответы (3)


Простое добавление CInt или CStr или Convert.ToString, если уж на то пошло, ничего вам не даст. вам нужно смотреть на дизайн в каждом конкретном случае и выяснять, почему типы данных не совпадают с нуля.

person JohnnyJP    schedule 03.08.2010

Как насчет смешивания и сопоставления, чтобы заставить вас бежать. Это то, что я думаю, что вы должны сделать. Установите для параметра проекта значение «Option strict On». Все отдельные файлы .vb с ошибкой компиляции... поставьте «Option strict Off» в качестве первой строки в этом файле. (это переопределит настройку всего проекта)

Теперь у вас есть компилируемый проект.

Следующее задание — когда у вас есть время выбрать отдельный файл (ищите «Option strict Off») (или когда вы изменяете файл по другой причине). Удалите «Option strict Off» из отдельного файла и позвольте VisualStudio автоматически исправлять теги. исправить ошибки для вас.

person MikeG    schedule 04.08.2010

Итак, вы хотите одновременно использовать Option Strict и не использовать его?

Вот что я вам скажу: сначала включите параметр Option Strict, затем в разделе «Конфигурации предупреждений» измените условие «Неявное преобразование» с «Ошибка» на «Предупреждение» (или «Нет»). Затем вы увидите, что в конфигурации указано: Option Strict — «Custom».

Но не обманывайте себя: эта пользовательская настройка не является строгой, поскольку она позволяет выполнять неявные действия. Вы должны спросить себя: «Почему я хочу скомпилировать это с опцией Strict?».

person M.A. Hanin    schedule 28.03.2010
comment
Нет, я не хочу обманывать себя. Я хочу, чтобы это стало настоящим кодом Option Strict, но не вручную - добавляя CInt, CStr к каждому неявному преобразованию tpe. - person deerchao; 28.03.2010
comment
Это нужно делать вручную, потому что иначе это будет просто поддельный строгий код. Все сужающие преобразования необходимо проверять вручную, чтобы убедиться, что они не вызывают ошибок времени выполнения. - person M.A. Hanin; 28.03.2010
comment
Я просто хочу, чтобы то, что сделал компилятор VB, явно выразилось в коде. Думаю, это слишком сложно.. - person deerchao; 23.04.2010
comment
@deerchao, но зачем тебе это? Я понимаю, что вы заинтересованы в ответах, а не в обсуждении причин, но все же, похоже, мы коллективно не понимаем причин, стоящих за этим. Есть способ заставить vb.net решать за вас - и это Option Strict Off. Мы хотим помочь вам, но для того, чтобы мы могли помочь вам, мы должны понять. - person magma; 14.04.2011
comment
@magma: преобразователь SharpDevelop требует более точной информации о типах для создания кода C#, поскольку неявные преобразования по умолчанию являются ошибкой, а не предупреждением в VB. Поэтому, когда вы конвертируете тело кода VB, неплохо использовать какое-то приведение перед запуском преобразования; может быть полезно остановиться на одном языке в большом проекте. Меньше языкового налога. - person dwerner; 19.04.2011
comment
@serotonin: вы пробовали developerfusion.com/tools/convert/vb-to -csharp ? - person magma; 20.04.2011