Различия между сборкой на машине с установленным VS2010 и на машине с установленным 7.1 SDK

Мы пытаемся обновить нашу кодовую базу для использования 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 ответа

Решение

Когда вы обновили свое решение до 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

Я не уверен, что это помогает, но вижу эту ссылку относительно Требует Framework35SP1 Assembly Task

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

Другие вопросы по тегам