微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从命令提示符运行控制台应用程序

如何解决从命令提示符运行控制台应用程序

我使用 Jetbrains Rider 创建了一个控制台应用程序。然后我将控制台应用程序发布到一个文件夹。我将该文件添加到我的系统路径中。我可以运行 echo %PATH% 并看到文件夹在路径中,但是如果我在文件夹内,我只能运行控制台应用程序。如果我输入可执行文件的完整路径,它就不起作用。

C:\Program Files

我还检查了另一个文件文件权限,这似乎是一样的。我禁用了病毒防护,但也没有解决问题。

关于为什么这不会运行的任何想法?我正在运行 Windows 10。

解决方

在创建应用程序配置时设置基本路径。

builder
    .SetBasePath(Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location)) // set the base path
    .AddJsonFile("appsettings.json",optional: false,reloadOnChange: true)
    .AddJsonFile($"appsettings.{context.HostingEnvironment.EnvironmentName}.json",optional: true,reloadOnChange: true)
    .AddEnvironmentvariables();

解决方法

您的应用程序编码不佳。它很可能在不使用任何路径的情况下引用存储在可执行文件目录中的其他文件,这意味着使用相对于当前目录的路径来引用文件。

请参阅有关 Naming Files,Paths,and Namespaces 的 Microsoft 文档。

应用程序的当前目录可能是包含应用程序可执行文件的目录,但还有数千个其他目录可以作为启动应用程序的当前目录。

每种编程/脚本语言都有一种方法来确定/获取自身的完整限定路径,即当前执行的可执行或解释的脚本文件存储在哪个目录中,称为应用程序目录程序文件目录脚本目录

此路径必须与可执行文件/脚本所在目录或应用程序/脚本目录的子目录中的其他文件的文件名连接。那么对于可执行文件/脚本来说,哪个目录是当前目录就不再重要了,因为它用全限定名引用了自己的所有文件/文件夹。

解决方案可能在代码中使用:

builder.SetBasePath(Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location))

另见:How can I get the application's path in a .NET console application?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。