asp.net 由于存在.suo文件,发布Web应用程序可能需要很长时间才能完成

mbyulnm0  于 2023-02-06  发布在  .NET
关注(0)|答案(4)|浏览(132)

我有一个通过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,发布速度将再次变慢。因此,所有内容似乎都指向该文件。
有什么想法吗?

bybem2ql

bybem2ql1#

试试这边
为了在开发或生产服务器上部署该版本,请按照以下步骤操作。
1.安装Web部署MSI。
1.右键单击解决方案资源管理器下的您的项目并添加Web部署项目(这里我没有使用转换为Web应用程序或发布)
1.然后编译这些文件,这将在您的项目目录中创建一个文件夹,该文件夹将包含要在服务器上部署的所需文件。
1.备份您的虚拟目录并从inetpub中删除虚拟目录和文件。
1.转到Inet管理器,在运行中键入inetmgr,然后按Enter键。
1.在默认网站下,创建一个虚拟目录,将部署的文件保存在inetpub中并浏览文件。
1.允许适当的访问,如读取,运行脚本和浏览。
标记它作为您的答案,如果你发现它有用,否则让我知道...

gstyhher

gstyhher2#

我不确定是否是suo文件导致的,但对我来说,this解决了这个问题。
编译后,发布将调用aspnet_compiler,这实际上需要更长的时间,因为它为所有代码生成自定义dll。
但是检查一下你的VSPackages,是否有任何包是为了某种解释而写的,这可能会打断你的发布。

jvlzgdj9

jvlzgdj93#

我刚刚经历了同样的问题发布到一个网络共享,并发现在Windows资源管理器中复制文件也非常慢。当我压缩构建文件夹,并复制它跨越它花了几秒钟。我的结论是,VPN或防病毒或防火墙在一端或另一端增加了一些开销到每个文件传输。

zzzyeukh

zzzyeukh4#

Windows传输1个巨大的文件比传输数千个微小的文件要快得多,即使网络大小相同。
1.发布到本地文件(而不是直接发布到IIS文件共享)。
1.压缩本地文件(这些文件会压缩得很好)。
1.使用文件资源管理器,删除IIS文件共享文件。
1.将本地压缩文件复制/粘贴到网络共享。
1.使用文件资源管理器解压缩服务器上的文件。(您不必远程连接到服务器来执行此操作)
这完成了几件事。1)它的1个巨大的文件,而不是数千个微小的文件。2)压缩文件将压缩50%到80%,所以通过网络传输的数据将小得多。
如果你需要一个备份,它的过程相反,但没有发布。我通常使用L7.zip,但内置的windows zip将工作。我不知道为什么Visual Studio不能这样做编程。

相关问题