如何在Visual Studio项目中更改NuGet程序包引用以使用Nuget.config

时间:2020-03-30 16:37:31

标签: visual-studio msbuild nuget

我有一个扩展名为.csproj的Visual Studio项目文件。里面是这样的引用:

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

我现在在solution文件夹的父文件夹中制作了一个NuGet.config文件。我删除了本地的“ packages”文件夹。在新的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软件包还原下载它们。欲获得更多信息... 丢失的文件是.. \ packages \ Microsoft.Net.Compilers.1.0.0 \ build \ Microsoft.Net.Compilers.props。

我该如何解决?

如果我必须手动替换项目文件中的(Import Project =“ .. \ packages ...)元素,我应该将其更改为什么,以便它遵循Nuget.config中的配置?

2 个答案:

答案 0 :(得分:3)

如果我必须手动替换(Import Project =“ .. \ packages ...) 项目文件中的元素,我应该将其更改为什么 是否遵循Nuget.config中的配置?

由于您使用了新的nuget.config文件,该文件更改了本地nuget参考的路径(例如<add key="repositoryPath" value="xxxxxx" />)。

并且还原将仅还原丢失的nuget软件包,而不会更改为使用xxx.csproj中的新nuget软件包位置。

所以您可以按照我的步骤解决此问题:

解决方案

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文件创建。而it is a nuget mechanism可以在安装nuget软件包时在xxx.csproj文件中执行一些操作。

但是,此文件也很特殊,并且在您更改nuget参考路径时也是如此。 因为,nuget启用了新的地址机制,因此在卸载过程中,Microsoft.Net.Compilers.props的旧地址仍然无法识别,因此无法将其卸载。 实际上,当您执行重新安装nuget软件包时,已在xxx.csproj文件中创建了一个新地址。看到这个:

enter image description here

因此,您应该只删除旧地址中的重复文件。

答案 1 :(得分:0)

Visual Studio option to change the Nuget Package References

  • 在Visual Studio工具中=> Nuget程序包管理器=>程序包源。
  • 您可以在此处更改软件包的来源。
相关问题