簡體   English   中英

如何更改 Visual Studio 項目中的 NuGet 包引用以使用 Nuget.config

[英]How to change the NuGet-package reference in a Visual Studio project to use Nuget.config

我有一個擴展名為 .csproj 的 Visual Studio 項目文件。 里面是這樣的引用:

<Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props"....

我現在已經在解決方案文件夾的父文件夾中創建了一個 NuGet.config 文件。 我刪除了本地“包”文件夾。 在新的 nuget.config 中,我設置了一個用於存儲包的公共位置。

nuget.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>
        <add key="repositoryPath" value="D:\Data\NuGet" />
    </config>
    <packageRestore>
        <add key="enabled" value="True" />
    </packageRestore>
</configuration>

當我構建時,我現在收到此錯誤:

此項目引用此計算機上缺少的 NuGet 包。 使用 NuGet Package Restore 來下載它們。 有關詳細信息... 丟失的文件是 ..\\packages\\Microsoft.Net.Compilers.1.0.0\\build\\Microsoft.Net.Compilers.props。

我該如何解決這個問題?

如果我必須手動替換項目文件中的 (Import Project="..\\packages...) 元素,我應該將其更改為什么,以便它遵循 Nuget.config 中的配置?

如果我必須手動替換項目文件中的 (Import Project="..\\packages...) 元素,我應該將其更改為什么,以便它遵循 Nuget.config 中的配置?

由於您使用了新的nuget.config文件,該文件更改了本地 nuget 引用的路徑(例如<add key="repositoryPath" value="xxxxxx" /> )。

恢復將僅恢復丟失的NuGet軟件包,但不會改變在使用新的NuGet包的位置xxx.csproj

所以你可以按照我的步驟來解決這個問題:

解決方案

1)工具-->Nuget 包管理器-->包管理器控制台-->

鍵入Update-Package -reinstall以重新安裝這些包以引用新的正確路徑。

2)進入xxxx.csproj文件,刪除這些重復的舊import信息,如下所示:

 <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\..\..\..\..\..\installed_packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />

 <Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />

3)然后重建你的項目,將解決這個問題。

更新 1

新的Nuget.config文件將指定新安裝的 nuget 包使用新的引用地址,但對於以前安裝的 nuget 包, xxx.csporj文件中的引用地址將保持舊地址。 還原過程只還原新路徑下的nuget包,但不會對xxx.csproj文件中的nuget引用做任何改動,所以只能重新安裝。

此外,導入節點由microsoft.net.compilers nuget 包中的build文件夾中的Microsoft.Net.Compilers props 文件創建。 它是一種nuget機制,可以在安裝nuget包時在xxx.csproj文件中進行一些操作。

但是,此文件也很特殊,當您更改 nuget 引用路徑時。 由於nuget啟用了新地址機制,在卸載過程中,仍然無法識別Microsoft.Net.Compilers.props的舊地址,因此無法卸載。 其實在執行reinstall nuget包的時候,已經在xxx.csproj文件中新建了一個地址。 看到這個:

在此處輸入圖片說明

所以你應該從舊地址中刪除重復的文件。

用於更改 Nuget 包引用的 Visual Studio 選項

  • 在 Visual Studio 工具 => Nuget 包管理器 => 包源中。
  • 您可以在此處更改包源。

暫無
暫無

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

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