簡體   English   中英

如何在CI Server上的ASP.NET網站上使用NuGet軟件包

[英]How to use NuGet packages with an ASP.NET Website on CI Server

我有許多ASP.NET Web表單網站(一個沒有.csproj文件的網站),並且我試圖找出如何最好地與它們一起使用NuGet程序包。 使用Visual Studio 2015時,通過UI添加NuGet程序包可以正常工作(網站根目錄中有packages.config),並且該版本將二進制文件放入bin文件夾中。

問題是試圖通過MSBuild在TeamCity上構建項目。 對於其他項目,我可以將NuGet.exe與restore命令一起使用(針對csproj或sln文件),並且軟件包已正確下載並包含在輸出中。 但是,這不適用於網站,因此由於缺少文件而導致編譯失敗。

作為最后的選擇,我可以編寫一個自定義腳本/構建步驟以將程序集手動復制到bin文件夾,但是我想避免這種情況。 我想念什么嗎? 是否可以在Visual Studio之外的網站上使用NuGet?

一段時間后,盡管不是最佳方式,但我有一種解決方法可以使我到達需要的位置。

在Visual Studio的較新版本中,通過VS將二進制依賴項添加到網站時,它會將(binaryfile).dll.refresh文件添加到二進制文件旁邊的bin文件夾中。 該文件的內容是通過解決方案的packages文件夾到.dll的相對路徑。 此外,packages.config文件已添加到網站。

將其構建在CI服務器上的方法是:

  1. 忽略(.gitignore,.hgignore)網站的bin文件夾
  2. 在bin文件夾中明確添加.refresh文件
  3. 在實際構建之前,請調用NuGet restore,將路徑傳遞到網站的packages.config,並將PackagesDirectory(或SolutionDirectory)設置為解決方案的packages文件夾
  4. 預編譯后,MSBuild將打開每個刷新文件,並從文件中包含的位置復制該文件。

這不是一個很好的解決方案,因為我現在必須多次調用NuGet restore(一次解決方案,每個網站一次),但是它確實有效。 我不知道支持.refresh文件多久,但是它在2015年確實可以工作。我可能會在NuGet中發出更改請求,以允許通過命令行傳遞多個solution / packages.configs。

謝謝,埃里克

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM