nuget package restore · 7aab9722cd - SVN.BY: Go Git Service
Browse Source

nuget package restore

Tiernan OToole 8 years ago
parent
commit
7aab9722cd
5 changed files with 166 additions and 0 deletions
  1. 6 0
      .nuget/NuGet.Config
  2. BIN
      .nuget/NuGet.exe
  3. 144 0
      .nuget/NuGet.targets
  4. 7 0
      B2Uploader.sln
  5. 9 0
      B2Uploader/B2Uploader.csproj

+ 6 - 0
.nuget/NuGet.Config

@@ -0,0 +1,6 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<configuration>
3
+  <solution>
4
+    <add key="disableSourceControlIntegration" value="true" />
5
+  </solution>
6
+</configuration>

BIN
.nuget/NuGet.exe


+ 144 - 0
.nuget/NuGet.targets

@@ -0,0 +1,144 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+    <PropertyGroup>
4
+        <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
5
+
6
+        <!-- Enable the restore command to run before builds -->
7
+        <RestorePackages Condition="  '$(RestorePackages)' == '' ">false</RestorePackages>
8
+
9
+        <!-- Property that enables building a package from a project -->
10
+        <BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
11
+
12
+        <!-- Determines if package restore consent is required to restore packages -->
13
+        <RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
14
+
15
+        <!-- Download NuGet.exe if it does not already exist -->
16
+        <DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
17
+    </PropertyGroup>
18
+
19
+    <ItemGroup Condition=" '$(PackageSources)' == '' ">
20
+        <!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
21
+        <!-- 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 -->
22
+        <!--
23
+            <PackageSource Include="https://www.nuget.org/api/v2/" />
24
+            <PackageSource Include="https://my-nuget-source/nuget/" />
25
+        -->
26
+    </ItemGroup>
27
+
28
+    <PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
29
+        <!-- Windows specific commands -->
30
+        <NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
31
+    </PropertyGroup>
32
+
33
+    <PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
34
+        <!-- We need to launch nuget.exe with the mono command if we're not on windows -->
35
+        <NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
36
+    </PropertyGroup>
37
+
38
+    <PropertyGroup>
39
+        <PackagesProjectConfig Condition=" '$(OS)' == 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config</PackagesProjectConfig>
40
+        <PackagesProjectConfig Condition=" '$(OS)' != 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config</PackagesProjectConfig>
41
+    </PropertyGroup>
42
+
43
+    <PropertyGroup>
44
+      <PackagesConfig Condition="Exists('$(MSBuildProjectDirectory)\packages.config')">$(MSBuildProjectDirectory)\packages.config</PackagesConfig>
45
+      <PackagesConfig Condition="Exists('$(PackagesProjectConfig)')">$(PackagesProjectConfig)</PackagesConfig>
46
+    </PropertyGroup>
47
+    
48
+    <PropertyGroup>
49
+        <!-- NuGet command -->
50
+        <NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
51
+        <PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
52
+
53
+        <NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
54
+        <NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 "$(NuGetExePath)"</NuGetCommand>
55
+
56
+        <PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
57
+
58
+        <RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
59
+        <NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
60
+
61
+        <PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
62
+        <PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
63
+
64
+        <!-- Commands -->
65
+        <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)"  $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
66
+        <BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
67
+
68
+        <!-- We need to ensure packages are restored prior to assembly resolve -->
69
+        <BuildDependsOn Condition="$(RestorePackages) == 'true'">
70
+            RestorePackages;
71
+            $(BuildDependsOn);
72
+        </BuildDependsOn>
73
+
74
+        <!-- Make the build depend on restore packages -->
75
+        <BuildDependsOn Condition="$(BuildPackage) == 'true'">
76
+            $(BuildDependsOn);
77
+            BuildPackage;
78
+        </BuildDependsOn>
79
+    </PropertyGroup>
80
+
81
+    <Target Name="CheckPrerequisites">
82
+        <!-- Raise an error if we're unable to locate nuget.exe  -->
83
+        <Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
84
+        <!--
85
+        Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
86
+        This effectively acts as a lock that makes sure that the download operation will only happen once and all
87
+        parallel builds will have to wait for it to complete.
88
+        -->
89
+        <MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
90
+    </Target>
91
+
92
+    <Target Name="_DownloadNuGet">
93
+        <DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
94
+    </Target>
95
+
96
+    <Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">        
97
+        <Exec Command="$(RestoreCommand)"
98
+              Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
99
+
100
+        <Exec Command="$(RestoreCommand)"
101
+              LogStandardErrorAsError="true"
102
+              Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
103
+    </Target>
104
+
105
+    <Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
106
+        <Exec Command="$(BuildCommand)"
107
+              Condition=" '$(OS)' != 'Windows_NT' " />
108
+
109
+        <Exec Command="$(BuildCommand)"
110
+              LogStandardErrorAsError="true"
111
+              Condition=" '$(OS)' == 'Windows_NT' " />
112
+    </Target>
113
+
114
+    <UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
115
+        <ParameterGroup>
116
+            <OutputFilename ParameterType="System.String" Required="true" />
117
+        </ParameterGroup>
118
+        <Task>
119
+            <Reference Include="System.Core" />
120
+            <Using Namespace="System" />
121
+            <Using Namespace="System.IO" />
122
+            <Using Namespace="System.Net" />
123
+            <Using Namespace="Microsoft.Build.Framework" />
124
+            <Using Namespace="Microsoft.Build.Utilities" />
125
+            <Code Type="Fragment" Language="cs">
126
+                <![CDATA[
127
+                try {
128
+                    OutputFilename = Path.GetFullPath(OutputFilename);
129
+
130
+                    Log.LogMessage("Downloading latest version of NuGet.exe...");
131
+                    WebClient webClient = new WebClient();
132
+                    webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
133
+
134
+                    return true;
135
+                }
136
+                catch (Exception ex) {
137
+                    Log.LogErrorFromException(ex);
138
+                    return false;
139
+                }
140
+            ]]>
141
+            </Code>
142
+        </Task>
143
+    </UsingTask>
144
+</Project>

