diff --git a/src/Assets/TestProjects/TestAppThatWaits/Properties/launchSettings.json b/src/Assets/TestProjects/TestAppThatWaits/Properties/launchSettings.json
new file mode 100644
index 000000000000..781a8d29bde8
--- /dev/null
+++ b/src/Assets/TestProjects/TestAppThatWaits/Properties/launchSettings.json
@@ -0,0 +1,12 @@
+{
+ "profiles": {
+ "TestAppThatWaits": {
+ "commandName": "Project",
+ "dotnetRunMessages": "false",
+ "commandLineArgs": "TestAppCommandLineArguments SecondTestAppCommandLineArguments",
+ "environmentVariables": {
+ "MyCoolEnvironmentVariableKey": "MyCoolEnvironmentVariableValue"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Assets/TestProjects/TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse/Program.cs b/src/Assets/TestProjects/TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse/Program.cs
new file mode 100644
index 000000000000..644ce5b625be
--- /dev/null
+++ b/src/Assets/TestProjects/TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse/Program.cs
@@ -0,0 +1,25 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using System;
+
+namespace ConsoleApplication
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ {
+ Console.WriteLine("Hello world");
+ Console.WriteLine($"MyCoolEnvironmentVariableKey={Environment.GetEnvironmentVariable("MyCoolEnvironmentVariableKey")}");
+ Console.WriteLine($"DOTNET_LAUNCH_PROFILE={Environment.GetEnvironmentVariable("DOTNET_LAUNCH_PROFILE")}");
+ if (args.Length > 0)
+ {
+ Console.WriteLine(args[0]);
+ }
+ if (args.Length > 1)
+ {
+ Console.WriteLine(args[1]);
+ }
+ }
+ }
+}
diff --git a/src/Assets/TestProjects/TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse/Properties/launchSettings.json b/src/Assets/TestProjects/TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse/Properties/launchSettings.json
new file mode 100644
index 000000000000..6fadb30c3953
--- /dev/null
+++ b/src/Assets/TestProjects/TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse/Properties/launchSettings.json
@@ -0,0 +1,12 @@
+{
+ "profiles": {
+ "TestAppWithLaunchSettings": {
+ "commandName": "Project",
+ "dotnetRunMessages": "false",
+ "commandLineArgs": "TestAppCommandLineArguments SecondTestAppCommandLineArguments",
+ "environmentVariables": {
+ "MyCoolEnvironmentVariableKey": "MyCoolEnvironmentVariableValue"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Assets/TestProjects/TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse/TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse.csproj b/src/Assets/TestProjects/TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse/TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse.csproj
new file mode 100644
index 000000000000..3ad0617d8666
--- /dev/null
+++ b/src/Assets/TestProjects/TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse/TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse.csproj
@@ -0,0 +1,8 @@
+
+
+
+
+ $(CurrentTargetFramework)
+ Exe
+
+
\ No newline at end of file
diff --git a/src/Cli/dotnet/commands/dotnet-run/RunCommand.cs b/src/Cli/dotnet/commands/dotnet-run/RunCommand.cs
index 6c4e7ac53cf6..a5faf5f7ca4e 100644
--- a/src/Cli/dotnet/commands/dotnet-run/RunCommand.cs
+++ b/src/Cli/dotnet/commands/dotnet-run/RunCommand.cs
@@ -43,7 +43,7 @@ public int Execute()
if (ShouldBuild)
{
- if (string.Equals("true", launchSettings?.DotNetRunMessages, StringComparison.OrdinalIgnoreCase))
+ if (string.Equals("true", launchSettings?.DotNetRunMessages, StringComparison.OrdinalIgnoreCase) || launchSettings?.DotNetRunMessages is null)
{
Reporter.Output.WriteLine(LocalizableStrings.RunCommandBuilding);
}
diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToControlGeneratedAssemblyInfo.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToControlGeneratedAssemblyInfo.cs
index f1241fdd5717..f2c6703c3bac 100644
--- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToControlGeneratedAssemblyInfo.cs
+++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToControlGeneratedAssemblyInfo.cs
@@ -847,6 +847,16 @@ static void Main(string[] args)
var str = typeof(LibraryClass).Assembly.GetCustomAttribute().FrameworkDisplayName;
Console.WriteLine(str);
}
+}";
+ // disabling "Building..." message
+ testProject.SourceFiles["Properties/launchSettings.json"] = @"
+{
+ ""profiles"": {
+ ""TestApp"": {
+ ""commandName"": ""Project"",
+ ""dotnetRunMessages"": ""false""
+ }
+ }
}";
var testAsset = _testAssetsManager.CreateTestProject(testProject, identifier: targetFrameworkVersion);
var buildCommand = new BuildCommand(testAsset);
diff --git a/src/Tests/Microsoft.NET.TestFramework/ProjectConstruction/TestProject.cs b/src/Tests/Microsoft.NET.TestFramework/ProjectConstruction/TestProject.cs
index e6374ef33144..4f54ee112ecf 100644
--- a/src/Tests/Microsoft.NET.TestFramework/ProjectConstruction/TestProject.cs
+++ b/src/Tests/Microsoft.NET.TestFramework/ProjectConstruction/TestProject.cs
@@ -421,7 +421,15 @@ public class {safeThisName}Class
{
foreach (var kvp in SourceFiles)
{
- File.WriteAllText(Path.Combine(targetFolder, kvp.Key), kvp.Value);
+ var path = Path.Combine(targetFolder, kvp.Key);
+
+ var fi = new FileInfo(path);
+ if (!fi.Directory.Exists)
+ {
+ fi.Directory.Create();
+ }
+
+ File.WriteAllText(path, kvp.Value);
}
}
diff --git a/src/Tests/dotnet-run.Tests/GivenDotnetRunRunsCsProj.cs b/src/Tests/dotnet-run.Tests/GivenDotnetRunRunsCsProj.cs
index 083bb14fdf9a..944c28b25be7 100644
--- a/src/Tests/dotnet-run.Tests/GivenDotnetRunRunsCsProj.cs
+++ b/src/Tests/dotnet-run.Tests/GivenDotnetRunRunsCsProj.cs
@@ -129,7 +129,7 @@ public void ItCanRunAMSBuildProjectWhenSpecifyingAFramework()
.WithWorkingDirectory(testProjectDirectory)
.Execute("--framework", ToolsetInfo.CurrentTargetFramework)
.Should().Pass()
- .And.HaveStdOut("Hello World!");
+ .And.HaveStdOutContaining("Hello World!");
}
[Fact]
@@ -783,9 +783,9 @@ public void ItForwardsEmptyArgumentsToTheApp()
}
[Fact]
- public void ItDoesNotPrintBuildingMessageByDefault()
+ public void ItPrintsBuildingMessageByDefault()
{
- var expectedValue = "Building...";
+ var expectedValue = LocalizableStrings.RunCommandBuilding;
var testAppName = "TestAppSimple";
var testInstance = _testAssetsManager.CopyTestAsset(testAppName)
.WithSource();
@@ -796,13 +796,13 @@ public void ItDoesNotPrintBuildingMessageByDefault()
.Should()
.Pass()
.And
- .NotHaveStdOutContaining(expectedValue);
+ .HaveStdOutContaining(expectedValue);
}
[Fact]
public void ItPrintsBuildingMessageIfLaunchSettingHasDotnetRunMessagesSet()
{
- var expectedValue = "Building...";
+ var expectedValue = LocalizableStrings.RunCommandBuilding;
var testAppName = "TestAppWithLaunchSettings";
var testInstance = _testAssetsManager.CopyTestAsset(testAppName)
.WithSource();
@@ -816,6 +816,40 @@ public void ItPrintsBuildingMessageIfLaunchSettingHasDotnetRunMessagesSet()
.HaveStdOutContaining(expectedValue);
}
+ [Fact]
+ public void ItPrintsBuildingMessageIfNoLaunchSettings()
+ {
+ var expectedValue = LocalizableStrings.RunCommandBuilding;
+ var testAppName = "TestAppSimple";
+ var testInstance = _testAssetsManager.CopyTestAsset(testAppName)
+ .WithSource();
+
+ new DotnetCommand(Log, "run")
+ .WithWorkingDirectory(testInstance.Path)
+ .Execute()
+ .Should()
+ .Pass()
+ .And
+ .HaveStdOutContaining(expectedValue);
+ }
+
+ [Fact]
+ public void ItDoesNotPrintBuildingMessageIfLaunchSettingIsFalse()
+ {
+ var expectedValue = LocalizableStrings.RunCommandBuilding;
+ var testAppName = "TestAppWithLaunchSettingsAndDotNetRunMessagesIsFalse";
+ var testInstance = _testAssetsManager.CopyTestAsset(testAppName)
+ .WithSource();
+
+ new DotnetCommand(Log, "run")
+ .WithWorkingDirectory(testInstance.Path)
+ .Execute()
+ .Should()
+ .Pass()
+ .And
+ .NotHaveStdOutContaining(expectedValue);
+ }
+
[Fact]
public void ItIncludesEnvironmentVariablesSpecifiedInLaunchSettings()
{