|
|
|
@ -43,7 +43,7 @@ |
|
|
|
<!-- Step 1 Check if lockfile is properly restored --> |
|
|
|
<PropertyGroup> |
|
|
|
<PaketRestoreRequired>true</PaketRestoreRequired> |
|
|
|
<NoWarn>$(NoWarn);NU1603</NoWarn> |
|
|
|
<NoWarn>$(NoWarn);NU1603;NU1604;NU1605;NU1608</NoWarn> |
|
|
|
</PropertyGroup> |
|
|
|
|
|
|
|
<!-- Because ReadAllText is slow on osx/linux, try to find shasum and awk --> |
|
|
|
@ -60,6 +60,9 @@ |
|
|
|
<Output TaskParameter="ConsoleOutput" PropertyName="PaketRestoreLockFileHash" /> |
|
|
|
</Exec> |
|
|
|
|
|
|
|
<!-- Debug whats going on --> |
|
|
|
<Message Importance="low" Text="calling paket restore with targetframework=$(TargetFramework) targetframeworks=$(TargetFrameworks)" /> |
|
|
|
|
|
|
|
<PropertyGroup Condition="Exists('$(PaketRestoreCacheFile)') "> |
|
|
|
<!-- if no hash has been done yet fall back to just reading in the files and comparing them --> |
|
|
|
<PaketRestoreCachedHash Condition=" '$(PaketRestoreCachedHash)' == '' ">$([System.IO.File]::ReadAllText('$(PaketRestoreCacheFile)'))</PaketRestoreCachedHash> |
|
|
|
@ -69,11 +72,19 @@ |
|
|
|
<PaketRestoreRequired Condition=" '$(PaketRestoreLockFileHash)' == '' ">true</PaketRestoreRequired> |
|
|
|
</PropertyGroup> |
|
|
|
|
|
|
|
|
|
|
|
<!-- Do a global restore if required --> |
|
|
|
<Exec Command='$(PaketBootStrapperCommand)' Condition="Exists('$(PaketBootStrapperExePath)') AND !(Exists('$(PaketExePath)'))" ContinueOnError="false" /> |
|
|
|
<Exec Command='$(PaketCommand) restore' Condition=" '$(PaketRestoreRequired)' == 'true' " ContinueOnError="false" /> |
|
|
|
|
|
|
|
<!-- Step 2 Detect project specific changes --> |
|
|
|
<ItemGroup> |
|
|
|
<MyTargetFrameworks Condition="'$(TargetFramework)' != '' " Include="$(TargetFramework)"></MyTargetFrameworks> |
|
|
|
<!-- Don't include all frameworks when msbuild explicitly asks for a single one --> |
|
|
|
<MyTargetFrameworks Condition="'$(TargetFrameworks)' != '' AND '$(TargetFramework)' == '' " Include="$(TargetFrameworks)"></MyTargetFrameworks> |
|
|
|
<PaketResolvedFilePaths Include="@(MyTargetFrameworks -> '$(MSBuildProjectDirectory)\obj\$(MSBuildProjectFile).%(Identity).paket.resolved')"></PaketResolvedFilePaths> |
|
|
|
</ItemGroup> |
|
|
|
<Message Importance="low" Text="MyTargetFrameworks=@(MyTargetFrameworks) PaketResolvedFilePaths=@(PaketResolvedFilePaths)" /> |
|
|
|
<PropertyGroup> |
|
|
|
<PaketReferencesCachedFilePath>$(MSBuildProjectDirectory)\obj\$(MSBuildProjectFile).paket.references.cached</PaketReferencesCachedFilePath> |
|
|
|
<!-- MyProject.fsproj.paket.references has the highest precedence --> |
|
|
|
@ -82,7 +93,9 @@ |
|
|
|
<PaketOriginalReferencesFilePath Condition=" !Exists('$(PaketOriginalReferencesFilePath)')">$(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references</PaketOriginalReferencesFilePath> |
|
|
|
<!-- paket.references --> |
|
|
|
<PaketOriginalReferencesFilePath Condition=" !Exists('$(PaketOriginalReferencesFilePath)')">$(MSBuildProjectDirectory)\paket.references</PaketOriginalReferencesFilePath> |
|
|
|
<PaketResolvedFilePath>$(MSBuildProjectDirectory)\obj\$(MSBuildProjectFile).$(TargetFramework).paket.resolved</PaketResolvedFilePath> |
|
|
|
|
|
|
|
<DoAllResolvedFilesExist>false</DoAllResolvedFilesExist> |
|
|
|
<DoAllResolvedFilesExist Condition="Exists(%(PaketResolvedFilePaths.Identity))">true</DoAllResolvedFilesExist> |
|
|
|
<PaketRestoreRequired>true</PaketRestoreRequired> |
|
|
|
<PaketRestoreRequiredReason>references-file-or-cache-not-found</PaketRestoreRequiredReason> |
|
|
|
</PropertyGroup> |
|
|
|
@ -101,24 +114,29 @@ |
|
|
|
</PropertyGroup> |
|
|
|
|
|
|
|
<!-- Step 2 b detect relevant changes in project file (new targetframework) --> |
|
|
|
<PropertyGroup Condition=" !Exists('$(PaketResolvedFilePath)') AND '$(TargetFramework)' != '' "> |
|
|
|
<PropertyGroup Condition=" '$(DoAllResolvedFilesExist)' != 'true' "> |
|
|
|
<PaketRestoreRequired>true</PaketRestoreRequired> |
|
|
|
<PaketRestoreRequiredReason>target-framework '$(TargetFramework)'</PaketRestoreRequiredReason> |
|
|
|
<PaketRestoreRequiredReason>target-framework '$(TargetFramework)' or '$(TargetFrameworks)' files @(PaketResolvedFilePaths)</PaketRestoreRequiredReason> |
|
|
|
</PropertyGroup> |
|
|
|
|
|
|
|
<!-- Step 3 Restore project specific stuff if required --> |
|
|
|
<Message Condition=" '$(PaketRestoreRequired)' == 'true' " Importance="low" Text="Detected a change ('$(PaketRestoreRequiredReason)') in the project file '$(MSBuildProjectFullPath)', calling paket restore" /> |
|
|
|
<Exec Command='$(PaketCommand) restore --project "$(MSBuildProjectFullPath)"' Condition=" '$(PaketRestoreRequired)' == 'true' " ContinueOnError="false" /> |
|
|
|
<Exec Command='$(PaketCommand) restore --project "$(MSBuildProjectFullPath)" --target-framework "$(TargetFrameworks)"' Condition=" '$(PaketRestoreRequired)' == 'true' AND '$(TargetFramework)' == '' " ContinueOnError="false" /> |
|
|
|
<Exec Command='$(PaketCommand) restore --project "$(MSBuildProjectFullPath)" --target-framework "$(TargetFramework)"' Condition=" '$(PaketRestoreRequired)' == 'true' AND '$(TargetFramework)' != '' " ContinueOnError="false" /> |
|
|
|
|
|
|
|
<!-- This shouldn't actually happen, but just to be sure. --> |
|
|
|
<Error Condition=" !Exists('$(PaketResolvedFilePath)') AND '$(TargetFramework)' != '' AND '$(ResolveNuGetPackages)' != 'False' " Text="Paket file '$(PaketResolvedFilePath)' is missing while restoring $(MSBuildProjectFile). Please delete 'paket-files/paket.restore.cached' and call 'paket restore'." /> |
|
|
|
<PropertyGroup> |
|
|
|
<DoAllResolvedFilesExist>false</DoAllResolvedFilesExist> |
|
|
|
<DoAllResolvedFilesExist Condition="Exists(%(PaketResolvedFilePaths.Identity))">true</DoAllResolvedFilesExist> |
|
|
|
</PropertyGroup> |
|
|
|
<Error Condition=" '$(DoAllResolvedFilesExist)' != 'true' AND '$(ResolveNuGetPackages)' != 'False' " Text="One Paket file '@(PaketResolvedFilePaths)' is missing while restoring $(MSBuildProjectFile). Please delete 'paket-files/paket.restore.cached' and call 'paket restore'." /> |
|
|
|
|
|
|
|
<!-- Step 4 forward all msbuild properties (PackageReference, DotNetCliToolReference) to msbuild --> |
|
|
|
<ReadLinesFromFile Condition="Exists('$(PaketResolvedFilePath)')" File="$(PaketResolvedFilePath)" > |
|
|
|
<ReadLinesFromFile Condition="'@(PaketResolvedFilePaths)' != ''" File="%(PaketResolvedFilePaths.Identity)" ><!--Condition="Exists('%(PaketResolvedFilePaths.Identity)')"--> |
|
|
|
<Output TaskParameter="Lines" ItemName="PaketReferencesFileLines"/> |
|
|
|
</ReadLinesFromFile> |
|
|
|
|
|
|
|
<ItemGroup Condition=" Exists('$(PaketResolvedFilePath)') AND '@(PaketReferencesFileLines)' != '' " > |
|
|
|
<ItemGroup Condition=" '@(PaketReferencesFileLines)' != '' " > |
|
|
|
<PaketReferencesFileLinesInfo Include="@(PaketReferencesFileLines)" > |
|
|
|
<PackageName>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0])</PackageName> |
|
|
|
<PackageVersion>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1])</PackageVersion> |
|
|
|
@ -126,8 +144,9 @@ |
|
|
|
</PaketReferencesFileLinesInfo> |
|
|
|
<PackageReference Include="%(PaketReferencesFileLinesInfo.PackageName)"> |
|
|
|
<Version>%(PaketReferencesFileLinesInfo.PackageVersion)</Version> |
|
|
|
<PrivateAssets Condition="%(PaketReferencesFileLinesInfo.AllPrivateAssets) == 'true'">All</PrivateAssets> |
|
|
|
<PrivateAssets Condition=" ('%(PaketReferencesFileLinesInfo.AllPrivateAssets)' == 'true') Or ('$(PackAsTool)' == 'true') ">All</PrivateAssets> |
|
|
|
<ExcludeAssets Condition="%(PaketReferencesFileLinesInfo.AllPrivateAssets) == 'exclude'">runtime</ExcludeAssets> |
|
|
|
<Publish Condition=" '$(PackAsTool)' == 'true' ">true</Publish> |
|
|
|
</PackageReference> |
|
|
|
</ItemGroup> |
|
|
|
|
|
|
|
|