+ 7 - 0
B2Uploader.sln

@@ -7,6 +7,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "B2Uploader", "B2Uploader\B2
7 7
 EndProject
8 8
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "B2Classes", "B2Classes\B2Classes.csproj", "{603F71B3-F819-4E4E-8A0E-738CAC305E8F}"
9 9
 EndProject
10
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{DEE9019D-7D07-4A2C-8B88-EF1E642D0558}"
11
+	ProjectSection(SolutionItems) = preProject
12
+		.nuget\NuGet.Config = .nuget\NuGet.Config
13
+		.nuget\NuGet.exe = .nuget\NuGet.exe
14
+		.nuget\NuGet.targets = .nuget\NuGet.targets
15
+	EndProjectSection
16
+EndProject
10 17
 Global
11 18
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 19
 		Debug|Any CPU = Debug|Any CPU

+ 9 - 0
B2Uploader/B2Uploader.csproj

@@ -13,6 +13,8 @@
13 13
     <FileAlignment>512</FileAlignment>
14 14
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
15 15
     <TargetFrameworkProfile />
16
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
17
+    <RestorePackages>true</RestorePackages>
16 18
   </PropertyGroup>
17 19
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
18 20
     <PlatformTarget>AnyCPU</PlatformTarget>
@@ -65,6 +67,13 @@
65 67
     </ProjectReference>
66 68
   </ItemGroup>
67 69
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
70
+  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
71
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
72
+    <PropertyGroup>
73
+      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
74
+    </PropertyGroup>
75
+    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
76
+  </Target>
68 77
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
69 78
        Other similar extension points exist, see Microsoft.Common.targets.
70 79
   <Target Name="BeforeBuild">