Ответ 1
Перейдите к Project-><Projectname> Properties
. Затем перейдите на вкладку Debug
и введите свои аргументы в текстовое поле Command line arguments
.
Я хочу отлаживать программу в Visual Studio 2008. Проблема в том, что она завершается, если она не получает аргументы. Это из основного метода:
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);
}
Я не хочу комментировать это, а затем снова при компиляции. Как запустить программу с аргументами при отладке? Он задан как проект StartUp.
Перейдите к Project-><Projectname> Properties
. Затем перейдите на вкладку Debug
и введите свои аргументы в текстовое поле Command line arguments
.
Я бы предложил использовать директивы следующим образом:
static void Main(string[] args)
{
#if DEBUG
args = new[] { "A" };
#endif
Console.WriteLine(args[0]);
}
Удачи!
Мое предложение будет использовать юнит-тесты.
В вашем приложении выполните следующие действия в Program.cs
:
#if DEBUG
public class Program
#else
class Program
#endif
и то же самое для static Main(string[] args)
.
Или, в качестве альтернативы, используйте сборки друзей, добавив
[assembly: InternalsVisibleTo("TestAssembly")]
на ваш AssemblyInfo.cs
.
Затем создайте проект модульного теста и тест, который выглядит примерно так:
[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);
}
}
}
Таким образом, вы можете автоматически тестировать несколько входов аргументов без необходимости редактировать код или изменять настройки меню каждый раз, когда вы хотите проверить что-то другое.
Для кода Visual Studio:
launch.json
"args": ["некоторый аргумент", "другой аргумент"],