簡體   English   中英

VS 2019 解決方案資源管理器引用舊 Nuget 包中的文件

[英]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緩存,同時刪除binobj文件夾。

此外,如果您想將nuget package的內容文件復制到主項目的output文件夾中。 請用

<PackageCopyToOutput>true</PackageCopyToOutput>

檢查這個類似的問題

暫無
暫無

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

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