TFS 2010 создание .Net 4.0 XmlSerializer DLL для приложения .Net 3.5 - PullRequest
5 голосов
/ 03 сентября 2010

У нас есть веб-приложение ASP.Net, работающее в Visual Studio 2010 и предназначенное для .Net 3.5. Он создается TFS 2010. У этого веб-приложения есть несколько веб-ссылок, поэтому сборка создает связанную DLL XmlSerializers. Эта DLL, однако, является сборкой .Net 4.0.

Когда я запускаю это веб-приложение из сборки, я получаю сообщение об ошибке:

Не удалось загрузить файл или сборку 'BLAH_BLAH_WEB_APPLICATION_NAME.XmlSerializers' или одна из его зависимостей. это сборка построена во время выполнения новее чем загруженная в данный момент среда выполнения и не может быть загружен.

Мы используем файл msbuild .proj, который работал в TFS 2008 (используя «Шаблон обновления» в определении сборки). Я видел этот вопрос и этот , но те упоминают об использовании определенного шага сборки SGen Мы не. Кроме того, предлагаемое решение включает жесткое кодирование пути к SGen 7.0A, что просто ... некрасиво.

Есть ли способ заставить сборку TFS 2010 скомпилировать эту DLL-библиотеку XmlSerializer как сборку .Net 3.5?

1 Ответ

4 голосов
/ 09 сентября 2010

Корневой проблемой было недопустимое значение в реестре.Значение SDK35ToolsPath для HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0 было:

$ (Реестр: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v7.0A \ x86-Windows-x 35-SDK@InstallationFolder)

Однако на сервере сборки был установлен Windows SDK версии 7.1.Итак, я исправил это значение:

$ (реестр: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDK \ Windows \ v7.1 \ WinSDKNetFx35Tools @ InstallationFolder)

Тогда DLL-библиотека XmlSerializer теперь использовала .Net 2.0.

...