Я работаю над пользовательской системой проектов, которая основана на MPF
. Для сборки я определил пользовательский целевой файл, который определяет минимальный набор требуемых целей, таких как Build
, Clean
и Rebuild
, чтобы проект прекрасно сочетался с IDE Visual Studio; например, я могу вызвать сборку для загруженного проекта, используя F6 ярлык, в результате чего ярлык Ctrl + F5 также должен запускать приложение, если сборка прошла успешно. Но, нет ... результат сборки выводит успех, но Visual Studio не пытается запустить приложение? Я хотел бы знать, что не хватает ...Visual Studio не запускает вывод сборки
Мой пользовательский файл проекта не импортирует Microsoft.Common.targets
, так как это не управляемый lanugage, и большинство материалов, предоставляемых общей целью сборки, просто не применимы к моему проекту (также я хотел бы поддерживать интеграцию MSBuild как можно более тонкой).
Я прочитал документацию по адресу: https://msdn.microsoft.com/en-us/library/vstudio/ms171468(v=vs.110).aspx; в разделе «Отладка» упомянуты следующие свойства MSBuild: OutputPath
, AssemblyName
и OutputType
; мой настраиваемый целевой объект Build
задает все эти свойства, поэтому я предположил, что Visual Studio знает все, что требуется для запуска моего приложения (конечно, даже если мой языковой сервис еще не поддерживает отладку).
Build
цель определение выглядит следующим образом ...
<Target Name="Build"
DependsOnTargets="PrepareBuildProperties"
Returns="$(TargetPath)">
</Target>
Я посмотрел на файл Microsoft.Common.targets
и нашел Run
цели, а также. Комментарий говорит ...
Выполнить окончательный вывод сборки, если это .EXE
и подмигнули в основном делают это (это сокращенный вариант оригинального целевого определения) .. .
<Target Name="Run"
DependsOnTargets="$(RunDependsOn)">
<Exec Command="$(TargetPath) $(StartArguments)"
WorkingDirectory="$(OutDir)" />
</Target>
если Visual Studio назвать эту цель, если я выбираю Start without debugging
команду из меню Debug
или нажмите Ctrl + F5 ?
Прежде всего, спасибо за усилия, которые вы вложили в свой ответ ... но на самом деле это действительно не помогает. У меня нет проблем с пониманием того, как работает MSBuild и как я могу его расширить. В самом деле, расширение моего языка - неуправляемый язык, такой как C или C++; система проекта, конечно, основана на MSBuild. Я создал пользовательский целевой файл, который вызывает компилятор командной строки с использованием 'Exec' - и пока сборка просто отлично работает ... – Matze
@Matze Я упомянул три метода для запуска вывода проекта, что и есть то, что вы просили. Вы пробовали кого-то из них, и это не сработало? Кроме того, поскольку вам нравится поддерживать интеграцию MSBuild как можно более тонкой, создание целевого файла цели не подходит для этой цели. Все методы, о которых я говорил, не нуждаются в файле целей, они основаны только на файле проекта, который уменьшает интеграцию MSBuild. –
Все три метода не применяются к этой конкретной проблеме. Причина, по которой у меня есть отдельный файл целей, заключается в том, что сам файл проекта только объявляет, ЧТО необходимо построить; вместо целевых файлов определяют, КАК проект строится. Итак, я просто разделяю озабоченность; как Microsoft делает с их целями. Как я объяснил, в моем файле целевых целей определяются такие цели, как «Чистый», «Строить», «Восстановить» и т. Д .; Visual Studio находит и называет их, как ожидалось. Единственное, что мне не нужно, это команда «Run»; или, по крайней мере, я не знаю, какую цель ожидать от Visual Studio ... – Matze