Ответ 1
Вы изменили свою конструкцию script, чтобы использовать версию MSBuild 4.0? Похоже, что вы этого не сделали, и MSBuild жалуется, что ничего не знает о предупреждении 42353 и т.д. (Что было бы разумно, если бы они были введены в 4.0)
Я обновлял несколько 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?
Вы изменили свою конструкцию script, чтобы использовать версию MSBuild 4.0? Похоже, что вы этого не сделали, и MSBuild жалуется, что ничего не знает о предупреждении 42353 и т.д. (Что было бы разумно, если бы они были введены в 4.0)
Я воспроизвожу это поведение на преобразованных проектах. Невозможно найти какие-либо документы о том, что означают эти цифры предупреждения, библиотека MSDN еще не обновлена. Тем не менее, у моего компилятора нет проблем с ними. Ваша проблема почти наверняка вызвана вашим сервером сборки или скриптами, используя старую версию vbc.exe. Убедитесь, что в c:\windows\microsoft.net\framework\v4.0.30319 компилируется код.
Просто отредактируйте файл проекта .vbproj и удалите все вхождения 42353,42354,42355, это должно устранить проблему сборки.
Вы совершенно правы, думая, что взлом файлов .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 (в блоге указан бета-версия).
Ответы "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...
Теперь я изучил немного дальше. Обратите внимание, что я не использую TFS - мы используем subversion для управления версиями и наши собственные скрипты build/deploy, которые просто вызывают msbuild из командной строки - и там, где моя сбой. Однако, если я открою свойства проекта в обновленной версии, перейдите на вкладку "Компиляция" и измените значение "Возвращаемое значение функции возвращаемого значения типа без возвращаемого значения" из "Нет" в "Предупреждение", после чего я смогу снова создать проект.
Обратите внимание, что это имеет тот же эффект, что и редактирование файла vbproj, поскольку оно удаляет эти номера предупреждений из раздела файла vbproj. Это может изменить пару других предупреждающих цифр, которые тоже я думаю. В любом случае, я могу жить с получением большего количества предупреждений (не потому, что я получаю предупреждения в любом случае, но потенциально предупреждаю об этом, а игнорирование предупреждения не может быть проблемой, как я его смотрю), а проект строит и работает теперь, используя версию msbuild версии 3.5, которую мы всегда использовали раньше. Я думаю, что это потенциально ошибка в мастере обновления и сообщила об этом через MS Connect.
Обходной путь, найденный на этой странице Microsoft Connect:
После обновления измените параметр "Возвращаемое значение возвращаемого значения стоимости без возвращаемого значения" в конфигурациях предупреждений на вкладке компиляции свойств проекта с "Нет" на "Предупреждение"
Теперь все работает.
Просто удалите nowarn, он будет работать.
Собственно, мы работаем над фреймворком 3.5 api, создаем визуальную студию 2008 года, некоторые работают здесь на студии 2012 года, другие - на 2008 год, на том же vbproj (2 файла решения, 1 на 2008 год, 1 на 2012 год).
Нам нужно было удалить эти 3 номера в секции nowarn после обновления, чтобы наш проект был скомпилирован на нашем сервере, где фреймворк 4.0+ не установлен, и все работает отлично, используя msbuild 3.5.
Это было мое решение. Мои решения нацелены на .net 2.0, но из VS2010. Net-4.0 сообщает NAnt использовать MSBuild из .net 4 install. он по-прежнему создает выход 2.0 или 3.5, если это то, что установлено в файле проекта. Также установка "none" в "предупреждение" в разделе сборки свойств проекта помогает, как указано ниже.: -)
<msbuild project="..\Test.sln" verbosity="Normal">
<property name="Configuration" value="${Build.Configuration}" />
<property name="OutDir" value="${Build.OutputFolder}\Test\\" />
<arg value="/t:Rebuild" />
</msbuild>