Aspnetcore: dotnet-watch di proyek tidak mendeteksi file baru

Dibuat pada 8 Mar 2019  ·  3Komentar  ·  Sumber: dotnet/aspnetcore

Jelaskan bugnya

dotnet-watch pada proyek seperti yang dijelaskan "Mengembangkan aplikasi Inti ASP.NET menggunakan pengamat file" , dan khususnya bagian Jalankan tes menggunakan dotnet watch , tidak mendeteksi penambahan file baru.

Untuk Mereproduksi

Buat direktori untuk proyek:

mkdir DotNetWatcherIssueDemo

Ubah ke direktori proyek:

cd DotNetWatcherIssueDemo

Inisialisasi dengan proyek pengujian baru:

dotnet new nunit

Luncurkan Kode VS pada direktori yang berisi proyek uji:

code .

Minta untuk menonton proyek dan menjalankan tes pada perubahan:

dotnet watch test

Pada tahap ini, Anda akan melihat output:

watch : Started
Build started, please wait...
Build completed.

Test run for A:\temp\DotNetWatchIssueDemo\bin\Debug\netcoreapp2.2\DotNetWatchIssueDemo.dll(.NETCoreApp,Version=v2.2)
Microsoft (R) Test Execution Command Line Tool Version 15.9.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...

Total tests: 1. Passed: 1. Failed: 0. Skipped: 0.
Test Run Successful.
Test execution time: 0.9364 Seconds
watch : Exited
watch : Waiting for a file to change before restarting dotnet...

Sekarang tambahkan tes baru ke UnitTest1.cs :

diff --git a/UnitTest1.cs b/UnitTest1.cs
index 66ec70e..f6406e7 100644
--- a/UnitTest1.cs
+++ b/UnitTest1.cs
@@ -14,5 +14,11 @@ namespace Tests
         {
             Assert.Pass();
         }
+
+        [Test]
+        public void Test2()
+        {
+            Assert.Pass();
+        }
     }
 }
\ No newline at end of file

dotnet watch akan mengambil perubahan, menjalankan _two_ tes dengan sukses dan terus mengamati perubahan file lebih lanjut:

watch : Started
Build started, please wait...
Build completed.

Test run for A:\temp\DotNetWatchIssueDemo\bin\Debug\netcoreapp2.2\DotNetWatchIssueDemo.dll(.NETCoreApp,Version=v2.2)
Microsoft (R) Test Execution Command Line Tool Version 15.9.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...

Total tests: 2. Passed: 2. Failed: 0. Skipped: 0.
Test Run Successful.
Test execution time: 0.9698 Seconds
watch : Exited
watch : Waiting for a file to change before restarting dotnet...

Di shell terpisah, cd ke dalam direktori proyek dan tambahkan file pengujian baru:

dotnet new nunit-test -n UnitTest2 -o .

Perilaku yang diharapkan

Pada langkah terakhir, saya mengharapkan dotnet watch untuk mengambil perubahan file baru, membangun dan menjalankan kembali semua tes, tetapi tidak melakukan apa-apa.

Tampaknya itu membuat daftar file statis dan hanya mengawasinya untuk perubahan. Jika saya menyentuh/menyimpan paksa file proyek ( DotNetWatcherIssueDemo.csproj ) maka dotnet watch mendeteksi perubahan, membangun kembali daftar pantauan dan mendeteksi perubahan pada file yang ditambahkan, tetapi sekali lagi, bukan untuk yang baru file ditambahkan setelahnya.

Konteks tambahan

Keluaran dari dotnet --info :

.NET Core SDK (reflecting any global.json):
 Version:   2.2.101
 Commit:    236713b0b7

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.17134
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\2.2.101\

Host (useful for support):
  Version: 2.2.0
  Commit:  1249f08fed

.NET Core SDKs installed:
  1.1.8 [C:\Program Files\dotnet\sdk]
  1.1.9 [C:\Program Files\dotnet\sdk]
  1.1.10 [C:\Program Files\dotnet\sdk]
  1.1.11 [C:\Program Files\dotnet\sdk]
  2.1.101 [C:\Program Files\dotnet\sdk]
  2.1.103 [C:\Program Files\dotnet\sdk]
  2.1.104 [C:\Program Files\dotnet\sdk]
  2.1.200 [C:\Program Files\dotnet\sdk]
  2.1.201 [C:\Program Files\dotnet\sdk]
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.300 [C:\Program Files\dotnet\sdk]
  2.1.400 [C:\Program Files\dotnet\sdk]
  2.1.402 [C:\Program Files\dotnet\sdk]
  2.1.403 [C:\Program Files\dotnet\sdk]
  2.1.500 [C:\Program Files\dotnet\sdk]
  2.1.502 [C:\Program Files\dotnet\sdk]
  2.2.101 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 1.0.10 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.0.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.0.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.0.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.1.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.1.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.1.10 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

/cc @natemcmaster

affected-medium area-commandlinetools bug severity-minor

Komentar yang paling membantu

Berdasarkan komentar berikut dalam kode, ini jelas merupakan bug dan kurang:

https://github.com/aspnet/AspNetCore/blob/1f050242559e7b90ff6c4ee7f99d92b3a5af5a62/src/Tools/dotnet-watch/src/Internal/MsBuildFileSetFactory.cs#L66 -L67

Saya mengatakan bug karena jika itu batasan maka itu tidak didokumentasikan di mana pun.

Semua 3 komentar

Berdasarkan komentar berikut dalam kode, ini jelas merupakan bug dan kurang:

https://github.com/aspnet/AspNetCore/blob/1f050242559e7b90ff6c4ee7f99d92b3a5af5a62/src/Tools/dotnet-watch/src/Internal/MsBuildFileSetFactory.cs#L66 -L67

Saya mengatakan bug karena jika itu batasan maka itu tidak didokumentasikan di mana pun.

Ada kemajuan dalam hal ini?

+1 untuk ini.

Saya memiliki pengaturan alur kerja yang cukup manis dengan Verify , yang memungkinkan saya hanya mengulangi pengujian, menyetujui keluaran, dan menjalankan pengujian kembali. Satu-satunya bagian yang kurang adalah ketika saya ingin memperluas test suite saya dengan file baru.

Solusinya adalah terus menambahkan kelas pengujian ke dalam file yang sama dan kemudian membaginya nanti, tetapi ini agak menyakitkan. Sunting: Tidak terlalu buruk dengan refactoring cepat untuk memindahkan kelas ke file baru saat Anda menghapusnya nanti.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat