2012-12-17 09:45:38 +01:00
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion= "4.0" xmlns= "http://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
<SolutionDir Condition= "$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'" > $(MSBuildProjectDirectory)\..\</SolutionDir>
<!-- Enable the restore command to run before builds -->
<RestorePackages Condition= " '$(RestorePackages)' == '' " > false</RestorePackages>
<!-- Property that enables building a package from a project -->
<BuildPackage Condition= " '$(BuildPackage)' == '' " > false</BuildPackage>
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition= " '$(RequireRestoreConsent)' != 'false' " > true</RequireRestoreConsent>
<!-- Download NuGet.exe if it does not already exist -->
<DownloadNuGetExe Condition= " '$(DownloadNuGetExe)' == '' " > false</DownloadNuGetExe>
</PropertyGroup>
<ItemGroup Condition= " '$(PackageSources)' == '' " >
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
<!-- The official NuGet package source (https://nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<!--
<PackageSource Include="https://nuget.org/api/v2/" />
<PackageSource Include="https://my-nuget-source/nuget/" />
-->
2015-06-02 14:51:34 +02:00
<PackageSource Include= "https://nuget.org/api/v2/" />
<PackageSource Include= "https://www.myget.org/F/umbraco72nightly/api/v2" />
2012-12-17 09:45:38 +01:00
</ItemGroup>
<PropertyGroup Condition= " '$(OS)' == 'Windows_NT'" >
<!-- Windows specific commands -->
<NuGetToolsPath> $([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
<PackagesConfig> $([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
<PackagesDir> $([System.IO.Path]::Combine($(SolutionDir), "packages"))</PackagesDir>
</PropertyGroup>
<PropertyGroup Condition= " '$(OS)' != 'Windows_NT'" >
<!-- We need to launch nuget.exe with the mono command if we're not on windows -->
<NuGetToolsPath> $(SolutionDir).nuget</NuGetToolsPath>
<PackagesConfig> packages.config</PackagesConfig>
<PackagesDir> $(SolutionDir)packages</PackagesDir>
</PropertyGroup>
<PropertyGroup>
<!-- NuGet command -->
<NuGetExePath Condition= " '$(NuGetExePath)' == '' " > $(NuGetToolsPath)\nuget.exe</NuGetExePath>
<PackageSources Condition= " $(PackageSources) == '' " > @(PackageSource)</PackageSources>
<NuGetCommand Condition= " '$(OS)' == 'Windows_NT'" > "$(NuGetExePath)"</NuGetCommand>
<NuGetCommand Condition= " '$(OS)' != 'Windows_NT' " > mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>
<PackageOutputDir Condition= "$(PackageOutputDir) == ''" > $(TargetDir.Trim('\\'))</PackageOutputDir>
<RequireConsentSwitch Condition= " $(RequireRestoreConsent) == 'true' " > -RequireConsent</RequireConsentSwitch>
<!-- Commands -->
<RestoreCommand> $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch) -o "$(PackagesDir)"</RestoreCommand>
<BuildCommand> $(NuGetCommand) pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols</BuildCommand>
<!-- We need to ensure packages are restored prior to assembly resolve -->
<ResolveReferencesDependsOn Condition= "$(RestorePackages) == 'true'" >
RestorePackages;
$(ResolveReferencesDependsOn);
</ResolveReferencesDependsOn>
<!-- Make the build depend on restore packages -->
<BuildDependsOn Condition= "$(BuildPackage) == 'true'" >
$(BuildDependsOn);
BuildPackage;
</BuildDependsOn>
</PropertyGroup>
<Target Name= "CheckPrerequisites" >
<!-- Raise an error if we're unable to locate nuget.exe -->
<Error Condition= "'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text= "Unable to locate '$(NuGetExePath)'" />
<SetEnvironmentVariable EnvKey= "VisualStudioVersion" EnvValue= "$(VisualStudioVersion)" Condition= " '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' " />
<!--
Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
This effectively acts as a lock that makes sure that the download operation will only happen once and all
parallel builds will have to wait for it to complete.
-->
<MsBuild Targets= "_DownloadNuGet" Projects= "$(MSBuildThisFileFullPath)" Properties= "Configuration=NOT_IMPORTANT" />
</Target>
<Target Name= "_DownloadNuGet" >
<DownloadNuGet OutputFilename= "$(NuGetExePath)" Condition= " '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
</Target>
<Target Name= "RestorePackages" DependsOnTargets= "CheckPrerequisites" >
<Exec Command= "$(RestoreCommand)"
Condition= "'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
<Exec Command= "$(RestoreCommand)"
LogStandardErrorAsError= "true"
Condition= "'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
</Target>
<Target Name= "BuildPackage" DependsOnTargets= "CheckPrerequisites" >
<Exec Command= "$(BuildCommand)"
Condition= " '$(OS)' != 'Windows_NT' " />
<Exec Command= "$(BuildCommand)"
LogStandardErrorAsError= "true"
Condition= " '$(OS)' == 'Windows_NT' " />
</Target>
<UsingTask TaskName= "DownloadNuGet" TaskFactory= "CodeTaskFactory" AssemblyFile= "$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
<ParameterGroup>
<OutputFilename ParameterType= "System.String" Required= "true" />
</ParameterGroup>
<Task>
<Reference Include= "System.Core" />
<Using Namespace= "System" />
<Using Namespace= "System.IO" />
<Using Namespace= "System.Net" />
<Using Namespace= "Microsoft.Build.Framework" />
<Using Namespace= "Microsoft.Build.Utilities" />
<Code Type= "Fragment" Language= "cs" >
<![CDATA[
try {
OutputFilename = Path.GetFullPath(OutputFilename);
Log.LogMessage("Downloading latest version of NuGet.exe...");
WebClient webClient = new WebClient();
webClient.DownloadFile("https://nuget.org/nuget.exe", OutputFilename);
return true;
}
catch (Exception ex) {
Log.LogErrorFromException(ex);
return false;
}
]]>
</Code>
</Task>
</UsingTask>
<UsingTask TaskName= "SetEnvironmentVariable" TaskFactory= "CodeTaskFactory" AssemblyFile= "$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
<ParameterGroup>
<EnvKey ParameterType= "System.String" Required= "true" />
<EnvValue ParameterType= "System.String" Required= "true" />
</ParameterGroup>
<Task>
<Using Namespace= "System" />
<Code Type= "Fragment" Language= "cs" >
<![CDATA[
try {
Environment.SetEnvironmentVariable(EnvKey, EnvValue, System.EnvironmentVariableTarget.Process);
}
catch {
}
]]>
</Code>
</Task>
</UsingTask>
</Project>