Подтвердить что ты не робот

События после сборки Visual Studio застряли в ожидании завершения исполняемого файла до запуска приложения в режиме отладки

Часть пост-сборки моего проекта - это выполнение программы, которую я написал для тестирования основного приложения. К сожалению, процесс сборки сообщений в визуальной студии блокируется, ожидая выхода исполняемого файла. Итак, я закрыл свою тестовую программу, чтобы завершить процесс сборки и запустить приложение. Как изменить это, чтобы VS не дождался возврата программы до запуска? Спасибо.

4b9b3361

Ответ 1

Я также обнаружил, что трюк start не работал, и загрузка отдельного инструмента для выполнения такой простой задачи казалась чрезмерной. После некоторого дополнительного поиска я нашел этот SO сообщение, которое дало ответ, который работал для моих нужд.

Просто замените <actual-command-line-to-run> на вашу команду. Не забудьте указать полный путь к исполняемому файлу и инкапсулировать его в "кавычки", если в вашем пути есть пробелы.

powershell start-process <actual-command-line-to-run>

Ответ 2

Ничего себе, кажется, что VS действительно упрям ​​в этом вопросе.

Вы можете использовать этот маленький инструмент, который может запускать приложения, не показывая cmd-окна (между прочим). В вашем событии после сборки:

c:\path\to\cmdow /run app.exe

Ответ 3

Это, похоже, известная проблема VS 2010 (например здесь и здесь), и, похоже, в ближайшее время не будет исправлено.

Что касается возможного обходного пути, аналогичного тому, который упоминается в @RichieHindle, один из сотрудников MS Connect предлагает:

START /WAIT cmd /c YourPostBuildTool.exe

Ответ 4

Работа вашей тестовой программы через start может работать. Измените шаг своей публикации:

runtest.exe

:

start runtest.exe

Ответ 5

Если вы используете круиз-контроль для своих сборников, вы можете поместить это в раздел издателей, который позволяет завершить сборку, прежде чем запускать задачи издателя.

Кроме того, пользовательская задача msbuild довольно сложна для сборки, если вы знаете, как открутить процесс в .net, тогда это действительно просто делать в msbuild. Для этого вы можете отредактировать файл .csproj или ваш .proj build script, чтобы использовать эту настраиваемую задачу.

using System;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;

namespace MyTasks
{
public class SimpleTask : Task
{
    public override bool Execute()
    {
//something involving Process.Start
        return true;
    }
}
}

Затем в вашем файле сборки script или csproj вы добавляете использование для созданной задачи и вызываете ее.

Ответ 7

Я потратил немало времени, пытаясь понять это. Что вам нужно сделать, так это разместить "cmd" в качестве первой строки вашего события после сборки.

Пример может выглядеть так:

cmd
xcopy /Y $(ProjectDir)$(OutputDir)* C:\SomePath\*