Always check if ANCM is in the base output folder. (#1420)

This commit is contained in:
Justin Kotalik 2018-05-15 18:11:12 -07:00 committed by GitHub
parent 2575ebfcfe
commit 5227de9a31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 22 additions and 29 deletions

View File

@ -106,36 +106,9 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
// Pass on the applicationhost.config to iis express. With this don't need to pass in the /path /port switches as they are in the applicationHost.config
// We take a copy of the original specified applicationHost.Config to prevent modifying the one in the repo.
if (serverConfig.Contains("[ANCMPath]"))
{
// We need to pick the bitness based the OS / IIS Express, not the application.
// We'll eventually add support for choosing which IIS Express bitness to run: https://github.com/aspnet/Hosting/issues/880
var ancmFile = Path.Combine(contentRoot, Is64BitHost ? @"x64\aspnetcore.dll" : @"x86\aspnetcore.dll");
// Bin deployed by Microsoft.AspNetCore.AspNetCoreModule.nupkg
serverConfig = ModifyANCMPathInConfig(replaceFlag: "[ANCMPath]", dllName: "aspnetcore.dll", serverConfig, contentRoot);
if (!File.Exists(Environment.ExpandEnvironmentVariables(ancmFile)))
{
throw new FileNotFoundException("AspNetCoreModule could not be found.", ancmFile);
}
Logger.LogDebug("Writing ANCMPath '{ancmFile}' to config", ancmFile);
serverConfig =
serverConfig.Replace("[ANCMPath]", ancmFile);
}
if (serverConfig.Contains("[ANCMV2Path]"))
{
var ancmFile = Path.Combine(contentRoot, Is64BitHost ? @"x64\aspnetcorev2.dll" : @"x86\aspnetcorev2.dll");
if (!File.Exists(Environment.ExpandEnvironmentVariables(ancmFile)))
{
throw new FileNotFoundException("AspNetCoreModuleV2 could not be found.", ancmFile);
}
Logger.LogDebug("Writing ANCMV2Path '{ancmFile}' to config", ancmFile);
serverConfig =
serverConfig.Replace("[ANCMV2Path]", ancmFile);
}
serverConfig = ModifyANCMPathInConfig(replaceFlag: "[ANCMV2Path]", dllName: "aspnetcorev2.dll", serverConfig, contentRoot);
Logger.LogDebug("Writing ApplicationPhysicalPath '{applicationPhysicalPath}' to config", contentRoot);
Logger.LogDebug("Writing Port '{port}' to config", port);
@ -265,6 +238,26 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
}
}
private string ModifyANCMPathInConfig(string replaceFlag, string dllName, string serverConfig, string contentRoot)
{
if (serverConfig.Contains(replaceFlag))
{
var ancmFile = Path.Combine(contentRoot, Is64BitHost ? $@"x64\{dllName}" : $@"x86\{dllName}");
if (!File.Exists(Environment.ExpandEnvironmentVariables(ancmFile)))
{
ancmFile = Path.Combine(contentRoot, dllName);
if (!File.Exists(Environment.ExpandEnvironmentVariables(ancmFile)))
{
throw new FileNotFoundException("AspNetCoreModule could not be found.", ancmFile);
}
}
Logger.LogDebug($"Writing '{replaceFlag}' '{ancmFile}' to config");
return serverConfig.Replace(replaceFlag, ancmFile);
}
return serverConfig;
}
private string GetIISExpressPath()
{
// Get path to program files