Merge pull request #8863 from mlorbetske/dev/mlorbe/UpdatePrecedenceOfAspNetUrlsForLaunchSettings
Update launch settings for ApplicationUrl handling
This commit is contained in:
commit
14098449e5
5 changed files with 116 additions and 5 deletions
|
@ -0,0 +1,8 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), testAsset.props))\testAsset.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -0,0 +1,16 @@
|
|||
// 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 MSBuildTestApp
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
var message = Environment.GetEnvironmentVariable("ASPNETCORE_URLS");
|
||||
Console.WriteLine(message);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"iisSettings": {
|
||||
"windowsAuthentication": false,
|
||||
"anonymousAuthentication": true,
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:49850/",
|
||||
"sslPort": 0
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"First": {
|
||||
"commandName": "Project",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development",
|
||||
"ASPNETCORE_URLS": "http://localhost:12345/"
|
||||
},
|
||||
"applicationUrl": "http://localhost:67890/"
|
||||
},
|
||||
"Second": {
|
||||
"commandName": "Project",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"applicationUrl": "http://localhost:54321/"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -15,6 +15,11 @@ namespace Microsoft.DotNet.Tools.Run.LaunchSettings
|
|||
{
|
||||
var config = model.ToObject<ProjectLaunchSettingsModel>();
|
||||
|
||||
if (!string.IsNullOrEmpty(config.ApplicationUrl))
|
||||
{
|
||||
command.EnvironmentVariable("ASPNETCORE_URLS", config.ApplicationUrl);
|
||||
}
|
||||
|
||||
//For now, ignore everything but the environment variables section
|
||||
|
||||
foreach (var entry in config.EnvironmentVariables)
|
||||
|
@ -24,11 +29,6 @@ namespace Microsoft.DotNet.Tools.Run.LaunchSettings
|
|||
command.EnvironmentVariable(entry.Key, value);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(config.ApplicationUrl))
|
||||
{
|
||||
command.EnvironmentVariable("ASPNETCORE_URLS", config.ApplicationUrl);
|
||||
}
|
||||
|
||||
return new LaunchSettingsApplyResult(true, null, config.LaunchUrl);
|
||||
}
|
||||
|
||||
|
|
|
@ -364,6 +364,66 @@ namespace Microsoft.DotNet.Cli.Run.Tests
|
|||
cmd.StdErr.Should().BeEmpty();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ItPrefersTheValueOfAppUrlFromEnvVarOverTheProp()
|
||||
{
|
||||
var testAppName = "AppWithApplicationUrlInLaunchSettings";
|
||||
var testInstance = TestAssets.Get(testAppName)
|
||||
.CreateInstance()
|
||||
.WithSourceFiles();
|
||||
|
||||
var testProjectDirectory = testInstance.Root.FullName;
|
||||
|
||||
new RestoreCommand()
|
||||
.WithWorkingDirectory(testProjectDirectory)
|
||||
.Execute("/p:SkipInvalidConfigurations=true")
|
||||
.Should().Pass();
|
||||
|
||||
new BuildCommand()
|
||||
.WithWorkingDirectory(testProjectDirectory)
|
||||
.Execute()
|
||||
.Should().Pass();
|
||||
|
||||
var cmd = new RunCommand()
|
||||
.WithWorkingDirectory(testProjectDirectory)
|
||||
.ExecuteWithCapturedOutput("--launch-profile First");
|
||||
|
||||
cmd.Should().Pass()
|
||||
.And.HaveStdOutContaining("http://localhost:12345/");
|
||||
|
||||
cmd.StdErr.Should().BeEmpty();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ItUsesTheValueOfAppUrlIfTheEnvVarIsNotSet()
|
||||
{
|
||||
var testAppName = "AppWithApplicationUrlInLaunchSettings";
|
||||
var testInstance = TestAssets.Get(testAppName)
|
||||
.CreateInstance()
|
||||
.WithSourceFiles();
|
||||
|
||||
var testProjectDirectory = testInstance.Root.FullName;
|
||||
|
||||
new RestoreCommand()
|
||||
.WithWorkingDirectory(testProjectDirectory)
|
||||
.Execute("/p:SkipInvalidConfigurations=true")
|
||||
.Should().Pass();
|
||||
|
||||
new BuildCommand()
|
||||
.WithWorkingDirectory(testProjectDirectory)
|
||||
.Execute()
|
||||
.Should().Pass();
|
||||
|
||||
var cmd = new RunCommand()
|
||||
.WithWorkingDirectory(testProjectDirectory)
|
||||
.ExecuteWithCapturedOutput("--launch-profile Second");
|
||||
|
||||
cmd.Should().Pass()
|
||||
.And.HaveStdOutContaining("http://localhost:54321/");
|
||||
|
||||
cmd.StdErr.Should().BeEmpty();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ItGivesAnErrorWhenTheLaunchProfileNotFound()
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue