Сборка Team City завершается неудачно после обновления до VS 2010
У меня есть проект, который в настоящее время успешно компилируется на моей машине разработки с использованием VS 2010 (предположительно, с использованием MSBUILD v4.0), но он терпит неудачу в MSBUILD v3.5 в Team City (работает на виртуальной машине на основе сервера Win 2003 с / .NET 2 3,5 и 4 установлены). Этот проект был недавно обновлен до 2010 года и в настоящее время терпит неудачу в сборке CI. Я прогуглил это и попробовал все очевидное (плюс несколько вещей, которые не имели смысла), и ничто не влияет на результат.
Проект терпит неудачу с последовательностью ошибок как это:
error CS0234: The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?)
В решении есть множество других проектов, использующих System.Core, System.Data.Linq и System.Xml.Linq, и все они, похоже, компилируются без проблем. Рассматриваемый проект является веб-приложением и имеет следующие настройки в разделе конфигурации /system.web/compilation/ сборки:
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Плюс следующее в том же файле:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>
Данный проект, IIRC, единственный проект в моем решении, который является и WebApplication, и постобработан PostSharp (v1.5). PostSharp настроен в.csproj так:
<PropertyGroup>
<DontImportPostSharp>True</DontImportPostSharp>
<PostSharpUseCommandLine>True</PostSharpUseCommandLine>
</PropertyGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(POSTSHARP15)\PostSharp-1.5.targets" />
Я не уверен, как это может быть связано, но это на всякий случай.
Любые идеи о том, что вызывает эту ошибку или как обойти эту проблему?
ТИА
2 ответа
Решено:
Добавление ссылок на файл web.config не имеет смысла, поскольку PostSharp вводит изображение до того, как ASP.NET выполнит какую-либо собственную компиляцию, поэтому отсутствие ссылки на ссылку System.Core приводит к сбою системы (я не конечно почему).
Решение состоит в том, чтобы вручную отредактировать файл csproj для терпящего неудачу проекта и вручную добавить ссылку на System.Core в проект. Вы не можете сделать это из обозревателя решений, потому что он запрещает добавлять ссылки, которые должны автоматически добавляться MSBUILD.
До сих пор не уверен, почему он потерпел неудачу, но, по крайней мере, теперь он снова компилируется и проходит тесты.
Вы переключили MSbuild на v4.0 на teamcity? Я не думаю, что вы можете построить проект 2010 года с.Net 4.0, используя MSbuild 3.5 на teamcity.