将.NET Core App添加到命令行路径

时间:2017-02-13 14:15:56

标签: c# .net-core

过去我制作了一些简单的C#命令行应用程序,并将它们放在我添加到PATH环境变量的目录中。例如,我创建了一个工具来打开当前目录中的随机图像。此可执行文件位于:

C:\Users\myuser\Scripts\RandomImage.exe

然后我会导航到一个目录,我有一堆图像,我可以从命令行运行它:

L:\Resources\SourceFiles> RandomImage

它会打开一个随机图像。我怎么能用.NET Core做到这一点?我已根据指示from the docs修改了project.json

"version": "1.0.0-*",
"buildOptions": {
  "emitEntryPoint": true
},

"dependencies": {
  "Microsoft.NETCore.App": {
    "version": "1.0.1"
  }
},

"frameworks": {
    "netcoreapp1.0": {
        "imports": "dnxcore50"
    }
},

"runtimes": {
    "win10-x64": {}
}

然后我运行指定运行时的publish命令。

dotnet publish -c release -r win10-x64

有了这个,我可以导航到发布目录并在任何Windows 10(64位)计算机上运行我的可执行文件。但我需要该文件的完整路径才能从任何其他目录运行它。有没有办法在不需要完整路径的情况下使用.NET Core执行此操作?我有几个这样的小应用程序,我在不同的机器上使用它们,所以我不想在每台机器上为每个应用程序添加一个环境变量。

1 个答案:

答案 0 :(得分:0)

解决此问题的一种简单方法(假设您的PATH上有dotnet)将创建一个简单的CMD脚本来启动该程序。

示例

CMD所在的目录(预计在路径上):C:\Users\myuser\Scripts
您部署到的目录:C:\Users\myuser\Scripts\RandomImage
CMD文件的名称:RandomImage.cmd

CMD文件的内容:

@dotnet "%~dp0\RandomImage\RandomImage.dll" %*

%~dp0 是脚本本身的路径
%* 传递DLL的所有参数

然后您可以像这样使用它:

L:\Resources\SourceFiles> RandomImage arg1 arg2