Я только что обновил проект от VS2008 до VS2010, но я все еще нацелен на 3,5 платформы.
В моем файле проекта у меня есть пользовательская задача выполнить SGEN для генерации моего XmlSerializers.dll. Однако версия sgen выполненные цели 4,0 платформы. В результате, когда я запускаю свое приложение, я получаю сообщение об ошибке:
"Не мог загрузить файл или блок 'XXXX.XXXX.XmlSerializers' или одна из его зависимостей. Этот блок создается временем выполнения, более новым, чем в настоящее время загруженное время выполнения, и не может быть загружен".
Задача Sgen похожа на это:
Существует $ ToolPath =" (SGenToolPath)". Как я заставляю его выполнить версию, которая предназначается 3.5?
Существует подобный вопрос здесь, но он не помогает мне очень.
Я решил эту проблему, вручную настроив ToolPath так, чтобы он указывал на старую (версия 2.0.50727.3038) версию sgen.exe
На моем компьютере, это находится в: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin
Я изменил атрибут ToolPath на:
ToolPath="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"
, и это решило проблему.
Похоже, что по умолчанию новая версия фреймворка 4.0 запускается в папке: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools
Надеюсь, это поможет кому-то другому.
@Craig - Вы вручную установили фреймворк 7.0A на свой компьютер сборки. В таком случае проблема может быть в настройках реестра, а не в msbuild. Взгляните на LocalMachine -> Software -> Microsoft -> MSBuild -> ToolsVersions -> 4.0 -> SDK35ToolsPath и убедитесь, что указанный там регистрационный ключ действителен. (Подсказка: убедитесь, что -x86 присутствует, только если существует ключ -x86.)