使用dotnet运行运行.NET Core App的多个并行实例

时间:2018-01-19 10:30:48

标签: asp.net-core

我收到以下错误:

  

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

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

如果我在同一时间开始,它有时会起作用:/

4 个答案:

答案 0 :(得分:5)

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

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

请查看: MSDN documentation

答案 1 :(得分:4)

我已经使用bat文件一次运行6个app实例。唯一的问题是我开始构建应用程序并立即运行脚本。所以我认为你应该确保构建过程结束。然后运行你的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

答案 2 :(得分:0)

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

start /d "." dotnet run -c Instance1 args
start /d "." dotnet run -c Instance2 args
start /d "." dotnet run -c Instance3 args
start /d "." dotnet run -c Instance4 args
start /d "." dotnet run -c Instance5 args
start /d "." dotnet run -c Instance6 args

此外,您不必在项目文件(MyApp.csproj)中指定所有构建配置。

在未显式设置配置名称的情况下,将使用默认值Debug。这就是Debug文件夹中的DLL被锁定的原因。

答案 3 :(得分:0)

我发现开发中最好的东西是dotnet watch命令行工具。

您可能有一个蝙蝠文件,它将启动多个in MateuszWkDev's answer之类的dotnet watch run <project>命令。

以监视模式运行不会阻止文件编辑,并且一旦您将自动编辑源文件,便会重建并重新运行应用程序。

假设您在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 <project>命令的终端。