Подтвердить что ты не робот

Проблемы с обновлением проекта VB.Net 2008 в VS2010

Я обновлял несколько VS2008 проектов VS2010 и обнаружил проблему с проектами VB.Net при их преобразовании.

После преобразования файлы .vbproj изменились с этого в VS2008:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
   <DebugSymbols>true</DebugSymbols>
   <DebugType>full</DebugType>
   <DefineDebug>true</DefineDebug>
   <DefineTrace>true</DefineTrace>
   <OutputPath>bin\Debug\</OutputPath>
   <DocumentationFile>CustomerManager.xml</DocumentationFile>
   <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
</PropertyGroup>

К этому в VS2010:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
   <DebugSymbols>true</DebugSymbols>
   <DebugType>full</DebugType>
   <DefineDebug>true</DefineDebug>
   <DefineTrace>true</DefineTrace>
   <OutputPath>bin\Debug\</OutputPath>
   <DocumentationFile>CustomerManager.xml</DocumentationFile>
   <NoWarn>42353,42354,42355</NoWarn>
   <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
</PropertyGroup>

Основное отличие состоит в том, что в версии VS2010 добавлено значение 42353,42354,42355; Внутри IDE это проявляется в следующем параметре в свойствах проекта | Скомпилируйте раздел как:

"Функция, возвращающая тип встроенного значения без возвращаемого значения" = Нет

Это не проблема при создании кода внутри Visual Studio 2010, но при попытке создать код через наши непрерывные скрипты интеграции он терпит неудачу со следующими ошибками:

[msbuild] vbc: ошибка командной строки BC2026: номер предупреждения "42353" для Опция 'nowarn' либо не настраиваемый или недействительный

[msbuild] vbc: ошибка командной строки BC2026: номер предупреждения "42354" для Опция 'nowarn' либо не настраиваемый или недействительный

[msbuild] vbc: ошибка командной строки BC2026: номер предупреждения "42355" для Опция 'nowarn' либо не настраиваемый или недействительный

Я не мог найти что-либо в Google для этих сообщений, что странно, поскольку я пытаюсь выяснить, почему это происходит.

Любые предложения относительно того, почему это делает мастер преобразования Visual Studio 2010?

4b9b3361

Ответ 1

Вы изменили свою конструкцию script, чтобы использовать версию MSBuild 4.0? Похоже, что вы этого не сделали, и MSBuild жалуется, что ничего не знает о предупреждении 42353 и т.д. (Что было бы разумно, если бы они были введены в 4.0)

Ответ 2

Я воспроизвожу это поведение на преобразованных проектах. Невозможно найти какие-либо документы о том, что означают эти цифры предупреждения, библиотека MSDN еще не обновлена. Тем не менее, у моего компилятора нет проблем с ними. Ваша проблема почти наверняка вызвана вашим сервером сборки или скриптами, используя старую версию vbc.exe. Убедитесь, что в c:\windows\microsoft.net\framework\v4.0.30319 компилируется код.

Ответ 3

Просто отредактируйте файл проекта .vbproj и удалите все вхождения 42353,42354,42355, это должно устранить проблему сборки.

Ответ 4

Вы совершенно правы, думая, что взлом файлов .vbproj на самом деле не является решением. Вам нужно отредактировать .config для службы сборки TFS, чтобы использовать версию MSBuild 4.0, как описано в http://blogs.msdn.com/b/willbar/archive/2009/11/01/building-net-4-0-applications-using-team-build-2008.aspx. Примечание. Для вступления изменений в силу перезагрузка службы требует перезапуска, и вам нужно будет использовать правильный каталог для платформы .NET 4.0 (в блоге указан бета-версия).

Ответ 5

Ответы "use.net version 4" являются правильными и неправильными, imo. Это позволяет вам строить проект, но это не обязательно. В моем случае я не хочу использовать .net 4 msbuild, так как это веб-проект (asp mvc), который необходимо развернуть на серверах, на которых не установлено .net 4. Вот почему я ответил "нет" на вопрос "Вы хотите перейти на .net 4" при конвертации из VS2008 в VS2010. На мой взгляд, это ошибка в этом мастере преобразования, поскольку я сказал оставить его как .net 3.5, но я не могу построить результирующий проект, используя .net 3.5.

Я могу, если я удалю эти предупреждения из файла проекта, но может ли кто-нибудь указать мне на объяснение того, что на самом деле означают эти коды предупреждений? Я немного удивлен, что не могу найти список предупреждающих кодов и объяснений. Функция "Функция, возвращающая внутренний тип значения без возвращаемого значения" = "Нет" - это то, что для всех трех предупреждающих кодов 8 или отдельно)? Или только для одного из них? Не совсем понимаю, почему существует 3 кода, если они имеют значение 1...

Ответ 6

Теперь я изучил немного дальше. Обратите внимание, что я не использую TFS - мы используем subversion для управления версиями и наши собственные скрипты build/deploy, которые просто вызывают msbuild из командной строки - и там, где моя сбой. Однако, если я открою свойства проекта в обновленной версии, перейдите на вкладку "Компиляция" и измените значение "Возвращаемое значение функции возвращаемого значения типа без возвращаемого значения" из "Нет" в "Предупреждение", после чего я смогу снова создать проект.

Обратите внимание, что это имеет тот же эффект, что и редактирование файла vbproj, поскольку оно удаляет эти номера предупреждений из раздела файла vbproj. Это может изменить пару других предупреждающих цифр, которые тоже я думаю. В любом случае, я могу жить с получением большего количества предупреждений (не потому, что я получаю предупреждения в любом случае, но потенциально предупреждаю об этом, а игнорирование предупреждения не может быть проблемой, как я его смотрю), а проект строит и работает теперь, используя версию msbuild версии 3.5, которую мы всегда использовали раньше. Я думаю, что это потенциально ошибка в мастере обновления и сообщила об этом через MS Connect.

Ответ 7

Обходной путь, найденный на этой странице Microsoft Connect:

После обновления измените параметр "Возвращаемое значение возвращаемого значения стоимости без возвращаемого значения" в конфигурациях предупреждений на вкладке компиляции свойств проекта с "Нет" на "Предупреждение"

Теперь все работает.

Ответ 8

Просто удалите nowarn, он будет работать.

Собственно, мы работаем над фреймворком 3.5 api, создаем визуальную студию 2008 года, некоторые работают здесь на студии 2012 года, другие - на 2008 год, на том же vbproj (2 файла решения, 1 на 2008 год, 1 на 2012 год).

Нам нужно было удалить эти 3 номера в секции nowarn после обновления, чтобы наш проект был скомпилирован на нашем сервере, где фреймворк 4.0+ не установлен, и все работает отлично, используя msbuild 3.5.

Ответ 9

Это было мое решение. Мои решения нацелены на .net 2.0, но из VS2010. Net-4.0 сообщает NAnt использовать MSBuild из .net 4 install. он по-прежнему создает выход 2.0 или 3.5, если это то, что установлено в файле проекта. Также установка "none" в "предупреждение" в разделе сборки свойств проекта помогает, как указано ниже.: -)

свойство name= "nant.settings.currentframework" value = " net-4.0"

    <msbuild project="..\Test.sln" verbosity="Normal">
        <property name="Configuration" value="${Build.Configuration}" />
        <property name="OutDir" value="${Build.OutputFolder}\Test\\" />
        <arg value="/t:Rebuild" />
    </msbuild>