成功还原 Nuget 包后,项目不知道包
Project Not Aware Of Packages After Successful Nuget Package Restore
我正在与其他团队成员一起处理大型 C# 项目。到目前为止,该项目有点杂乱无章,每个人都有自己的方式来建立他们的环境并 运行 进行开发。对于新成员(和未来的成员),我正在尝试记录并加强我们的开发过程。该项目由 git 控制版本,成员使用 VS2012、VS2015 和 Monodevelop。
我们的 C# 解决方案中的 C# 项目都有它们需要的 NuGet 包。我在 .gitignore
文件中有以下内容:
# NuGet Packages
*.nupkg
# Ignore the actual packages but not the config file for them
**/packages/**/*
!**/packages/repositories.config
# don't ignore build/, which is used as an MSBuild target.
!**/packages/build/
所以当我从一台机器上推送然后在另一台机器上克隆时,我确实有一个解决方案,其中包含项目。这些项目有 packages.config
个文件,也就是 xml 个文件包含所需的包和版本的名称。
这就是我的问题所在
我尝试在带有 VS2015 社区版的新 Windows 7 机器上克隆存储库,效果很好。然后提示恢复 NuGet 包。我做到了。我可以看到包和版本是使用感兴趣项目的 NuGet 包管理器视图安装的:
但是在我的项目参考中,它们似乎没有安装:
尝试用较小的项目隔离问题
我觉得这可能很奇怪,所以我关闭了解决方案并开始了一个新的小型解决方案,其中包含一个小型控制台应用程序项目。我向该项目添加了一个旧版本的 NUnit,并验证了 NuGet 包已安装到 pakcages
目录中。然后我关闭了解决方案,并删除了 packages 目录。当我打开解决方案时,它意识到包不在那里,所以我尝试通过右键单击包菜单来执行恢复包操作。这很好用。
所以我想我的大 C# 项目中一定有一些其他配置搞砸了。我不知道它是否正在我系统的其他地方安装软件包。任何关于在哪里查看或查看哪些配置的指示都会有所帮助和赞赏!
(我还没有在其他地方看到这个问题,显然安装了包但项目仍然不知道它)
2016 年 7 月 28 日更新
我正在查看解决方案的 nuget.config
文件,其中似乎有一行:
<add key="repositorypath" value="External\Packages" />
然后我找到了一个和我的解决方案文件同级的目录,名字叫External Packages
。我想指出,最初设置此解决方案及其项目的人已不在。所以我删除了那个目录和 nuget.config
文件。我重新启动了 VS2015 并 运行 恢复 NuGet 包操作。这似乎是为了恢复软件包,并创建了一个名为 packages
的目录,现在将它们存储在该目录中。现在,这模仿了我在我试图重新创建此行为的小项目中看到的情况。
但我仍然 运行 遇到 NuGet 包管理器说包已安装但 'References' 不显示它们的问题。
所以我想知道是否有一种方法可以配置 VS 以查看这些包的存储位置以供参考?
@RoberHarvey 有正确的解决方案。问题出在我的解决方案中项目的 .csproj 文件中。这都是代码库的一部分,它从来没有真正有效地跟踪包,并且过去曾尝试修复它,但都以失败告终。因此,我的项目文件中存在一些不一致之处。在删除旧 nuget.config 文件后,通过卸载并重新安装问题包来解决此问题。
我正在与其他团队成员一起处理大型 C# 项目。到目前为止,该项目有点杂乱无章,每个人都有自己的方式来建立他们的环境并 运行 进行开发。对于新成员(和未来的成员),我正在尝试记录并加强我们的开发过程。该项目由 git 控制版本,成员使用 VS2012、VS2015 和 Monodevelop。
我们的 C# 解决方案中的 C# 项目都有它们需要的 NuGet 包。我在 .gitignore
文件中有以下内容:
# NuGet Packages
*.nupkg
# Ignore the actual packages but not the config file for them
**/packages/**/*
!**/packages/repositories.config
# don't ignore build/, which is used as an MSBuild target.
!**/packages/build/
所以当我从一台机器上推送然后在另一台机器上克隆时,我确实有一个解决方案,其中包含项目。这些项目有 packages.config
个文件,也就是 xml 个文件包含所需的包和版本的名称。
这就是我的问题所在
我尝试在带有 VS2015 社区版的新 Windows 7 机器上克隆存储库,效果很好。然后提示恢复 NuGet 包。我做到了。我可以看到包和版本是使用感兴趣项目的 NuGet 包管理器视图安装的:
尝试用较小的项目隔离问题
我觉得这可能很奇怪,所以我关闭了解决方案并开始了一个新的小型解决方案,其中包含一个小型控制台应用程序项目。我向该项目添加了一个旧版本的 NUnit,并验证了 NuGet 包已安装到 pakcages
目录中。然后我关闭了解决方案,并删除了 packages 目录。当我打开解决方案时,它意识到包不在那里,所以我尝试通过右键单击包菜单来执行恢复包操作。这很好用。
所以我想我的大 C# 项目中一定有一些其他配置搞砸了。我不知道它是否正在我系统的其他地方安装软件包。任何关于在哪里查看或查看哪些配置的指示都会有所帮助和赞赏!
(我还没有在其他地方看到这个问题,显然安装了包但项目仍然不知道它)
2016 年 7 月 28 日更新
我正在查看解决方案的 nuget.config
文件,其中似乎有一行:
<add key="repositorypath" value="External\Packages" />
然后我找到了一个和我的解决方案文件同级的目录,名字叫External Packages
。我想指出,最初设置此解决方案及其项目的人已不在。所以我删除了那个目录和 nuget.config
文件。我重新启动了 VS2015 并 运行 恢复 NuGet 包操作。这似乎是为了恢复软件包,并创建了一个名为 packages
的目录,现在将它们存储在该目录中。现在,这模仿了我在我试图重新创建此行为的小项目中看到的情况。
但我仍然 运行 遇到 NuGet 包管理器说包已安装但 'References' 不显示它们的问题。
所以我想知道是否有一种方法可以配置 VS 以查看这些包的存储位置以供参考?
@RoberHarvey 有正确的解决方案。问题出在我的解决方案中项目的 .csproj 文件中。这都是代码库的一部分,它从来没有真正有效地跟踪包,并且过去曾尝试修复它,但都以失败告终。因此,我的项目文件中存在一些不一致之处。在删除旧 nuget.config 文件后,通过卸载并重新安装问题包来解决此问题。