由于 .suo 文件,发布我的 Web 应用程序可能需要很长时间才能完成
Posted
技术标签:
【中文标题】由于 .suo 文件,发布我的 Web 应用程序可能需要很长时间才能完成【英文标题】:Publishing my web application can take long time to accomplish because of the .suo file 【发布时间】:2011-11-17 08:00:07 【问题描述】:我有一个通过 Visual Studio 2010 发布到我的服务器的 Web 应用程序项目。我的问题是它可能需要很长时间才能真正发布它。 可能需要 10 分钟!它不会每次都发生,但经常发生。
这是我在输出 -> 尝试发布时构建控制台中的内容的摘要:
项目正在编译 - OK 正在连接到 C:\Usersuser\Desktop\MyProjectTest...(这可能需要长达 10 分钟) 文件正在发布...进程浏览器
当我打开 ProcessExplorer 时,我看到 devenv.exe
正在占用所有 CPU。当我打开这个进程时,我看到消耗所有CPU的任务是clr.dll!StrongNameSignatureVerification+0x11ee1
。这个任务一完成,10分钟后,发布任务很快就完成了。
进程监视器
使用 Process Monitor,我监控了 clr.dll!StrongNAmeSignatureVerification 的 TID,并且我收到了许多冗余事件。超过 5 分钟,该任务尝试访问我的计算机上没有的文件。他正在搜索 Microsoft.Build.Task.resources.dll
。就像发布任务一次又一次地尝试不存在的东西一样。供您参考,我正在使用 Windows 7 法语 和 Visual Studio 2010 英语。在屏幕截图中,您可以看到 2000 多个相同事件中的 10 个事件!
有关我的设置的更多信息
以下是一些有助于识别问题的信息:
我的应用程序是使用 MVC3 构建的 我有几个第三方 dll。其中一些已签名。 我正在使用文件系统方法发布。 我尝试在本地计算机上发布,但问题也存在,所以不是我的计算机和服务器之间的网络问题。 我已经在 Windows 7 x86 & x64 法语版上进行了测试 我的 Visual Studio 2010 SP1 是英文版更新 2011-09-23
我现在知道如何解决这个问题但是我不知道是什么原因造成的。如果我删除 **.suo 文件(与 .sln 文件处于同一级别)并重新打开 Visual Studio,发布速度会非常快。因此,每次发布变慢时,重新初始化 .suo 文件似乎都能解决问题。
为了再做一次测试,我在发布缓慢的时候备份了.suo文件并删除了它。现在出版速度很快。如果我将 .suo 文件复制回他的位置并重新打开 Visual Studio,发布将再次变慢。所以一切似乎都指向那个文件。
对这个有什么想法吗?
【问题讨论】:
如果您想了解网络方面到底发生了什么,您可以试试 WireShark。 (请记住,如果 VS 使用 100% 的 CPU,一切都会运行缓慢) @rlb.usa,我已经运行了 Fiddler & Wireshark,但我什么也没找到,但我对我的问题有了新的线索。我使用了 Process Monitor 并发现有很多冗余事件。我已经编辑了描述。 我确定如果您正在运行强名称,那么您一定需要它们,但如果您看到这个codeproject.com/KB/security/StrongNameExplained.aspx 有任何帮助,它可能有助于满足一些要求并检查您是否全部为了做到这一点,设置正确。 @minus4,感谢您提供的链接,但根据我本周末所做的所有研究,这似乎不是一个强大的名称问题。事实上,从今天开始,这是一个非常奇怪的问题,我的发布速度非常快,我还没有改变任何东西:) 我在两个不同的客户站点遇到了同样的问题,您删除 *.suo 文件的建议已经解决了我的问题,并且似乎没有对我造成任何其他问题。跨度> 【参考方案1】:试试这个方法
要在开发或生产服务器上部署该版本,请按照以下步骤操作。
-
安装 Web 部署 MSI。
在解决方案资源管理器下右击你的项目,添加web部署项目(这里我没有使用convert to web application或publishing)
然后编译文件。这将在您的项目目录中创建一个文件夹,其中将包含要在服务器上部署的所需文件。
备份您的虚拟目录并从 inetpub 中删除虚拟目录和文件。
转到 Inet mgr ,在 run hit enter 中键入 inetmgr。
在默认网站下,创建一个虚拟目录,将部署的文件保存在inetpub中并浏览文件。
允许适当的访问,例如读取、运行脚本和浏览。就是这样
如果您觉得有用,请将其标记为您的答案,否则请告诉我...
【讨论】:
【参考方案2】:我不确定是不是 suo 文件导致的,但对我来说,this 解决了这个问题。
编译后,发布会调用aspnet_compiler,实际上需要更长的时间,因为它正在为所有代码生成自定义dll。
但是请与您的 VSPackages 联系,是否有任何为某种解释而编写的包,这可能会中断您的发布。
【讨论】:
【参考方案3】:我刚刚在发布到网络共享时遇到了同样的问题,发现在 Windows 资源管理器中复制文件也非常慢。当我压缩构建文件夹并将其复制到其中时,需要几秒钟。我的结论是,一端或另一端的 *** OR Antivirus OR Firewall 会为每次文件传输增加一些开销。
【讨论】:
请使用评论部分进行讨论和疑问,而不是答案以上是关于由于 .suo 文件,发布我的 Web 应用程序可能需要很长时间才能完成的主要内容,如果未能解决你的问题,请参考以下文章