Częścią postu opartego na moim projekcie jest wykonanie napisanego przeze mnie programu do testowania głównej aplikacji. Niestety, proces budowania postów w visual studio blokuje oczekiwanie na wyjście pliku wykonywalnego. Tak więc utknąłem, zamykając mój program testowy, aby zakończyć proces tworzenia postów i uruchomić moją aplikację. Jak mogę to zmienić, aby VS nie czekał na powrót programu przed uruchomieniem? Dzięki.Zdarzenia kompilacji programu Visual Studio utknęły w oczekiwaniu na zakończenie pliku wykonywalnego przed uruchomieniem aplikacji w trybie debugowania.
Odpowiedz
Uruchomienie programu testowego przez start
może działać. Zmień swój krok po kompilacji z tego:
runtest.exe
do tego:
start runtest.exe
Wow, wydaje VS jest bardzo uparty o tym.
Możesz użyć tego małego tool, który może uruchamiać aplikacje bez pokazywania okien cmd (między innymi). W wydarzeniu post produkcji:
c:\path\to\cmdow /run app.exe
działa świetnie! dzięki –
To narzędzie uruchomi skrypt budowania postu ASYNCHRONOUSLY! – Garfield
Wygląda na to, że jest to najlepsze rozwiązanie, ale wymaga użycia osobnego narzędzia. Szukam polecenia wsadowego lub kodu C#, który umożliwiłby uruchamianie tego typu poleceń uruchamianych przez fire & forget ze zdarzenia budowania postu. –
Jeśli wykorzystują cruise control dla Twojego buduje, można umieścić to w sekcji wydawców, która pozwala budować, aby zakończyć przed uruchomieniem zadania wydawcy.
Dodatkowo, budowanie custom msbuild task jest dość banalne, jeśli wiesz, jak rozpracować proces w .net, to jest to naprawdę proste w msbuild. Aby to zrobić, możesz edytować plik .csproj lub skrypt kompilacji .proj, aby użyć tego niestandardowego zadania.
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;
}
}
}
Następnie w swoim skrypcie kompilacji lub pliku csproj dodajesz użycie utworzonego zadania i wywołujesz je.
To wydaje się być znany problem z VS 2010 (np here i here) i wydaje się, że nie zostanie ustalona że wkrótce.
Odnośnie ewentualnego obejścia, podobnego do wspomnianego przez @RichieHindle, jednej z osób MS Connect, proponuje:
START /WAIT cmd /c YourPostBuildTool.exe
Myślę, że ta opcja jest lepsza niż wersja programu Power Shell, ponieważ nie należy polegać na powłoce powershell. Mówiąc to, myślę, że w dzisiejszych czasach powershell ułatwiłoby wsparcie dla różnych platform. – Tyeth
wysłał łatkę do MSBuild Extension Pakiet, który implementuje własne zadanie MSBuild nazwie SmartExec że działa wokół tego problemu.
http://msbuildextensionpack.codeplex.com/workitem/9053
http://msbuildextensionpack.codeplex.com/SourceControl/list/patches
patch Id 9878
To właśnie zostało popełnione w ramach Change Set 69252. –
Uważam również, że start
sztuczka nie działa i pobierania odrębnego narzędzia, aby zakończyć takie proste zadanie wydawało się nadmierne. Po kilku dodatkowych poszukiwaniach znalazłem this SO post, który dał odpowiedź, która działała dla moich potrzeb.
Wystarczy zastąpić <actual-command-line-to-run>
swoim poleceniem. Pamiętaj o podaniu pełnej ścieżki do pliku wykonywalnego i enkapsulacji go w "cudzysłowie", jeśli na twojej ścieżce znajdują się spacje.
powershell start-process <actual-command-line-to-run>
To działało dla mnie i imho jest najlepszym rozwiązaniem, ponieważ nie wymaga zewnętrznego narzędzia. –
To samo, jedyne rozwiązanie, jeśli zostało znalezione, które działało bez zewnętrznego narzędzia. – misterfrb
Jeśli próbujesz wywołać CMD z komendy 'Start-Process' z argumentami, musisz" podwójnie uciec "z twoich ofert - np. 'powershell start-process" cmd ""/K echo HelloWorld "" "' – Coruscate5
Spędziłem znaczną ilość czasu, próbując to zrozumieć. Musisz umieścić "cmd" jako pierwszą linię wydarzenia po kompilacji.
Przykładem może wyglądać następująco:
cmd
xcopy /Y $(ProjectDir)$(OutputDir)* C:\SomePath\*
- 1. Jak zamknąć program Visual Studio przed uruchomieniem kompilacji?
- 2. Podpisywanie pliku wykonywalnego C++ w Visual Studio
- 3. Jak uniknąć publikowania aplikacji ASP.NET w trybie debugowania z programu Visual Studio?
- 4. Visual Studio 2015 - aplikacja ASP.Net nie uruchomi się przed ponownym uruchomieniem Visual Studio
- 5. Różnice między uruchamianiem pliku wykonywalnego z debugerem Visual Studio a bez debugowania
- 6. Debugowanie pliku wykonywalnego w studio graficznym
- 7. Nunit nie działa metoda SetUp w trybie debugowania Visual Studio
- 8. Używanie niestandardowej konsoli do debugowania aplikacji konsoli programu Visual Studio
- 9. jQuery - Oczekiwanie na zakończenie fadeOut przed uruchomieniem fadeIn
- 10. Limit czasu w oczekiwaniu na zakończenie partii kontraktów Futures?
- 11. "@echo on" dla pliku wsadowego zdarzenia kompilacji w programie Visual Studio 2012
- 12. Uruchom narzędzie niestandardowe programu Visual Studio w czasie kompilacji
- 13. Oczekiwanie na zakończenie zdarzenia
- 14. testowe dane wejściowe/wyjściowe aplikacji konsoli programu Visual Studio 2012
- 15. Projekt wdrażania programu Visual Studio - Utwórz skrót do wdrożonego pliku wykonywalnego
- 16. Użycie debugowania w trybie mieszanym w teście zarządzanej jednostki w programie Visual Studio 2013
- 17. Visual Studio: Edytuj plik XAML podczas debugowania
- 18. Jak włączyć/wyłączyć ostrzeżenie o błędach kompilacji w Visual Studio
- 19. Wdrażanie aplikacji Qt C++ z programu Visual Studio qwindows.dll błąd
- 20. Wyjątek XamlParseException podczas debugowania aplikacji WPF za pomocą programu Visual Studio 2015
- 21. Transformacja T4 i kolejność kompilacji w Visual Studio
- 22. Wykryj odtwarzanie w trybie 2.2.x przed uruchomieniem aplikacji za pomocą Java
- 23. Visual Studio Statystyki kompilacji
- 24. Jak zatrzymać program Visual Studio przed tworzeniem folderów debugowania pdb?
- 25. Czy można publikować zdarzenia kompilacji zdarzeń programu Visual Studio przy publikowaniu ClickOnce?
- 26. Ignoruj projekt w Visual Studio podczas debugowania
- 27. Testowanie rodzimych wersji programu Visual Studio: Wyjście debugowania/konsoli?
- 28. Czy kompilacja debugowania programu Visual Studio zawiera jakiekolwiek dane osobowe?
- 29. instrukcja kompilacji przy użyciu sassy studio w visual studio
- 30. Czekać na zakończenie programu jQuery() przed kontynuowaniem funkcji?
nie działa. Po prostu otwiera wiersz poleceń. Czy składnia jest nieprawidłowa? start "$ (ProjectDir) DDEClient \ program.exe" oryginalny był "$ (ProjectDir) DDEClient \ program.exe" – max
Może 'cmd/c start "$ (ProjectDir) DDEClient \ program.exe"' ? – RichieHindle
Brak szczęścia. Udało mi się go uruchomić, pisząc skrypt z automatycznym kluczem, który uruchamia moją aplikację za pomocą polecenia Uruchom. Dziękuję za pomoc. Zostało to docenione. – max