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
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();
|