2013-11-29 07:22:28 +00: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>
2014-07-25 06:41:02 +01:00
2013-11-29 07:22:28 +00:00
<!-- 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>
2014-07-25 06:41:02 +01:00
2013-11-29 07:22:28 +00:00
<!-- Download NuGet.exe if it does not already exist -->
<DownloadNuGetExe Condition= " '$(DownloadNuGetExe)' == '' " > false</DownloadNuGetExe>
</PropertyGroup>
2014-07-25 06:41:02 +01:00
2013-11-29 07:22:28 +00:00
<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://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<!--
<PackageSource Include="https://www.nuget.org/api/v2/" />
<PackageSource Include="https://my-nuget-source/nuget/" />
-->
</ItemGroup>
<PropertyGroup Condition= " '$(OS)' == 'Windows_NT'" >
<!-- Windows specific commands -->
<NuGetToolsPath> $([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
</PropertyGroup>
2014-07-25 06:41:02 +01:00
2013-11-29 07:22:28 +00:00
<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>
</PropertyGroup>
2014-07-25 06:41:02 +01:00
<PropertyGroup>
<PackagesProjectConfig> packages.$(MSBuildProjectName.Replace(' ', '_')).config</PackagesProjectConfig>
</PropertyGroup>
<Choose>
<When Condition= "Exists('$(PackagesProjectConfig)')" >
<PropertyGroup>
<PackagesConfig> $(PackagesProjectConfig)</PackagesConfig>
</PropertyGroup>
</When>
<When Condition= "Exists('packages.config')" >
<PropertyGroup>
<PackagesConfig> packages.config</PackagesConfig>
</PropertyGroup>
</When>
</Choose>
2013-11-29 07:22:28 +00:00
<PropertyGroup>
<!-- NuGet command -->
<NuGetExePath Condition= " '$(NuGetExePath)' == '' " > $(NuGetToolsPath)\NuGet.exe</NuGetExePath>
<PackageSources Condition= " $(PackageSources) == '' " > @(PackageSource)</PackageSources>
2014-07-25 06:41:02 +01:00
2013-11-29 07:22:28 +00:00
<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>
2014-07-25 06:41:02 +01:00
2013-11-29 07:22:28 +00:00
<RequireConsentSwitch Condition= " $(RequireRestoreConsent) == 'true' " > -RequireConsent</RequireConsentSwitch>
<NonInteractiveSwitch Condition= " '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' " > -NonInteractive</NonInteractiveSwitch>
2014-07-25 06:41:02 +01:00
2013-11-29 07:22:28 +00:00
<PaddedSolutionDir Condition= " '$(OS)' == 'Windows_NT'" > "$(SolutionDir) "</PaddedSolutionDir>
<PaddedSolutionDir Condition= " '$(OS)' != 'Windows_NT' " > "$(SolutionDir)"</PaddedSolutionDir>
<!-- Commands -->
<RestoreCommand> $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
<BuildCommand> $(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition= "$(RestorePackages) == 'true'" >
RestorePackages;
$(BuildDependsOn);
</BuildDependsOn>
<!-- 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)'" />
<!--
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;DownloadNuGetExe=$(DownloadNuGetExe)" />
</Target>
<Target Name= "_DownloadNuGet" >
<DownloadNuGet OutputFilename= "$(NuGetExePath)" Condition= " '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
</Target>
2014-07-25 06:41:02 +01:00
<Target Name= "RestorePackages" DependsOnTargets= "CheckPrerequisites" >
2013-11-29 07:22:28 +00:00
<Exec Command= "$(RestoreCommand)"
Condition= "'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
2014-07-25 06:41:02 +01:00
2013-11-29 07:22:28 +00:00
<Exec Command= "$(RestoreCommand)"
LogStandardErrorAsError= "true"
Condition= "'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
</Target>
<Target Name= "BuildPackage" DependsOnTargets= "CheckPrerequisites" >
2014-07-25 06:41:02 +01:00
<Exec Command= "$(BuildCommand)"
2013-11-29 07:22:28 +00:00
Condition= " '$(OS)' != 'Windows_NT' " />
2014-07-25 06:41:02 +01:00
2013-11-29 07:22:28 +00:00
<Exec Command= "$(BuildCommand)"
LogStandardErrorAsError= "true"
Condition= " '$(OS)' == 'Windows_NT' " />
</Target>
2014-07-25 06:41:02 +01:00
2013-11-29 07:22:28 +00:00
<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://www.nuget.org/nuget.exe", OutputFilename);
return true;
}
catch (Exception ex) {
Log.LogErrorFromException(ex);
return false;
}
]]>
</Code>
</Task>
</UsingTask>
2014-07-25 06:41:02 +01:00
</Project>