Jak uruchomić program z argumentami podczas debugowania?
Chcę debugować program w Visual Studio 2008. Problem polega na tym, że kończy się, jeśli nie otrzyma argumentów. Jest to z głównej metody:
if (args == null || args.Length != 2 || args[0].ToUpper().Trim() != "RM")
{
Console.WriteLine("RM must be executed by the RSM.");
Console.WriteLine("Press any key to exit program...");
Console.Read();
Environment.Exit(-1);
}
Nie chcę tego komentować, a potem wracać podczas kompilacji. Jak uruchomić program z argumentami podczas debugowania? Jest ustawiony jako projekt startowy.
6 answers
Przejdź do Project-><Projectname> Properties
. Następnie kliknij kartę Debug
i wypełnij swoje argumenty w polu tekstowym o nazwie Command line arguments
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-25 08:02:21
Sugerowałbym użycie dyrektyw Jak poniżej:
static void Main(string[] args)
{
#if DEBUG
args = new[] { "A" };
#endif
Console.WriteLine(args[0]);
}
Powodzenia!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-13 08:08:06
Sugerowałbym użycie testów jednostkowych.
W aplikacji wykonaj następujące przełączniki w Program.cs
:
#if DEBUG
public class Program
#else
class Program
#endif
I to samo dla static Main(string[] args)
.
Lub alternatywnie użyć Friend Assemblies dodając
[assembly: InternalsVisibleTo("TestAssembly")]
Do twojego AssemblyInfo.cs
.
Następnie utwórz projekt testu jednostkowego i test, który wygląda trochę tak:
[TestClass]
public class TestApplication
{
[TestMethod]
public void TestMyArgument()
{
using (var sw = new StringWriter())
{
Console.SetOut(sw); // this makes any Console.Writes etc go to sw
Program.Main(new[] { "argument" });
var result = sw.ToString();
Assert.AreEqual("expected", result);
}
}
}
W ten sposób możesz, w sposób automatyczny, przetestować wiele wejść argumentów bez konieczności edycji kodu lub zmiany ustawienia menu co czas sprawdzić coś innego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-12 11:50:46
Przyszedłem na tę stronę, ponieważ mam poufne informacje w parametrach wiersza poleceń i nie chciałem, aby były przechowywane w repozytorium kodu. Używałem systemowych zmiennych środowiskowych do przechowywania wartości, które mogą być ustawiane na każdej maszynie kompilacyjnej lub rozwojowej w razie potrzeby dla każdego celu. Rozszerzenie zmiennych środowiskowych działa świetnie w procesach wsadowych powłoki, ale nie w Visual Studio.
Opcje Startowe Visual Studio:
Jednak Wizualne Studio nie zwróci wartości zmiennej, ale nazwę zmiennej.
przykład problemu:
Moim ostatecznym rozwiązaniem po wypróbowaniu kilku tutaj na S. O. było napisanie szybkiego wyszukiwania zmiennej środowiskowej w moim procesorze argumentów. Dodałem sprawdzanie % w wartości zmiennej przychodzącej, a jeśli zostanie znaleziona, wyszukaj zmienną środowiskową i zastąp wartość. Działa to w Visual Studio i w moim środowisku budowania.
foreach (string thisParameter in args)
{
if (thisParameter.Contains("="))
{
string parameter = thisParameter.Substring(0, thisParameter.IndexOf("="));
string value = thisParameter.Substring(thisParameter.IndexOf("=") + 1);
if (value.Contains("%"))
{ //Workaround for VS not expanding variables in debug
value = Environment.GetEnvironmentVariable(value.Replace("%", ""));
}
To pozwala mi używać tej samej składni w przykładowych plikach wsadowych oraz w debugowaniu za pomocą programu Visual Studio. Brak informacji o koncie lub adresów URL zapisanych w GIT.
przykład użycia W Serii
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-18 13:55:24
Dla Visual Studio Code :
- Otwórz
launch.json
plik - Dodaj args do swojej konfiguracji:
"args": ["jakiś argument", "Inny"],
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-10 10:57:07
Dla aplikacji konsoli. NET Core można to zrobić na dwa sposoby - z launchsettings.json lub menu Właściwości.
Launchsettings.json
Lub kliknij prawym przyciskiem myszy projekt > Właściwości > karta debugowania po lewej stronie
Patrz "Argumenty Aplikacji:"
- to jest "" (spacja) rozdzielone, nie ma potrzeby stosowania przecinków. zacznij pisać. każda spacja "" będzie reprezentować nowy parametr wejściowy.
- (wszelkie zmiany, które tu wprowadzicie, znajdą odzwierciedlenie w launchsettings.plik json...)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-14 05:01:53