簡體   English   中英

Visual Studio 中的 Packages.config 和 PackageReference

[英]Packages.config and PackageReference in Visual Studio

我正在幫助無法獲得 Visual Studio WPF 項目的同事在我們的 TFS 2015 構建服務器中構建。 我已將他的最新版本代碼拉入(獲取最新版本)到我的 VS 2019 實例中。 我無法讓它建立在我的開發箱上。 當我嘗試在我的開發盒上構建解決方案時,我收到如下錯誤:

XML 命名空間“http://firstfloorsoftware.com/ModernUI”中不存在標簽“ModernDialog”。 XML 命名空間“http://schemas.microsoft.com/expression/2010/interactivity”中不存在標記“Interaction.Triggers”。

當我的同事將更改簽入 TFS 時,它失敗並出現如下錯誤:

找不到 package 'MvvmLightLibs' 的版本 '5.2.0'。 找不到 package 'ModernUI.WPF' 的版本 '1.0.9'。

我首先嘗試更新他在項目中擁有的 NuGet 包,但效果不佳。 即使恢復到最新版本也不能在我的機器上構建。

我同事的做法是把所有的NuGet包都從Visual Studio解決方案中撕下來,然后四處找找DLL,然后放到項目中,在項目中引用。 它確實建立在他的系統上,但不在 TFS 構建服務器上。

所以,我一直在尋找可能的原因。 我遇到了這個 Microsoft 文檔Migrate from packages.config to PackageReference 我對 packages.config 或 PackageReference 都不熟悉,但我覺得 PackageReference 是包含 NuGet 包的“首選”方式。

這就產生了問題。 目前我們TFS構建服務器的Visual Studio最高版本是VS 2015。根據參考文章,VS 2015使用packages.config文件。 比 VS 2015 更新的任何東西都使用包(我認為是 PackageReference)。

我已經將失敗的 WPF 解決方案與我在構建服務器上構建良好的另一個解決方案進行了比較。 構建的解決方案(我將其稱為 SolutionA)在解決方案的根目錄下有一個 packages 文件夾,但它在解決方案的每個項目中也有 packages.config 文件。 構建失敗的解決方案,我稱之為SolutionB,在其根目錄下有packages 文件夾,在單元測試項目中有一個packages.config 文件。 (我認為單元項目構建良好。)

盡管我們正在使用較新版本的 Visual Studio,但我懷疑構建服務器遇到的問題是由於構建服務器具有較舊版本的 Visual Studio。 我們的 Visual Studio 許可證數量有限,因此我無法在構建服務器上放置較新版本的 Visual Studio。 那么,如何將這些 packages.config 文件放入每個項目中呢?

首先,您的解決方案實際上使用packages.config nuget 管理格式。 這種格式使每個項目都有一個名為packages.config的文件,其中列出了所有 nuget 包及其版本。 這就是packages.config nuget 管理格式的特點。 因此,您還應該確保將該文件提交到TFS中。

其次,將packages.config遷移到PackageReference並不是一件容易的事,應該使用VS IDE來完成。 大多數情況下,您必須對項目的每個csproj文件進行重大更改。 實際上, PackageReference是靈活且輕量級的,它沒有packages.config文件和存儲所有 nuget 包的 packages 文件夾。 只需將它們直接嵌入到 proj 文件中。 到目前為止, PackageReference是主流。

Your problem is that you did not do a nuget restore operation on TFS build to make the missing nuget packages under the packages folder so that build process will find those nuget packages and make them work.

您應該添加一個nuget restore xxx\sln命令行或任務。

請檢查

暫無
暫無

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

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