Aspnetcore: ν”„λ‘œμ νŠΈμ˜ dotnet-watchκ°€ μƒˆ νŒŒμΌμ„ κ°μ§€ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

에 λ§Œλ“  2019λ…„ 03μ›” 08일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: dotnet/aspnetcore

버그 μ„€λͺ…

"파일 κ°μ‹œμžλ₯Ό μ‚¬μš©ν•˜μ—¬ ASP.NET Core μ•± 개발"에 μ„€λͺ…λœ ν”„λ‘œμ νŠΈμ˜ dotnet-watch , 특히 dotnet watch μ‚¬μš©ν•˜μ—¬ ν…ŒμŠ€νŠΈ μ‹€ν–‰ μ„Ήμ…˜μ€ μƒˆ 파일의 μΆ”κ°€λ₯Ό κ°μ§€ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

μž¬ν˜„ν•˜κΈ° μœ„ν•΄

ν”„λ‘œμ νŠΈμ˜ 디렉터리λ₯Ό λ§Œλ“­λ‹ˆλ‹€.

mkdir DotNetWatcherIssueDemo

ν”„λ‘œμ νŠΈ λ””λ ‰ν† λ¦¬λ‘œ λ³€κ²½:

cd DotNetWatcherIssueDemo

μƒˆ ν…ŒμŠ€νŠΈ ν”„λ‘œμ νŠΈλ‘œ μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€.

dotnet new nunit

ν…ŒμŠ€νŠΈ ν”„λ‘œμ νŠΈκ°€ ν¬ν•¨λœ λ””λ ‰ν„°λ¦¬μ—μ„œ VS Codeλ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€.

code .

ν”„λ‘œμ νŠΈλ₯Ό 보고 λ³€κ²½ 사항에 λŒ€ν•œ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜λ„λ‘ μš”μ²­:

dotnet watch test

이 λ‹¨κ³„μ—μ„œ 좜λ ₯이 ν‘œμ‹œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

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...

이제 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 은 λ³€κ²½ 사항을 μ„ νƒν•˜κ³  _two_ ν…ŒμŠ€νŠΈλ₯Ό μ„±κ³΅μ μœΌλ‘œ μ‹€ν–‰ν•˜κ³  κ³„μ†ν•΄μ„œ μΆ”κ°€ 파일 λ³€κ²½ 사항을 κ°μ‹œν•©λ‹ˆλ‹€.

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...

λ³„λ„μ˜ μ…Έμ—μ„œ cd ν”„λ‘œμ νŠΈ 디렉터리에 μƒˆ ν…ŒμŠ€νŠΈ νŒŒμΌμ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

dotnet new nunit-test -n UnitTest2 -o .

μ˜ˆμƒλ˜λŠ” 행동

λ§ˆμ§€λ§‰ λ‹¨κ³„μ—μ„œ dotnet watch κ°€ μƒˆ 파일 λ³€κ²½ 사항을 μ„ νƒν•˜κ³  λͺ¨λ“  ν…ŒμŠ€νŠΈλ₯Ό λΉŒλ“œ 및 μž¬μ‹€ν–‰ν•  κ²ƒμœΌλ‘œ μ˜ˆμƒν–ˆμ§€λ§Œ 아무 μž‘μ—…λ„ μˆ˜ν–‰ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

파일의 정적 λͺ©λ‘μ„ μž‘μ„±ν•˜κ³  λ³€κ²½ μ‚¬ν•­λ§Œ κ°μ‹œν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. ν”„λ‘œμ νŠΈ 파일( DotNetWatcherIssueDemo.csproj )을 ν„°μΉ˜/κ°•μ œ μ €μž₯ν•˜λ©΄ dotnet watch κ°€ λ³€κ²½ 사항을 κ°μ§€ν•˜κ³  κ°μ‹œ λͺ©λ‘μ„ λ‹€μ‹œ λΉŒλ“œν•˜κ³  μΆ”κ°€λœ 파일의 λ³€κ²½ 사항을 κ°μ§€ν•˜μ§€λ§Œ λ‹€μ‹œ 이후 μΆ”κ°€λœ 파일.

μΆ”κ°€ μ»¨ν…μŠ€νŠΈ

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

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ½”λ“œμ˜ λ‹€μŒ 주석에 λ”°λ₯΄λ©΄ 이것은 λΆ„λͺ…νžˆ 버그이며 λΆ€μ‘±ν•©λ‹ˆλ‹€.

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

λ‚˜λŠ” 그것이 ν•œκ³„λΌλ©΄ 어디에도 λ¬Έμ„œν™”λ˜μ–΄ μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 버그라고 λ§ν•©λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

μ½”λ“œμ˜ λ‹€μŒ 주석에 λ”°λ₯΄λ©΄ 이것은 λΆ„λͺ…νžˆ 버그이며 λΆ€μ‘±ν•©λ‹ˆλ‹€.

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

λ‚˜λŠ” 그것이 ν•œκ³„λΌλ©΄ 어디에도 λ¬Έμ„œν™”λ˜μ–΄ μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 버그라고 λ§ν•©λ‹ˆλ‹€.

이에 λŒ€ν•œ 진전이 μžˆμŠ΅λ‹ˆκΉŒ?

이것에 λŒ€ν•΄ +1.

λ‚˜λŠ” 단지 ν…ŒμŠ€νŠΈλ₯Ό λ°˜λ³΅ν•˜κ³ , 좜λ ₯을 μŠΉμΈν•˜κ³ , ν…ŒμŠ€νŠΈλ₯Ό μž¬μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν•˜λŠ” Verifyλ₯Ό μ‚¬μš© ν•˜μ—¬ κ½€ 멋진 μ›Œν¬ν”Œλ‘œ 섀정을 가지고 μžˆμŠ΅λ‹ˆλ‹€. λΆ€μ‘±ν•œ μœ μΌν•œ 뢀뢄은 μƒˆ 파일둜 ν…ŒμŠ€νŠΈ μŠ€μœ„νŠΈλ₯Ό ν™•μž₯ν•˜λ €λŠ” κ²½μš°μž…λ‹ˆλ‹€.

ν•΄κ²° 방법은 ν…ŒμŠ€νŠΈ 클래슀λ₯Ό λ™μΌν•œ νŒŒμΌμ— 계속 μΆ”κ°€ν•œ λ‹€μŒ λ‚˜μ€‘μ— λΆ„ν• ν•˜λŠ” κ²ƒμ΄μ§€λ§Œ μ•½κ°„ κ³ ν†΅μŠ€λŸ½μŠ΅λ‹ˆλ‹€. νŽΈμ§‘: λ‚˜μ€‘μ— μ œκ±°ν•  λ•Œ 클래슀λ₯Ό μƒˆ 파일둜 이동 ν•˜λŠ” λΉ λ₯Έ λ¦¬νŒ©ν† λ§ 으둜 λ‚˜μ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