在我构建解决方案的 25% 到 50% 的时间里,我看到了这个:
我以无法形容的方式讨厌这个窗口。它永远不会解决,取消按钮永远不会启用,补救它的唯一方法是终止 devenv 进程并再次加载我的整个解决方案,完全清楚我没有修复任何东西,我同样有可能看到当我尝试构建时也是如此。
我的解决方案一共大约有 60 个项目,其中大部分是 C# 类库,Web 应用程序、Web 服务和控制台应用程序各有一些。但是,即使在构建代码库的一部分且大部分 (50) 项目已卸载时,问题仍然存在。
我的问题是输出窗口在卡住时没有告诉我任何信息,而且我不知道如何确定此锁定的原因。如果我猜测,我会假设这是文件系统中的死锁或其他什么,但我不知道如何证明这一点——更不用说如何防止它了。
我可以做些什么来诊断并从我的解决方案中消除它,这样我就再也看不到它了?一般来说,如何诊断构建过程中出现的问题?
最佳答案
有类似的问题,VS 会挂起 45 秒左右,然后构建 4 秒并完成。 45 秒的挂起不会对 GUI 产生任何输出,VS 会挂起。
使用 ProcMon,当我构建这个项目时,我可以通过 devenv.exe 在/packages/文件夹上看到超过 300 万个文件操作(并且会在一段时间后继续)!!构建的第一步您可以看到它正在检查每个 PACKAGE 以查看它是否需要进行包还原(它不需要)。
由于我倾向于将所有事情都归咎于 NuGet,因此我禁用了 Visual Studio -> 选项 -> Nuget 包管理器 -> 常规 下的 NuGet 包还原“允许 NuGet 下载丢失的包”复选框。 令我高兴的是,构建速度非常快。总共 5 秒!
事实证明,我们在启用构建时启用了包还原(我认为现在在 VS 中默认启用)并且我们还将包 checkin 源代码管理。似乎这会导致 TFS 以某种方式颠簸...检查恢复包必须触发 TFS 进行一些源代码控制操作检查。
仅供引用,这是 VS2013 UPDATE 4 - Nuget 版本:2.8.50926.663,在 NumberOfProjects = 38 的 sln 上,但我可以重新创建这个挂起,只需构建一个具有 2 个依赖项的 csproj。
更新:
在 SccNumberOfProjects = 53 的 Sln 上,本地主机“全部重建”花费了 7:05,Visual Studio 卡住/无响应 2 分钟
另外:这是在一台带有各种文件观察安全工具的机器上,可能不会为整个过程增加任何速度......并且可能是罪魁祸首。
2021 年更新: 如果您正在寻找一种范式转变,新的 SDK style csproj format (见 migration tool)+ nuget PackageReference使更新几乎是即时的(对于上述场景中的相同项目20 秒) - 强烈建议您升级任何旧项目。 ** 已知的不兼容性 - 网站包引用不支持通过 nuget (checkout LibMan) 进行的静态文件引用
关于visual-studio - Visual Studio 在构建期间不断挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19015305/
在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo
我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我们有以下(以及更多)系统,我们将数据从一个应用推送/拉取到另一个:托管CRM(InsideSales.com)Asterisk电话系统(内部)横幅广告系统(openx,我们托管)潜在客户生成系统(自行开发)电子商务商店(spree,我们托管)工作板(本土)一些工作网站抓取+入站工作提要电子邮件传送系统(如Mailchimp,自主开发)事件管理系统(如eventbrite,自主开发)仪表板系统(大量图表和
我构建了一个简单的银行应用程序,它能够执行通常的操作;充值、提现等我的Controller方法执行这些操作并拯救由帐户或其他实体引发的异常。以下是Controller代码中使用的一些方法:defopen(type,with:)account=createtype,(holders.findwith)addaccountinit_yearly_interest_foraccountboundary.renderAccountSuccessMessage.new(account)rescueItemExistError=>messageboundary.rendermessageendde
我有一个允许更新用户记录的表单。它包含:password和:password_confirmation字段,但我不希望在数据库中已存储加密密码时对它们运行验证。View文件中的字段:'ConfirmPassword'%>在互联网上搜索时,我发现了这段代码,我认为它是针对以前版本的Ruby/Rails的。(我会把它放在我的用户模型中。)validates_presence_of:password,:on=>create由于我的用户模型中密码验证的语法不同(如下),我对我需要的语法感到困惑。validates:password,:presence=>true,:confirmation=>
在我的mac上安装几个东西时遇到这个问题,我认为这个问题来自将我的豹子升级到雪豹。我认为这个问题也与macports有关。/usr/local/lib/libz.1.dylib,filewasbuiltfori386whichisnotthearchitecturebeinglinked(x86_64)有什么想法吗?更新更具体地说,这发生在安装nokogirigem时日志看起来像:xslt_stylesheet.c:127:warning:passingargument1of‘Nokogiri_wrap_xml_document’withdifferentwidthduetoproto
我正在尝试根据RyanBatesscreencastonsubdomains在Rails3中设置子域.但是它对我不起作用。我有以下设置:#routes.rbconstraints(Subdomain)doget'devices'=>'devices#all'end#lib/subdomain.rbclassSubdomaindefself.matches?(request)#binding.pryrequest.subdomain.present?&&request.subdomain=="admin"endend加载urladmin.localhost:3000/devices应该将
Ruby语言是否可以用于创建全新的移动操作系统或桌面操作系统,即是否可以用于系统编程? 最佳答案 嗯,现在有一些操作系统使用比C更高级的语言。基本上,ruby解释器本身需要用一些低级的东西来编写,并且需要一些引导加载代码将功能齐全的ruby解释器作为独立内核加载到内存中。一旦ruby解释器被引导并以内核模式(或innerrings之一)运行,就没有什么可以阻止您在其上构建整个操作系统。不幸的是,它可能会很慢。每个操作系统功能的垃圾收集可能会相当引人注目。ruby解释器将负责任务调度和网络堆栈等基本事情,使用垃圾收集框架会大大
这个问题在这里已经有了答案:Unabletoinstallgem-Failedtobuildgemnativeextension-cannotloadsuchfile--mkmf(LoadError)(17个答案)关闭9年前。嘿,我正在尝试在一台新的ubuntu机器上安装rails。我安装了ruby和rvm,但出现“无法构建gemnative扩展”错误。这是什么意思?$sudogeminstallrails-v3.2.9(没有sudo表示我没有权限)然后它会输出很多“获取”命令,最终会出现这个错误:Buildingnativeextensions.Thiscouldtakeawhi
我一直在尝试使用Thor编写一个小型库,以帮助我快速创建新项目和站点。我写了这个小方法:defssh(cmd)Net::SSH.start(server_ip,user,:port=>port)do|session|session.execcmdendend只是协助我在需要时在远程服务器上运行快速命令。问题是当我需要在远程端的sudo下运行命令时,脚本似乎卡在我身上。例如当执行这个...ssh("sudocp#{file_from_path}#{file_to_path}")脚本会提示我输入密码[sudo]passwordforuser:但是在输入之后整个事情就挂起。有人会碰巧知道它为