无法使用CommandLineParser包运行程序

时间:2016-01-22 11:05:55

标签: c# cmd command-line-parser

我正在尝试使用CommandLineParser向我的应用程序添加一些命令行参数:

using CommandLine;
using System;


namespace ConsoleApplication1
{
    class Options
    {
        [Option('s', "site", Required = true,
            HelpText = "The site to connect to. Please include http://")]
        public string sitename { get; set; }

        [Option('l', "list", Required = true,
            HelpText = "The list to connect to.")]
        public string listname { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var options = new Options();

            Parser.Default.ParseArguments(args, options);

            Console.WriteLine(options.sitename);
            Console.WriteLine("\n");
            Console.WriteLine(options.listname);
        }
    }
}

但是,当我尝试从CMD调用它时:

test -s sitename -l listname

我收到此错误:

Unhandled Exception: System.IO.FieNotFoundEsxcepion: Could not load file or assembly 'CommandLine, Version=1.9.71.2, Culture=neutral, PublicKeytoken=de6f01bd326f8c32', or one of its dependancies. The system cannot find the file specified. at ConsoleApplication1.Program.Main(String[] args)

我已经安装了CommandLineParser包,我可以在我的引用列表中看到它。当我导航到此文件夹时:\\file\IT\SK\Visual Studio Projects\ConsoleApplication1\packages\CommandLineParser.1.9.71\lib\net40我可以看到有CommanLine.dllCommandLine.xml

有人可以向我解释这里发生了什么吗?

更新

如果我禁用ClickOnce安全设置,我可以在Visual Studio中使用命令行运行它,并且它可以正常工作。但是,当我发布应用程序时,会自动选择此选项并且问题仍然存在。

使用命令行参数调试并启用ClickOnce安全性时,args []为空...

2 个答案:

答案 0 :(得分:1)

dll是否也在bin输出文件夹中?如果没有,请检查引用的属性并检查“copy local”是否为真。

答案 1 :(得分:1)

这是一项安全功能。您的可执行文件驻留在网络上,不可信任访问其他网络资源。 如果你把所有东西都复制到本地文件夹,我敢打赌它会起作用。