You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
3.5 KiB

param($installPath, $toolsPath, $package, $project)
. (Join-Path $toolsPath "CommonPropertyValues.ps1");
. (Join-Path $toolsPath "ImportMSBuild.ps1");
# Make the path to the targets file relative.
$projectUri = new-object Uri('file://' + $project.FullName);
# Get current project TargetFramework
$targetFrameworkVersion = $msbuild.Properties | Where-Object { $_.Name -eq "TargetFrameworkVersion" } | Select-Object -First 1;
if($targetFrameworkVersion.EvaluatedValue -eq "v3.5") { $targetFrameworkDir = "net35" };
if($targetFrameworkVersion.EvaluatedValue -eq "v4.0") { $targetFrameworkDir = "net40" };
if($targetFrameworkVersion.EvaluatedValue -ge "v4.5") { $targetFrameworkDir = "net45" };
# Prepare the "TelerikWebUI assemblies" path value:
$UtilityAssembliesDir = [System.IO.Path]::Combine($toolsPath, $inPackageUtilityAssembliesFolderName, $targetFrameworkDir);
$UtilityAssembliesDirTargetUri = new-object Uri('file://' + $UtilityAssembliesDir);
$UtilityAssembliesDirRelativePath = $projectUri.MakeRelativeUri($UtilityAssembliesDirTargetUri).ToString().Replace([System.IO.Path]::AltDirectorySeparatorChar, [System.IO.Path]::DirectorySeparatorChar);
# Declare the properties and add them
$utilityAssembliesRelatedPropertyContainer = $msbuild.Xml.CreatePropertyGroupElement();
$msCSharpTargetsImport = $msbuild.Xml.Imports | Where-Object { $_.Project.EndsWith("Microsoft.CSharp.targets") };
$msbuild.Xml.InsertAfterChild($utilityAssembliesRelatedPropertyContainer, $msCSharpTargetsImport);
$utilityAssembliesSourcePathProperty = $utilityAssembliesRelatedPropertyContainer.AddProperty($inProjectFileUniquePackageRelativeUtilityAssembliesFolderPropertyName, $UtilityAssembliesDirRelativePath);
$utilityAssembliesBuildDependsOnProperty = $utilityAssembliesRelatedPropertyContainer.AddProperty("BuildDependsOn", "`$(BuildDependsOn);" + $inProjectFileUniqueCopyUtilityAssembliesTargetName);
# Declare the target and add it:
$copyUtilityAssembliesTarget = $msbuild.Xml.AddTarget($inProjectFileUniqueCopyUtilityAssembliesTargetName);
$utilityAssembliesSourceDirFullPathPropGroup = $copyUtilityAssembliesTarget.AddPropertyGroup();
$inProjectFileUniquePackageRelativeUtilityAssembliesFolderFullPathPropertyName = $inProjectFileUniquePackageRelativeUtilityAssembliesFolderPropertyName + "FullPath";
$inProjectFileUniquePackageRelativeUtilityAssembliesFolderFullPathPropertyValue = "`$([System.IO.Path]::GetFullPath('`$(" + $inProjectFileUniquePackageRelativeUtilityAssembliesFolderPropertyName + ")'))";
$utilityAssembliesSourceDirFullPathPropGroup.AddProperty($inProjectFileUniquePackageRelativeUtilityAssembliesFolderFullPathPropertyName, $inProjectFileUniquePackageRelativeUtilityAssembliesFolderFullPathPropertyValue);
$utilityAssemblyFilesItemGroup = $copyUtilityAssembliesTarget.AddItemGroup();
$utilityAssemblyFilesItemGroupIncludeDeclaration = "`$(" + $inProjectFileUniquePackageRelativeUtilityAssembliesFolderFullPathPropertyName + ")\" + $inPackageUtilityAssemblyName;
$utilityAssemblyFilesItemGroup.AddItem($inProjectFileUniqueUtilityAssembliesItemGroupName, $utilityAssemblyFilesItemGroupIncludeDeclaration);
$copyUtilityAssembliesTask = $copyUtilityAssembliesTarget.AddTask("Copy");
$utilityAssemblyFilesItemGroupUsage = "@(" + $inProjectFileUniqueUtilityAssembliesItemGroupName + ")";
$copyUtilityAssembliesTask.SetParameter("SourceFiles", $utilityAssemblyFilesItemGroupUsage);
$copyUtilityAssembliesTask.SetParameter("DestinationFolder", "`$(TargetDir)");
$copyUtilityAssembliesTask.SetParameter("SkipUnchangedFiles", "true");
# Save the project
$project.Save();