Проблемы при обновлении проекта VB.Net 2008 до VS2010 - PullRequest
20 голосов
/ 10 мая 2010

Я обновлял несколько различных проектов 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 делает это?

Ответы [ 9 ]

24 голосов
/ 10 мая 2010

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

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

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

0 голосов
/ 13 марта 2013

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

имя свойства = "nant.settings.currentframework" значение = " 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>
0 голосов
/ 19 сентября 2012

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

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

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

0 голосов
/ 11 сентября 2012

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

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

Кажется, теперь все работает.

0 голосов
/ 02 декабря 2010

Я теперь исследовал немного дальше. Обратите внимание, что я не использую TFS - мы используем subversion для управления версиями и наши собственные сценарии сборки / развертывания, которые просто вызывают msbuild из командной строки - и там мой сбой. Однако если я открою свойства проекта в обновленной версии, перейдите на вкладку «Компиляция» и измените параметр «Функция, возвращающая тип внутреннего значения без возвращаемого значения» с «Нет» на «Предупреждение», после чего я смогу построить проект снова.

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

0 голосов
/ 29 ноября 2010

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

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

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

Вы совершенно правы, считая, что взлом файлов .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 framework (блог указывает бета-версию)

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

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

...