执行控制台 .NET Core 程序可以从终端运行,但不能从脚本运行

Executing console .NET Core program works from terminal, but not from script

我一直在开发我的第一个 .NET Core 控制台程序,并正在努力使其通过多个 PowerShell 脚本运行。当从 PowerShell 手动执行我的 FileRelocation 程序时,我转到适当的目录并在终端中输入以下内容:

dotnet .\FileRelocation.dll [commands for .dll]

这执行没有任何问题。但是,当从 .ps1 文件尝试此操作时,我总是收到以下错误:

dotnet : No executable found matching command "dotnet-.\FileRelocation.dll"
At \chimera\home\freerey\My Documents\C# Projects\File Relocation Program[=11=].5.1 Beta\scripts\pstest.ps1:2 char:1
+ dotnet .\FileRelocation.dll -v -e C:\Users\freerey\Desktop\firelloc ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (No executable f...Relocation.dll":String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

从一开始运行进入这个问题,我就尝试在前面写dotnet ef,结果提示Microsoft.EntityFrameworkCore.Tools.CommandException:找不到项目。 我已尝试 运行 将 .csproj 文件用于我的程序而不是 .dll,但这会导致相同的结果。

我觉得我在这里遗漏了一些非常明显的东西,但由于我缺乏使用 PowerShell 的经验,而且与我一起工作的人都没有使用它,我仍然没有找到程序失败的原因手动输入此数据时从脚本到 运行 完美无缺。该程序完全按预期运行,我知道它没有任何问题;我只需要弄清楚如何让这些脚本停止出错。

对于任何好奇的人:我正在 运行ning .NET Core 2.1.507,安装了 运行 次:

提前致谢!

您必须记住,当 PowerShell 运行ning 时,它是 运行ning 在用户级别,除非另有说明。有两种不同的权限,一种就像您 运行宁作为管理员一样。

C:\Windows\system32

还有一个是用户级别

C:\Users\UserName

换句话说,您必须像对待第一次打开脚本一样对待 PS1 脚本。有很多方法可以解决此问题,但如果您告诉脚本 运行 文件的确切位置,它将起作用。

所以我编写的 PowerShell 脚本来测试我的 DotNet 2.1 控制台应用程序,它说你好最终是 (demo.ps1)

dotnet "C:\Users\Neil\Source\Repos\DemoForWhosebug\DemoForWhosebug\bin\Debug\netcoreapp2.1\DemoForWhosebug.dll"

现在请记住,您的应用程序可能比这更复杂,您可以将参数传递给它,但这可能超出了本文的范围。

如果您需要更多帮助,请将 ps1 脚本附加到此 post,我们可以从那里开始