Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Configure Web Application use IIS in a NuGet Package
As part of an internal NuGet package I want to be able to change a Web Application to run using the IIS instead of the IIS Express. This can be done by using the PowerShell script below.
It uses a EnvDTE Project for setting a number of properties on the project, but to create the virtual directory to make it work seamslessly with IIS I use appcmd.exe.
As text:
param($installPath, $toolsPath, $package, $project)
$appName = $project.Name.split(".")[0]
$strip = $project.Name + ".csproj"
$physicalPath = $project.FullName.TrimEnd($strip)
Write-Host "Detected Web Application name as: $appName"
Write-Host "Detected Web Application physical path as: $physicalPath"
Write-Host "Setting IIS Properties of the current Web Application project"
foreach ($prop in $project.Properties)
{
if($prop.Name -eq "WebApplication.UseIIS")
{
Write-Host 'Updating project setting' $prop.Name 'to: '$true 'was: '$prop.Value
$prop.Value = $true
}
elseif($prop.Name -eq "WebApplication.IsUsingIISExpress")
{
Write-Host 'Updating project setting' $prop.Name 'to: '$true 'was: '$prop.Value
$prop.Value = $false
}
elseif($prop.Name -eq "WebApplication.UseIISExpress")
{
Write-Host 'Updating project setting' $prop.Name 'to: '$true 'was: '$prop.Value
$prop.Value = $false
}
elseif($prop.Name -eq "WebApplication.IISUrl")
{
Write-Host 'Updating project setting' $prop.Name 'to: '$true 'was: '$prop.Value
$prop.Value = "https://localhost/$appName"
}
}
$project.Save();
Write-Host "Setting physical path of the Web Application in IIS under Default Web Site"
$defaultWebSiteName = "Default Web Site"
$appCmdDirectory = "$env:SystemRootSystem32inetsrv"
$IISAppPath = $defaultWebSiteName + "/" + $appName
$cmd = "$appCmdDirectory/appcmd.exe set app /app.name ""$IISAppPath"" /[path='/'].physicalPath:$physicalPath"
cmd /C $cmd