У меня есть проект, который прекрасно строился на VS 2008, а затем мы установили и начали использовать TFS Build, а затем мы обновили до TFS 2010. Все было по-прежнему прекрасно и правильно построено (после того, как я реализовал новый процесс сборки, который сделал все очень хорошо с инициацией создания одного клика с любого удаленного клиента Visual Studio 2010). Visual Studio не нужно было устанавливать в агенте Build. Я очень стараюсь (очень сложно) не устанавливать Visual Studio в агенте Build, потому что я понимаю, что это не обязательно, и у нас нет лицензии на его установку на машине без разработки.
Теперь я попытался обновить решение до VS 2010, все еще нацелив на .NET 3.5, потому что это сборка, предназначенная для процедур CLR SQL Server, а SQL Server еще не поддерживает .NET 4.0. Но я просто не могу заставить его строить больше в TFS Build. Кажется, я не могу получить сообщение об ошибке из TFS Build и из командной строки MS Build, но я думаю, что это имеет какое-то отношение к Microsoft.Cpp.Targets, не находящемуся в C:\Program Files\MSBuild \, потому что я раю Установлена Visual Studio. Я установил Microsoft Windows SDK 7.1, чтобы я мог запускать инструменты SDK.NET 4.0, такие как svcutil для некоторых других проектов .NET 4.0, но ничто, кажется, не устанавливает то, что хочет эта сборка. Ошибка сборки TFS дает мне следующее:
C:\TFSBld [...]\GenerateLanguage\GenerateLanguage.vcxproj(46,3): ошибка MSB4019: импортированный проект "C:\Microsoft.Cpp.Default.props" был не найдено. Подтвердите, что путь в декларация верна, и что файл существует на диске.
И когда я нажимаю на эту ошибку, она возвращает меня в эту строку в файле vcxproj:
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
Все, что мне действительно нужно сделать в этом проекте, - это запустить resgen для генерации файлов ресурсов из файлов resx и скомпилировать их в сборку sattelite. Я использовал makefile build для этого, вручную запуская resgen (я думаю, что это было потому, что я не могу найти способ скомпилировать сборки sattelite как автономное решение любым другим способом), а затем скомпилировать их в DLL (I не могу вспомнить, как это работает сейчас, но я думаю, что вручную AL.exe запускалось для компиляции DLL файлов из файлов ресурсов). Поэтому в основном мне просто нужно запускать командные строки для создания этого проекта, и я не могу найти разумный способ сделать это, не выбрасывая весь проект и редактируя сборку TFS script, чтобы запустить кучу жестко кодированных вместо командной строки. Там должен быть лучший способ.
Я был весь этот день и пытался написать собственный файл .targets и листы свойств .xml, чтобы заменить стандартный файл, но это на моей голове. Я попробовал просто удалить строки, но затем MSBuild жалуется, что нет цели "Build". Я попытался добавить фиктивный файл в файл vcxproj, но тогда он, похоже, не выполнял шаги до и после сборки, где выполнялась вся работа.