我有一个扩展名为.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中的配置?
答案 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
文件中创建了一个新地址。看到这个:
因此,您应该只删除旧地址中的重复文件。
答案 1 :(得分:0)
Visual Studio option to change the Nuget Package References