簡體   English   中英

Require.csproj nuget 包在構建解決方案時存在

[英]Require .csproj nuget packages to exist when building solution

我正在創建一個應用程序來自動更新解決方案中的 nuget 包並構建它以確保它們仍然兼容。

設想:

<PackageReference Include="Dapper" Version="1.50.5" />使用正確的 package 版本清理/構建 package。 它成功了。

然后我用垃圾文本編輯 .csproj 中的版本。

<PackageReference Include="Dapper" Version="dasdasdasdqw3" />還是成功了。 但是它確實記錄了錯誤: Error occurred while restoring NuGet packages: Invalid restore input. Missing required property 'Name'. Error occurred while restoring NuGet packages: Invalid restore input. Missing required property 'Name'.

我的理解是它使用的是\.nuget\packages文件夾中以前的成功版本。

如果 package 無法恢復而不涉及從\.nuget\packages中刪除它,有沒有辦法讓構建失敗?

假設您使用的是net core項目。

首先,確保您在工具-->選項--> Nuget Package 管理器-->常規下啟用了這兩個選項:

在此處輸入圖像描述

實際上,當您更改版本時,vs 會檢測到更改並使用當前版本,並且不會使用\.nuget\packages下最新的有效 package 。 在我這邊,它失敗了。

右鍵單擊您的項目Properties --> Unload project --> Edit Project File然后從1.50.5更改為adadd 然后重新加載您的項目,您會發現該項目有一個無效的 nuget 版本,名為asda

它成功地使構建過程失敗。 您應該單擊Rebuild而不是Build按鈕。

在此處輸入圖像描述

========

如果您在解決方案資源管理器下沒有看到 nuget package 版本的 UI 顯示,您可以卸載項目,然后重新加載您的項目。 並等待片刻得到改變。

此外,您可以在 Project Properties --> Build Events --> Pre-Build event 命令行下添加dotnet restore命令以使其更准確。

要自動使用最新的更新版本,您可以使用Floating Versions

嘗試這個:

<PackageReference Include="Dapper" Version="*" />

It will update the nuget package to use the latest version under nuget package source feed rather than the latest version from cache \.nuget\packages . 重新加載項目時,稍等片刻,您將看到更改為自動使用最新的 nuget 版本。

暫無
暫無

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

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