执行控制台 .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,安装了 运行 次:
- 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]
提前致谢!
您必须记住,当 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,我们可以从那里开始
我一直在开发我的第一个 .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,安装了 运行 次:
- 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]
提前致谢!
您必须记住,当 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,我们可以从那里开始