4

我正在尝试使用以下命令向我的应用程序添加一些命令行参数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我可以看到有 aCommanLine.dll和 a CommandLine.xml

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


更新

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

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

4

2 回答 2

1

dll也在bin输出文件夹中吗?如果不是,请检查引用的属性并检查“复制本地”是否为真。

于 2016-01-22T11:10:36.717 回答
1

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

于 2016-01-22T12:14:12.030 回答