Я унаследовал кучу скриптов сборки и переработал их. Одна из вещей, которые я изменил, - позволить MSBuild обрабатывать файлы решения, а не позволять Visual Studio devenv.exe создавать их. Часть наших сборок - это проекты Compact Framework 3.5, ориентированные на Windows CE. Последняя версия Visual Studio, поддерживающая это, - VS2008.
Мне удалось заставить MSBuild 3.5 собрать решения, которые были ранее построены с использованием devenv.exe в Visual Studio 2008. И они, похоже, строят просто отлично. Пока я не разверну их на устройстве Windows CE и не запустите их. Затем я получаю исключения, которые, кажется, не имеют никакого смысла: MissingMethodException или TypeLoadException. Все ссылки там и в курсе. Мне потребовалось некоторое время, чтобы понять, что проблема в MSBuild. Повторное использование devenv.exe устраняет проблему.
Я полагал, что файлы решения - это файлы MSBuild, и вся информация, необходимая для правильной сборки файла решения, находится в этом файле решения и файлах проекта, на которые он ссылается. И все же VS2008 делает это лучше.
Что происходит? Почему я не могу использовать MSBuild? Или я могу? Где MSBuild облажался?