有集成的NuGet到您的構建過程中的幾個不同的解決方案取決於你需要多少集成,在我們的例子中,我們希望使用NuGet作爲包管理器,並允許開發人員構建他們的解決方案,即使他們沒有在他們的機器上安裝NuGet,爲了這個工作,我們啓用了包恢復, NuGet二進制文件到您的解決方案文件夾並更新項目文件請注意,NuGet並不總是正確地更新項目文件。在我們的案例中,我們發現一些項目文件去噸更新,但其他人沒有。要驗證項目是否已更新,您需要以XML文件的形式打開項目文件。爲了實現這個負載的解決方案,並右鍵點擊相關項目並選擇卸載項目。然後再次右鍵單擊該項目並選擇編輯[PROJECT_NAME]。在項目文件中,您應該看到
- A
RestorePackages
第一個屬性組中的屬性。此屬性的值應爲true
- 在項目文件的最後一個
import
語句。這個導入語句應該指向NuGet二進制文件附帶的'NuGet.targets文件。
下面是我們的項目文件(大量編輯)
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SolutionDir Condition="'$(SolutionDir)' == '' or '$(SolutionDir)' == '*undefined*'">$(MSBuildProjectDirectory)\..</SolutionDir>
<ProjectGuid>{8B467882-7574-41B2-B3A8-2F34DA84BE82}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>MyCompany.MyNamespace</RootNamespace>
<AssemblyName>MyCompany.MyNamespace</AssemblyName>
<!-- Allow NuGet to restore the packages if they are missing -->
<RestorePackages>true</RestorePackages>
</PropertyGroup>
<Import Project="$(SolutionDir)\BaseConfiguration.targets" />
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<Compile Include="MyClass.cs" />
<!--
.... MANY MORE FILES HERE
-->
</ItemGroup>
<!-- Import the Nuget.targets file which integrates NuGet in the build process -->
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
你需要採取的下一步是提供解決方案級別的NuGet配置文件的一個示例中,你會指出需要「安裝」軟件包的位置以及package repository的URL是什麼。在我們的情況下,解決方案目錄結構如下:
(D) root
(D) build
(D) packages
(D) source
(D) .nuget
NuGet.config
NuGet.exe
NuGet.targets
(D) MyCoolProject
MyCoolProject.csproj
MyCoolProject.sln
(D) templates
NuGet.Config
凡(D)
表示目錄。
NuGet.config
文件包含以下配置設置。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageRestore>
<add key="enabled" value="True" />
</packageRestore>
<config>
<add key="repositorypath" value="packages" />
</config>
<packageSources>
<add key="OurPackageServer" value="PACKAGE_SERVER_ADDRESS" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>
該配置文件指示包恢復被啓用,該儲存庫路徑(其中,包被放置)是包目錄和包源是活動的。
通過在根目錄下放置一個NuGet.config文件,我們可以在NuGet中使用hierarchical configuration選項。這允許單個解決方案覆蓋計算機特定的配置。另一個好處是,這樣我們就不需要在構建服務器上安裝NuGet(因爲可執行文件和配置在存儲庫中)。
通過此設置,開發人員可以從Visual Studio構建解決方案。即使沒有安裝NuGet,構建也可以在開發人員機器上正常工作。但是請注意,如果沒有在Visual Studio中安裝NuGet,他們將無法將包添加到項目中。 在構建服務器上,您可以簡單地使用MsBuild構建解決方案,該解決方案將自動從軟件包存儲庫下載軟件包。 Visual Studio不需要安裝在構建計算機上(只是您選擇的.NET框架)。
這聽起來像只是想我需要......如果它來自JetBrains我希望它會工作,並易於使用。 – kellyb