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

时间:2021-03-12 20:27:40

标签: powershell .net-core console

我一直在开发我的第一个 .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\0.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: No project was found. 我试过了为我的程序运行 .csproj 文件而不是 .dll,但这会导致相同的结果。

我觉得我在这里错过了一些非常明显的东西,但是由于我缺乏 PowerShell 的经验以及与我一起工作的没有人使用它的事实,我仍然没有找到为什么程序无法运行手动输入此数据时从脚本完美运行。该程序完全按预期运行,我知道它没有任何问题;我只需要弄清楚如何让这些脚本停止出现错误。

对于任何好奇的人:我正在运行 .NET Core 2.1.507,并安装了这些运行时:

  • Microsoft.AspNetCore.All 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  • Microsoft.AspNetCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  • Microsoft.NETCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

C:\Windows\system32

以及用户级别的

C:\用户\用户名

换句话说,你必须像第一次打开它一样对待你的 PS1 脚本。有很多方法可以解决这个问题,但如果你告诉脚本在何处运行文件,它就会起作用。

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

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

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

如果您需要更多帮助,请将 ps1 脚本附加到这篇文章中,我们可以从那里开始

enter image description here

相关问题