![](/img/trans.png)
[英]When building NuGet packages, VS pretends elements in the csproj file like <Deterministic> and <EmbedUntrackedSources> don't exist
[英]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.