diff --git a/vs4win/Chapter04/Chapter04.sln b/vs4win/Chapter04/Chapter04.sln
index da1dca3..a9ee909 100644
--- a/vs4win/Chapter04/Chapter04.sln
+++ b/vs4win/Chapter04/Chapter04.sln
@@ -17,11 +17,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CallStackExceptionHandlingL
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CallStackExceptionHandling", "CallStackExceptionHandling\CallStackExceptionHandling.csproj", "{B856E873-E17A-400D-98B5-165C3DF976AF}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ch04Ex02PrimeFactorsApp", "Ch04Ex02PrimeFactorsApp\Ch04Ex02PrimeFactorsApp.csproj", "{3B2B2F8A-FCB9-4C9D-85EE-D2433213D771}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ch04Ex02PrimeFactorsApp", "Ch04Ex02PrimeFactorsApp\Ch04Ex02PrimeFactorsApp.csproj", "{3B2B2F8A-FCB9-4C9D-85EE-D2433213D771}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ch04Ex02PrimeFactorsLib", "Ch04Ex02PrimeFactorsLib\Ch04Ex02PrimeFactorsLib.csproj", "{5BD87DA8-3F4B-4CF7-A225-3E7030A1944C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ch04Ex02PrimeFactorsLib", "Ch04Ex02PrimeFactorsLib\Ch04Ex02PrimeFactorsLib.csproj", "{5BD87DA8-3F4B-4CF7-A225-3E7030A1944C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ch04Ex02PrimeFactorsTests", "Ch04Ex02PrimeFactorsTests\Ch04Ex02PrimeFactorsTests.csproj", "{878F1F7E-D3AD-4BF2-A66E-4EDDE7229566}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ch04Ex02PrimeFactorsTests", "Ch04Ex02PrimeFactorsTests\Ch04Ex02PrimeFactorsTests.csproj", "{878F1F7E-D3AD-4BF2-A66E-4EDDE7229566}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HotReloading", "HotReloading\HotReloading.csproj", "{419ABE5B-ED3A-4F4A-8D64-1346B9E50D65}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -69,6 +71,10 @@ Global
{878F1F7E-D3AD-4BF2-A66E-4EDDE7229566}.Debug|Any CPU.Build.0 = Debug|Any CPU
{878F1F7E-D3AD-4BF2-A66E-4EDDE7229566}.Release|Any CPU.ActiveCfg = Release|Any CPU
{878F1F7E-D3AD-4BF2-A66E-4EDDE7229566}.Release|Any CPU.Build.0 = Release|Any CPU
+ {419ABE5B-ED3A-4F4A-8D64-1346B9E50D65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {419ABE5B-ED3A-4F4A-8D64-1346B9E50D65}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {419ABE5B-ED3A-4F4A-8D64-1346B9E50D65}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {419ABE5B-ED3A-4F4A-8D64-1346B9E50D65}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/vs4win/Chapter04/HotReloading/HotReloading.csproj b/vs4win/Chapter04/HotReloading/HotReloading.csproj
new file mode 100644
index 0000000..cd63b28
--- /dev/null
+++ b/vs4win/Chapter04/HotReloading/HotReloading.csproj
@@ -0,0 +1,14 @@
+
+
+
+ Exe
+ net7.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/vs4win/Chapter04/HotReloading/Program.cs b/vs4win/Chapter04/HotReloading/Program.cs
new file mode 100644
index 0000000..4c4399a
--- /dev/null
+++ b/vs4win/Chapter04/HotReloading/Program.cs
@@ -0,0 +1,8 @@
+/* Visual Studio: run the app, change the message, click Hot Reload button.
+ * Visual Studio Code: run the app using dotnet watch, change the message. */
+
+while (true)
+{
+ WriteLine("Goodbye, Hot Reload!");
+ await Task.Delay(2000);
+}
\ No newline at end of file
diff --git a/vscode/Chapter04/Chapter04.code-workspace b/vscode/Chapter04/Chapter04.code-workspace
index e23c290..2816201 100644
--- a/vscode/Chapter04/Chapter04.code-workspace
+++ b/vscode/Chapter04/Chapter04.code-workspace
@@ -14,6 +14,24 @@
},
{
"path": "CalculatorLibUnitTests"
+ },
+ {
+ "path": "HotReloading"
+ },
+ {
+ "path": "CallStackExceptionHandlingLib"
+ },
+ {
+ "path": "CallStackExceptionHandling"
+ },
+ {
+ "path": "Ch04Ex02PrimeFactorsLib"
+ },
+ {
+ "path": "Ch04Ex02PrimeFactorsApp"
+ },
+ {
+ "path": "Ch04Ex02PrimeFactorsTests"
}
]
}
\ No newline at end of file
diff --git a/vscode/Chapter04/HotReloading/HotReloading.csproj b/vscode/Chapter04/HotReloading/HotReloading.csproj
new file mode 100644
index 0000000..cd63b28
--- /dev/null
+++ b/vscode/Chapter04/HotReloading/HotReloading.csproj
@@ -0,0 +1,14 @@
+
+
+
+ Exe
+ net7.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/vscode/Chapter04/HotReloading/Program.cs b/vscode/Chapter04/HotReloading/Program.cs
new file mode 100644
index 0000000..4c4399a
--- /dev/null
+++ b/vscode/Chapter04/HotReloading/Program.cs
@@ -0,0 +1,8 @@
+/* Visual Studio: run the app, change the message, click Hot Reload button.
+ * Visual Studio Code: run the app using dotnet watch, change the message. */
+
+while (true)
+{
+ WriteLine("Goodbye, Hot Reload!");
+ await Task.Delay(2000);
+}
\ No newline at end of file