MSBuild 4 не в состоянии собрать VS2008 csproj из-за 1 предупреждения компилятора - PullRequest
2 голосов
/ 23 апреля 2010

У нас есть проект VS DLL с CS2008, нацеленный на .NET 3.5.Он успешно собирается на нашем CI-сервере при использовании MSBuild 3.5.

Когда CI обновляется для использования MSBuild 4.0, тот же проект не может быть собран из-за 1 предупреждающего сообщения:

c: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets (1418,9): предупреждение MSB3283: не удается найти сборку оболочки для библиотеки типов "ADODB".

Предупреждение не появляется в MSBuild 3.5, и я удивленчто это приводит к Build FAILED .У нас нет проекта для обработки предупреждений как ошибок.

Все остальные наши проекты создаются успешно с любой версией MSBuild.

Ответы [ 3 ]

2 голосов
/ 29 апреля 2010

Сообщение об ошибке не рассказывает всю историю. Сборка ADODB на наших машинах разработки загружается в GAC. Это было не так на машине сборки CI.

Ссылка на ADODB была помещена в наш проект C # только задачей предварительной сборки TLBIMP в рамках проекта C # (вместе со ссылками на библиотеки MSXML и VBA). Последние библиотеки DLL включены в наш репозиторий исходного кода и, таким образом, находятся в процессе сборки CI. ADODB нет. Однако мы также обнаружили, что мы можем безопасно удалить из проекта C # все добавленные ссылки, включая ссылку на ADODB.DLL.

Это решило проблему. (Спасибо за ваши предложения - они заставляли меня думать, пока мы туда не добрались.)

0 голосов
/ 23 апреля 2010

Это проблема ClickOnce. Удалить эту зависимость из списка.

Кстати, эта ошибка также присутствует в VS2008, но, похоже, не сработала для вас.

0 голосов
/ 23 апреля 2010

Попробуйте либо удалить любую встроенную версию инструментов в файлах msbuild (и csproj), либо установить для них значение ToolsVersion = "4.0".

Читайте: http://msdn.microsoft.com/en-us/library/bb383796.aspx для лучшего понимания значения атрибута. Поскольку вы хотите настроить таргетинг на 3.5, убедитесь, что у вас правильно установлена ​​целевая версия платформы, проверив наличие TargetFrameworkVersion в вашем csproj.

<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

Если вы установите ToolsVersion на 4.0, любая машина, которая хочет построить проект, будет зависеть от платформы 4.0 (которая имеет встроенную версию 4.0), даже если вы нацелены на 3.5.

Если вы нацелены на 3.5, и ваши проекты VS2008, нет необходимости использовать msbuild 4.0 поверх msbuild 3.5 (они могут существовать мирно рядом). Простое решение - просто использовать 3.5 msbuild.

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