我有一个通过Visual Studio 2010发布到我的服务器的Web应用程序项目。我的问题是,它可能需要很长时间才能真正发布它。可能10分钟!这种情况不是每次都发生,而是经常发生。
以下是我尝试发布时Output -〉Build控制台中的内容摘要:
- 项目正在编译-确定
- 正在连接到C:\Users{user}\Desktop\MyProjectTest...(这是可能需要10分钟的位置)
- 正在发布文件...
进程浏览器
当我打开ProcessExplorer时,我看到**devenv.exe
占用了所有CPU。当我打开此进程时,我看到消耗所有CPU的任务是clr.dll!StrongNameSignatureVerification+0x11ee1
**。此任务一完成,10分钟后,发布任务就很快完成了。
过程监视器
使用进程监视器,我监视了clr.dll!StrongNAmeSignatureVerification的TID,并且我得到了许多冗余事件。在超过5分钟的时间里,任务试图访问我计算机上没有的文件。他正在搜索**Microsoft.Build.Task.resources.dll
。这就像发布任务一次又一次地尝试不存在的东西。供您参考,我使用的是Windows 7法语版和Visual Studio 2010英语版**。在屏幕截图上,您可以看到2000多个相同事件中的10个事件!
有关我的设置的详细信息
以下是一些有助于确定问题的信息:
- 我的应用程序是用MVC 3构建的
- 我有一些第三方的动态链接库。有些是签名的。
- 我正在使用文件系统方法发布。
- 我试图在我的本地计算机上发布,问题也存在,所以它不是我的计算机和服务器之间的网络问题。
- 我已在Windows 7 x86和x64法语版上进行了测试
- 我的Visual Studio 2010 SP1是英语版
更新日期:2011年9月23日
我现在知道如何解决此问题但是我不知道是什么原因导致的。如果我删除.suo**文件(与.sln文件处于同一级别)并重新打开Visual Studio,发布将非常快。因此,每次发布变慢时,重新初始化.suo文件似乎都能解决此问题。
为了进行另一个测试,我在发布速度慢时备份了.suo文件并将其删除。现在发布速度快了。如果我将.suo文件复制回他的位置并重新打开Visual Studio,发布速度将再次变慢。因此,所有内容似乎都指向该文件。
有什么想法吗?
4条答案
按热度按时间bybem2ql1#
试试这边
为了在开发或生产服务器上部署该版本,请按照以下步骤操作。
1.安装Web部署MSI。
1.右键单击解决方案资源管理器下的您的项目并添加Web部署项目(这里我没有使用转换为Web应用程序或发布)
1.然后编译这些文件,这将在您的项目目录中创建一个文件夹,该文件夹将包含要在服务器上部署的所需文件。
1.备份您的虚拟目录并从inetpub中删除虚拟目录和文件。
1.转到Inet管理器,在运行中键入inetmgr,然后按Enter键。
1.在默认网站下,创建一个虚拟目录,将部署的文件保存在inetpub中并浏览文件。
1.允许适当的访问,如读取,运行脚本和浏览。
标记它作为您的答案,如果你发现它有用,否则让我知道...
gstyhher2#
我不确定是否是suo文件导致的,但对我来说,this解决了这个问题。
编译后,发布将调用aspnet_compiler,这实际上需要更长的时间,因为它为所有代码生成自定义dll。
但是检查一下你的VSPackages,是否有任何包是为了某种解释而写的,这可能会打断你的发布。
jvlzgdj93#
我刚刚经历了同样的问题发布到一个网络共享,并发现在Windows资源管理器中复制文件也非常慢。当我压缩构建文件夹,并复制它跨越它花了几秒钟。我的结论是,VPN或防病毒或防火墙在一端或另一端增加了一些开销到每个文件传输。
zzzyeukh4#
Windows传输1个巨大的文件比传输数千个微小的文件要快得多,即使网络大小相同。
1.发布到本地文件(而不是直接发布到IIS文件共享)。
1.压缩本地文件(这些文件会压缩得很好)。
1.使用文件资源管理器,删除IIS文件共享文件。
1.将本地压缩文件复制/粘贴到网络共享。
1.使用文件资源管理器解压缩服务器上的文件。(您不必远程连接到服务器来执行此操作)
这完成了几件事。1)它的1个巨大的文件,而不是数千个微小的文件。2)压缩文件将压缩50%到80%,所以通过网络传输的数据将小得多。
如果你需要一个备份,它的过程相反,但没有发布。我通常使用L7.zip,但内置的windows zip将工作。我不知道为什么Visual Studio不能这样做编程。