Ensure dotnet run uses build output, not publish (#21720)

Fixes https://github.com/dotnet/aspnetcore/issues/17710
This commit is contained in:
Pranav K 2020-05-14 12:38:04 -07:00 committed by GitHub
parent d99e7fecb0
commit 0e652d1aba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 3 deletions

View File

@ -44,7 +44,7 @@ namespace Templates.Test.Helpers
string workingDirectory,
string dllPath,
IDictionary<string, string> environmentVariables,
bool published = true,
bool published,
bool hasListeningUri = true,
ILogger logger = null)
{

View File

@ -147,8 +147,33 @@ namespace Templates.Test.Helpers
["ASPNETCORE_Logging__Console__IncludeScopes"] = "true",
};
var launchSettingsJson = Path.Combine(TemplateOutputDir, "Properties", "launchSettings.json");
if (File.Exists(launchSettingsJson))
{
// When executing "dotnet run", the launch urls specified in the app's launchSettings.json have higher precedence
// than ambient environment variables. When present, we have to edit this file to allow the application to pick random ports.
var original = File.ReadAllText(launchSettingsJson);
var updated = original.Replace(
"\"applicationUrl\": \"https://localhost:5001;http://localhost:5000\"",
$"\"applicationUrl\": \"{_urls}\"");
if (updated == original)
{
Output.WriteLine("applicationUrl is not specified in launchSettings.json");
}
else
{
Output.WriteLine("Updating applicationUrl in launchSettings.json");
File.WriteAllText(launchSettingsJson, updated);
}
}
else
{
Output.WriteLine("No launchSettings.json found to update.");
}
var projectDll = Path.Combine(TemplateBuildDir, $"{ProjectName}.dll");
return new AspNetProcess(Output, TemplateOutputDir, projectDll, environment, hasListeningUri: hasListeningUri, logger: logger);
return new AspNetProcess(Output, TemplateOutputDir, projectDll, environment, published: false, hasListeningUri: hasListeningUri, logger: logger);
}
internal AspNetProcess StartPublishedProjectAsync(bool hasListeningUri = true)
@ -163,7 +188,7 @@ namespace Templates.Test.Helpers
};
var projectDll = $"{ProjectName}.dll";
return new AspNetProcess(Output, TemplatePublishDir, projectDll, environment, hasListeningUri: hasListeningUri);
return new AspNetProcess(Output, TemplatePublishDir, projectDll, environment, published: true, hasListeningUri: hasListeningUri);
}
internal async Task<ProcessResult> RunDotNetEfCreateMigrationAsync(string migrationName)