max*_*axp 179 nuget visual-studio-2012
我在Visual Studio 2012中有解决方案和项目.
该项目packages.config在项目的根目录中有一个文件.
出于这个问题的目的,我们假设我不小心从References项目的部分删除了这些库.
进入NuGet包管理器时,界面仍在报告这些包旁边的刻度,表示它们已安装.
我可以看到如何解决这种情况的唯一方法是删除所有条目packages.config,这将解决NuGet接口报告它们已安装的问题,并重新添加每个条目.
有更聪明的方法吗?我曾希望启用"启用nuget来恢复丢失的包"可以解决这个问题,但它似乎无法做任何事情.
小智 327
在NuGet包管理器控制台中,输入以下命令:
Update-Package -Reinstall -ProjectName Your.Project.Name
如果要重新安装软件包并恢复整个解决方案的引用,请省略该-ProjectName参数.
Gan*_*Gan 44
您需要在VS解决方案级别启用NuGet包还原才能使还原缺失包正常工作.

Joh*_*ton 13
如果这对某人有帮助,对我来说,上述情况都不够.我仍然无法建立,VS仍然找不到参考.关键是在恢复包之后关闭并重新打开解决方案.
这是场景(使用Visual Studio 2012):
您打开一个缺少包的解决方案.参考文献显示VS无法找到它们.有许多方法可以恢复丢失的包,包括
nuget restore,如果你已经安装了命令行的NuGet但无论采用何种方法,这些参考文献仍将显示为缺失.当你构建它将失败.叹.然而,如果你关闭解决方案并重新打开它,现在VS <HintPath>再次检查那些好的,发现包裹回到他们所属的地方,并且一切都很好.
Visual Studio 仍然没有看到你有包吗?仍然显示它无法解决的参考?确保您还原的软件包版本与<HintPath>.csproj文件中的软件包版本完全相同.即使是小错误修复号(例如1.10.1到1.10.2)也会导致引用失败.您可以通过直接编辑csproj xml来修复此问题,或者通过删除引用并使新的指针指向packages目录中新恢复的版本来解决此问题.
Jur*_*uri 11
虽然@jmfenoll提供的解决方案有效,但它会更新到最新的软件包.在我的情况下,安装了beta2(预发行版),它将所有的库更新为RC1(有一个bug).因此,上述解决方案只完成了一半的工作.
如果您和我一样处于同样的状态,并且您希望将项目与您在/中指定的NuGet软件包的确切版本同步packages.config,那么此脚本可能会对您有所帮助.只需将其复制并粘贴到您的Package Manager控制台即可
function Sync-References([string]$PackageId) {
get-project -all | %{
$proj = $_ ;
Write-Host $proj.name;
get-package -project $proj.name | ? { $_.id -match $PackageId } | % {
Write-Host $_.id;
uninstall-package -projectname $proj.name -id $_.id -version $_.version -RemoveDependencies -force ;
install-package -projectname $proj.name -id $_.id -version $_.version
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用像这样的特殊包名执行它
Sync-References AutoMapper
Run Code Online (Sandbox Code Playgroud)
或者对于所有包裹
Sync-References
Run Code Online (Sandbox Code Playgroud)
积分转到Dan Haywood和他的博客文章.
可以在"包管理器控制台"窗口中运行以下脚本,并在重新安装之前从解决方案中的每个项目中删除所有包.
foreach ($project in Get-Project -All) {
$packages = Get-Package -ProjectName $project.ProjectName
foreach ($package in $packages) {
Uninstall-Package $package.Id -Force -ProjectName $project.ProjectName
}
foreach ($package in $packages) {
Install-Package $package.Id -ProjectName $project.ProjectName -Version $package.Version
}
}
Run Code Online (Sandbox Code Playgroud)
这将再次运行每个包的安装脚本,这将恢复缺少的程序集引用.不幸的是,安装脚本所能做的所有其他事情 - 比如创建文件和修改配置 - 也会再次发生.您可能希望从一个干净的工作副本开始,并使用您的SCM工具来选择要保留的项目中的哪些更改以及要忽略的更改.
| 归档时间: |
|
| 查看次数: |
108861 次 |
| 最近记录: |