[英]How to download all Nuget packages referenced in VS solution as nupkg files?
[英]VS 2019 Solution Explorer references files from old Nuget packages
我將 Visual Studio 2019 用於 .NET Core 3.1 MVC 應用程序。 我已經安裝了幾個我也創建的 Nuget 包。 一些軟件包包含它們自己的設置文件,需要將其復制到 output 目錄才能使應用程序正常工作。 這些設置文件被放入他們自己的文件夾中,一切都很好。 這些包之一的 Sample.csproj 文件:
<PropertyGroup>
<TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>[redacted</Authors>
<Company>[redacted</Company>
<Description>[redacted]</Description>
<Version>1.0.2.2-alpha</Version>
</PropertyGroup>
<ItemGroup>
<None Remove="settings\mySettings.Development.json" />
<None Remove="settings\mySettings.Production.json" />
<None Remove="settings\mySettings.Staging.json" />
</ItemGroup>
<ItemGroup>
<Content Include="settings\mySettings.Development.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Pack>true</Pack>
</Content>
<Content Include="settings\mySettings.Production.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Pack>true</Pack>
</Content>
<Content Include="settings\mySettings.Staging.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Pack>true</Pack>
</Content>
</ItemGroup>
奇怪的是,當我更新其中一個包時,有時 Visual Studio 不會鏈接到更新后的 package 中的設置文件。 例如,這是 web 應用程序的 my.csproj 文件。
<Content Update="..\..\..\..\..\.nuget\packages\mypackage\1.0.2.2-alpha\contentFiles\any\netstandard2.0\settings\mySettings.Development.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Update="..\..\..\..\..\.nuget\packages\mypackage\1.0.2.2-alpha\contentFiles\any\netstandard2.0\settings\mySettings.Production.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Update="..\..\..\..\..\.nuget\packages\mypackage\1.0.2.2-alpha\contentFiles\any\netstandard2.0\settings\mySettings.Staging.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
這部分看起來不錯,即使我必須手動將路徑從絕對更改為相對。
但是在解決方案資源管理器中,當我查看這些文件的屬性時,它顯示構建操作為None
,並且路徑是舊 package 版本。 如果我隨后將構建操作更改為Copy always
,VS 將添加將舊文件復制到 .csproj 的說明。
這可能是一個問題,因為如果另一個開發人員接管了這個項目,他們可能不會注意到版本差異,如果他們更改構建操作,他們可能會用舊的設置文件覆蓋正確的設置文件。
我在 .csproj 文件中沒有看到對舊版本的任何引用,那么它來自哪里? 請注意,舊版本的 package 也未安裝在解決方案的任何位置。 有誰知道這筆交易是什么?
謝謝。
您必須先清理 nuget 緩存或刪除C:\Users\Administrator\.nuget\packages
下的所有文件。
不確定您的舊 package 版本是否與新版本相同。 換句話說,您仍然制作了相同的 package 版本並且沒有為其分配新版本,這使得 VS 總是從 nuget 緩存中安裝舊版本。 所以你必須清理 nuget 緩存文件夾以刪除所有舊包。
所以我的建議是,當你安裝新版本的nuget package時,你必須先清理nuget緩存,同時刪除bin
和obj
文件夾。
此外,如果您想將nuget package的內容文件復制到主項目的output文件夾中。 請用
<PackageCopyToOutput>true</PackageCopyToOutput>
檢查這個類似的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.