关于:我有一个ASP.NET 网站(非Web项目),解决方案中包含3个类库项目。之前我使用 SVN ,但现在 Git 用于源管理。我已经在计算机(用作服务器)上本地安装了git,并使用它来合并来自其他开发人员的源代码。此外,我正在使用Visual Studio 2015社区版,它提供了使用git的工具。
问题:从主存储库中克隆项目后,我构建项目来运行它。构建项目会显示一个对话框,说明"包恢复正在进行中"。此过程创建一个名为" Packages"的文件夹。该文件夹包含packages.config文件中列出的每个包。但是在恢复完成后,项目会抛出以下异常:
此例外显示每个包(此处为Autofac)。
类型或命名空间名称' Autofac'找不到(你错过了使用指令或汇编引用吗?)
解决方法要解决此问题,我需要卸载每个软件包并重新安装它,问题就解决了。对于每台开发者机器,我需要一次又一次地做这件事,这也是令人沮丧和耗时的。
有没有人在使用ASP.NET中的Nuget,git和网站时遇到同样的问题。
答案 0 :(得分:2)
最好不要将第三方软件包放入源代码管理中。它会使您的存储库膨胀(即使在大型Web应用程序中,外部软件包的大小也会大大超出您的代码量。)
如果NuGet包恢复速度很慢,您可以查看使用本地缓存(这可以像共享文件夹一样简单)或更好的互联网连接。
那就是说,每台机器只应该有一次这个问题。在下载软件包时,您可以向新团队成员提供设计概述......
答案 1 :(得分:2)
我之前遇到过这样的问题。在我的情况下,原因是我更改了项目路径(将项目移动到另一个目录),并且packages目录(包含NuGet包)的路径存储在旧路径的csproj文件中,即VS无法恢复NuGet包。解决方案是手动编辑csproj并使其引用正确的新包路径。
如果这对您不起作用,您仍然可以使用解决方法,但为了简单起见,使用以下PowerShell命令(在NuGet控制台中):
var request = URLRequest(url: myUrl!)
注意:项目名称不包含csproj扩展名,只包含项目名称
答案 2 :(得分:0)
确保您的所有项目都使用相同的目标框架,如果还没有完成,您通常可以获得
type or namespace [name] could not be found
警告。
要执行此操作,请右键单击解决方案资源管理器中的每个项目>属性>应用程序选项卡>目标框架。它们应该全部相同,否则项目中的引用之间将存在不兼容性。 Here's有关此问题,希望这会有所帮助。
答案 3 :(得分:0)
主要原因是packages.config文件中没有Autofac引用。 当您在屏幕上看到恢复包消息框时,这意味着nuget包管理器正在尝试安装包文件夹中缺少的所有包。 尝试执行此步骤:
答案 4 :(得分:0)
VS 2019也有同样的问题。在ASP.NET中,程序包通过bin文件夹中显示的.refresh文件进行更新。如果未将它们检入到Git中,则不会将其复制到您的克隆副本中。
我为我的所有软件包dll添加了.refresh文件,确保.refresh文件中的版本和路径正确,并且现在所有内容都按预期更新。