В моем решении у меня есть ссылки на проекты (например) System.ServiceModel.dll, где для параметра "использовать определенную версию" установлено значение false. Все отлично работает с msbuild 3.5.
Я хотел бы использовать msbuild 4.0, чтобы использовать функции свойств. Я попытался передать свойства «TargetFrameworkVersion = 3.5; ToolsVersion = 3.5». Однако я получаю следующую ошибку:
Не удалось загрузить файл или сборку C: \ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ System.configuration \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.configuration.dll или одну из ее зависимостей.
Этого не произойдет, если я использую msbuild 3.5.
Могу ли я сделать это без указания версий в файлах проекта? (В будущем мы, возможно, захотим обновить приложение до dotnet 4)
Изменить: я попытался использовать msbuild 3.5 во «внешнем» вызове и вызвать msbuild (используя an<msbuild>
task) 4.0 для тех целей, для которых требуются новые функции. С этим тоже не повезло - внутренний вызов выдает следующее сообщение об ошибке:
ошибка MSB4062: не удалось загрузить файл или сборку Microsoft.Build.Tasks.v4.0, Version = 4.0.0.0 или одну из его зависимостей. Система не может найти указанный файл. Убедитесь, что объявление правильное, и что сборка и все ее зависимости доступны.
MSBuild.exe
версии 4.0? Он установлен в `% windir% \ Microsoft.NET \ Framework \ v4.0.30319` (для 32-битной версии). Или убедитесь, что вы используете командную строку VS2010 (а не командную строку VS2008). - person Christian.K   schedule 28.02.2012