Создание сайта через devenv.exe работает, msbuild не работает

Я использую VS2012 Update 3, используя TFS2012.

Я создаю такое же решение, используя devenv и msbuild. Когда я добираюсь до проектов веб-сайта, devenv не сообщает об ошибках, а msbuild делает это неоднократно. Образец журналов для обоих:

Девенв:

114>------ Build started: Project: C:\...\API\, Configuration: Debug Any CPU ------  
114>Could not get dependencies for project reference 'A'Could not get dependencies for     project reference 'BusinessLogic' Could not get dependencies for project reference 'BusinessLogic.ASPAgents' Could not get dependencies for project reference 'DataAccessLogicComponents' Could not get dependencies for project reference 'UI'Validating Web Site
114>Building directory '/API/'.  
114>  
114>Validation Complete

MSBuild:

121>C:\Scrubbed\API.metaproj : warning MSB3274: The primary reference "C:\Scrubbed\PreMVC\A\bin\Release\A.dll" could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0".  
121>C:\Scrubbed\API.metaproj : warning MSB3274: The primary reference "C:\Scrubbed\PreMVC\BusinessLogic\bin\Release\A.Web.BusinessLogic.dll" could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0".  
121>C:\Scrubbed\API.metaproj : warning MSB3275: The primary reference "C:\Scrubbed\PreMVC\BusinessLogic\bin\Release\A.Web.BusinessLogic.dll" could not be resolved because it has an indirect dependency on the assembly "A, Version=0.0.0.15, Culture=neutral, PublicKeyToken=060d385c0c45e767" which was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0".  

     C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /API -p PreMVC\API\ -u -f PrecompiledWeb\API\ 

121>C:\Scrubbed\PreMVC\API\App_Code\File1.cs(7): error CS0234: The type or namespace name 'BusinessLogic' does not exist in the namespace 'A.Web' (are you missing an assembly reference?) [C:\Scrubbed\API.metaproj]  
121>C:\Scrubbed\PreMVC\API\App_Code\File1.cs(8): error CS0234: The type or namespace name 'UI' does not exist in the namespace 'A.Web' (are you missing an assembly reference?) [C:\Scrubbed\API.metaproj]  
121>C:\Scrubbed\PreMVC\API\App_Code\File1.cs(12): error CS0234: The type or namespace name 'UI' does not exist in the namespace 'A.Web' (are you missing an assembly reference?) [C:\Scrubbed\API.metaproj]  
121>C:\Scrubbed\PreMVC\API\App_Code\File2.cs(7): error CS0234: The type or namespace name 'BusinessLogic' does not exist in the namespace 'A.Web' (are you missing an assembly reference?) [C:\Scrubbed\API.metaproj]
121>C:\Scrubbed\PreMVC\API\App_Code\File2.cs(8): error CS0234: The type or namespace name 'UI' does not exist in the namespace 'A.Web' (are you missing an assembly reference?) [C:\Scrubbed\API.metaproj]  
121>C:\Scrubbed\PreMVC\API\App_Code\File2.cs(12): error CS0234: The type or namespace name 'UI' does not exist in the namespace 'A.Web' (are you missing an assembly reference?) [C:\Scrubbed\API.metaproj]
121>C:\Scrubbed\PreMVC\API\App_Code\File3.cs(7): error CS0234: The type or namespace name 'BusinessLogic' does not exist in the namespace 'A.Web' (are you missing an assembly reference?) [C:\Scrubbed\API.metaproj]
121>C:\Scrubbed\PreMVC\API\App_Code\File3.cs(8): error CS0234: The type or namespace name 'UI' does not exist in the namespace 'A.Web' (are you missing an assembly reference?) [C:\Scrubbed\API.metaproj]  
121>Done Building Project "C:\Scrubbed\API.metaproj" (Rebuild target(s)) -- FAILED.

Любая идея относительно того, почему Devenv продолжает работу, но MSBuild немедленно терпит неудачу?


person jmcdade    schedule 23.01.2014    source источник
comment
Запуск devenv из командной строки может отличаться от использования msbuild тем, что он может использовать некоторые настройки пользователя/пользовательского интерфейса, которые не используются для msbuild. Просто случайная мысль.   -  person Craig Celeste    schedule 24.01.2014


Ответы (3)


Я получил ответ от мода на форумах MSDN. В основном MSBuild очень строго относится к зависимостям, где devenv просто выдает предупреждения, но продолжает.

В итоге мы получили добро на полный переход на .NET 4.5, поэтому исправили несоответствие и в итоге перенесли нашу сборку на MSBuild.

person jmcdade    schedule 24.01.2014

Убедитесь, что вы добавляете ссылки на другие проекты и что все они используют одну и ту же версию платформы .NET.

person Nicodemeus    schedule 23.01.2014
comment
Я спрашиваю, почему кажется, что один работает, а другой, кажется, терпит неудачу. Я все равно обновил проекты до .NET 4.5 и переключился на MSBuild, так как devenv случайным образом (иногда - например, 1 из 15 сборок) имеет проблемы с отменой задачи. - person jmcdade; 24.01.2014

Разве предупреждение в ваших журналах не рассказывает историю?

«121> C:\Scrubbed\API.metaproj: предупреждение MSB3274: первичная ссылка «C:\Scrubbed\PreMVC\A\bin\Release\A.dll» не может быть разрешена, поскольку она была создана для «.NETFramework, Framework Version=v4.5". Это более поздняя версия, чем целевая в настоящее время платформа ".NETFramework,Version=v4.0". "

person Hamid Shahid    schedule 24.01.2014
comment
Вопрос (я думаю) в том, почему это работает для одного, но не для другого. - person Craig Celeste; 24.01.2014