Различия между сборкой на машине с установленным VS2010 и на машине с установленным 7.1 SDK - PullRequest
2 голосов
/ 22 ноября 2010

Мы пытаемся обновить нашу кодовую базу для использования Visual Studio 2010, но у нас возникают проблемы с сортировкой всего на наших серверах сборки.Мы не хотим устанавливать Visual Studio 2010 на наших серверах сборки и поэтому установили только .Net 4 framework и SDK (v7.1).

Мы все еще хотим ориентироваться на платформу .Net 3.5 (мымы обновим до .Net 4 в будущем, но пока не хотим).

Нам удалось получить код для компиляции, но теперь мы сталкиваемся с ошибками во время выполнения, такими как:

Could not load file or assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

Проблема в том, что среда выполнения пытается десериализовать встроенный ресурс, и если я смотрю на ресурсы в отражателе, я вижу, что все они являются объектами .Net 4.0.Например, значок нашего приложения для Windows имеет тип System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

Так что похоже, что MSBuild неправильно компилирует ресурсы (используя другое время выполнения для цели)?Я подтвердил это, посмотрев diff-файлы dll, построенные на моей машине dev и построенные на сервере сборки - ясно, что ресурсы одной dll используют версию 2.0.0.0, а другая (с сервера сборки) использует 4.0.0.0.Ссылки на проекты в обоих случаях относятся к dll v2.0.0.0 (как и следовало ожидать).

Кто-нибудь знает, почему MSBuild компилирует ресурсы как объекты 4.0?

Заранее спасибо.

Крис

Ответы [ 2 ]

3 голосов
/ 24 ноября 2010

Когда вы обновили свое решение до VS2010, вы изменили целевую среду? Вы можете найти его, просмотрев файлы csproj в текстовом редакторе. У вас есть фреймворк 7.0a на вашем сервере сборки?

РЕДАКТИРОВАТЬ:

Я столкнулся с той же проблемой некоторое время назад, и это связано с тем, что ключ реестра не установлен. Посмотрите здесь: http://connect.microsoft.com/VisualStudio/feedback/details/594338/tfs-2010-build-agent-and-windows-7-1-sdk-targeting-net-3-5-generates-wrong-embedded-resources

Я думаю, вам нужно вручную добавить ключ реестра HKLM\Software\Microsoft\MsBuild\ToolsVersions\SDK35ToolsPath

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

Я не уверен, помогает ли это, но вижу эту ссылку, касающуюся Требуется Framework35SP1. Задача сборки

http://msdn.microsoft.com/en-us/library/ff598689.aspx

...