67 lines
3.2 KiB
PowerShell
67 lines
3.2 KiB
PowerShell
param($rootPath, $toolsPath, $package, $project)
|
|
|
|
# Don't support old NuGet versions as it's impractical to handle all their different sets of sematics
|
|
if ([NuGet.PackageManager].Assembly.GetName().Version -lt 1.4)
|
|
{
|
|
throw "T4Scaffolding requires NuGet (Package Manager Console) 1.4 or later"
|
|
}
|
|
|
|
# We can't support the current version of PowerShell 3 because of some breaking changes/bugs. Hopefully we will be able to reintroduce support soon.
|
|
if ($PSVersionTable.PSVersion.Major -eq 3)
|
|
{
|
|
$message = "Sorry, T4Scaffolding and MvcScaffolding currently do not support preview versions of PowerShell 3 (for example, on prerelease copies of Windows 8)."
|
|
[System.Windows.Forms.MessageBox]::Show($message)
|
|
throw $message
|
|
}
|
|
|
|
function GetLoadedT4ScaffoldingAssemblyVersion() {
|
|
try {
|
|
return [T4Scaffolding.ScaffolderAttribute].Assembly.GetName().Version
|
|
} catch {
|
|
return $null
|
|
}
|
|
}
|
|
$t4ScaffoldingAssemblyVersion = GetLoadedT4ScaffoldingAssemblyVersion
|
|
|
|
if ($t4ScaffoldingAssemblyVersion -and ($t4ScaffoldingAssemblyVersion -ne "1.0.0.1"))
|
|
{
|
|
# Prevent the use of scaffolding if you've got the wrong version of T4Scaffolding.dll loaded into your appdomain (we can't unload or update it until VS restarts)
|
|
Write-Warning "---"
|
|
Write-Warning "A different version of T4Scaffolding is already running in this instance of Visual Studio"
|
|
Write-Warning "Please restart Visual Studio to avoid unexpected behavior."
|
|
Write-Warning "You won't be able to use scaffolding until you restart Visual Studio."
|
|
Write-Warning "---"
|
|
if (Get-Module T4Scaffolding) {
|
|
# Disable scaffolding as much as possible until VS is restarted
|
|
Remove-Module T4Scaffolding
|
|
}
|
|
}
|
|
else
|
|
{
|
|
# OK, we've got the correct .NET assembly version or none at all (in which case we can load the correct version)
|
|
$dllPath = Join-Path $toolsPath T4Scaffolding.dll
|
|
$tabExpansionPath = Join-Path $toolsPath "scaffoldingTabExpansion.psm1"
|
|
$packagesRoot = [System.IO.Path]::GetDirectoryName($rootPath)
|
|
|
|
if (Test-Path $dllPath) {
|
|
# Enable shadow copying so the package can be uninstalled/upgraded later
|
|
[System.AppDomain]::CurrentDomain.SetShadowCopyFiles()
|
|
|
|
# Load the .NET PowerShell module and set up aliases, tab expansions, etc.
|
|
Import-Module $dllPath
|
|
[T4Scaffolding.NuGetServices.Services.ScaffoldingPackagePathResolver]::SetPackagesRootDirectory($packagesRoot)
|
|
Set-Alias Scaffold Invoke-Scaffolder -Option AllScope -scope Global
|
|
Update-FormatData -PrependPath (Join-Path $toolsPath T4Scaffolding.Format.ps1xml)
|
|
Import-Module -Force -Global $tabExpansionPath
|
|
|
|
# Ensure you've got some default settings for each of the included scaffolders
|
|
Set-DefaultScaffolder -Name DbContext -Scaffolder T4Scaffolding.EFDbContext -SolutionWide -DoNotOverwriteExistingSetting
|
|
Set-DefaultScaffolder -Name Repository -Scaffolder T4Scaffolding.EFRepository -SolutionWide -DoNotOverwriteExistingSetting
|
|
Set-DefaultScaffolder -Name CustomTemplate -Scaffolder T4Scaffolding.CustomTemplate -SolutionWide -DoNotOverwriteExistingSetting
|
|
Set-DefaultScaffolder -Name CustomScaffolder -Scaffolder T4Scaffolding.CustomScaffolder -SolutionWide -DoNotOverwriteExistingSetting
|
|
}
|
|
else
|
|
{
|
|
Write-Warning ("Could not find T4Scaffolding module. Looked for: " + $dllPath)
|
|
}
|
|
} |