Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 使用dotnet运行运行.NET核心应用程序的多个并行实例_Asp.net Core - Fatal编程技术网

Asp.net core 使用dotnet运行运行.NET核心应用程序的多个并行实例

Asp.net core 使用dotnet运行运行.NET核心应用程序的多个并行实例,asp.net-core,Asp.net Core,我得到以下错误: C:\程序 Files\dotnet\sdk\2.0.3\Microsoft.Common.CurrentVersion.targets(4052,5): 警告MSB3026:无法将“obj\Debug\netcoreapp2.0\MyApp.dll”复制到 “bin\Debug\netcoreapp2.0\MyApp.dll”。开始在1000毫秒内重试1次。这个 进程无法访问该文件 “C:\stackoverflow\MyApp\bin\Debug\netcoreapp2.0

我得到以下错误:

C:\程序 Files\dotnet\sdk\2.0.3\Microsoft.Common.CurrentVersion.targets(4052,5): 警告MSB3026:无法将“obj\Debug\netcoreapp2.0\MyApp.dll”复制到 “bin\Debug\netcoreapp2.0\MyApp.dll”。开始在1000毫秒内重试1次。这个 进程无法访问该文件 “C:\stackoverflow\MyApp\bin\Debug\netcoreapp2.0\MyApp.dll”,因为它 正在被另一个进程使用。 [C:\stackoverflow\MyApp\MyApp.csproj]

尝试使用
dotnet时,请在同一项目上从不同终端多次运行
。如何在开发时轻松运行同一应用程序的多个实例,而不必复制文件夹


如果我同时启动这两个应用程序,它有时会起作用://

我使用bat文件一次运行了6个应用程序实例。唯一的问题是当我开始构建应用程序并立即运行脚本时。所以我认为您应该确保构建过程结束。然后运行bat文件,例如dotnet,重复运行六次。您的应用程序应被构建为执行此文件

start /d "." dotnet run args
start /d "." dotnet run args
start /d "." dotnet run args
start /d "." dotnet run args
start /d "." dotnet run args
start /d "." dotnet run args

我遇到了同样的问题,并使用--no build选项解决了它:

dotnet run --no-build <path to .dll> <args>

dotnet-run——无构建

还有一种方法,就是设置构建配置的唯一名称,如下所示:

start/d“.”dotnet运行-c Instance1参数
开始/d“.”dotnet运行-c Instance2参数
开始/d“.”dotnet运行-c Instance3参数
开始/d“.”dotnet运行-c Instance4参数
开始/d“.”dotnet运行-c实例5参数
开始/d“.”dotnet运行-c Instance6参数
此外,您不必在项目文件中指定所有构建配置(
MyApp.csproj


在不明确设置配置名称的情况下,将使用默认值,即
Debug
。这就是为什么
Debug
文件夹中的DLL被锁定的原因。

我发现在开发过程中最好的东西是命令行工具

您可以有一个bat文件,该文件将启动多个
dotnet watch run
命令,如

在监视模式下运行不会阻止文件的编辑,并且会在自动编辑源文件后重建并重新运行应用程序

假设您在
src
文件夹中有bat文件,其中包含SomeProject、OtherProject和YetAnotherProject文件夹,其中包含csproj文件。然后bat文件可能看起来像:

start /d "%~dp0\SomeProject"       dotnet watch run SomeProject
start /d "%~dp0\OtherProject"      dotnet watch run OtherProject
start /d "%~dp0\YetAnotherProject" dotnet watch run YetAnotherProject

运行此bat文件后,将有三个终端运行
dotnet watch run
命令。

谢谢您的回答。创建2个(或更多)的.bat文件,每个文件都有自己的“dotnet run x”行,这样做行不通。只有第一个将运行,随后的将立即关闭。我需要为每个实例使用不同的命令行参数。一个文件有六个实例:这对我有用,也许你没有Console.ReadLine();“我看到它们确实在两个终端中打开,不幸的是其中一个仍然立即关闭:/I我猜这与手动打开两个终端并执行命令相同,但至少当您手动操作时,终端不会自动关闭:/I将尝试添加Console.ReadLine();最后,查看是否有帮助:)其中一个仍然关闭,即使在末尾有Console.ReadLine。我尝试启动的应用程序有两个实例,一直运行到终止(在本例中,只有一个实例会这样做,因为另一个实例会终止)。我很惊讶这会是一个问题,因为在开发带有命令行参数的控制台应用程序时,我希望这是一件非常正常的事情。这是正确的答案。您不需要dll路径,可以将参数放在--no build的任一侧。