无法复制文件Microsoft.SqlServer.Types

时间:2014-09-16 15:49:38

标签: .net visual-studio iis iis-7 visual-studio-2013

安装Microsoft.SqlServer.Types (Spatial) 软件包后,出现构建错误

  • 错误14无法将“myapp \ packages \ Microsoft.SqlServer.Types.11.0.1 \ nativeBinaries \ x86 \ msvcr100.dll”复制到“bin \ SqlServerTypes \ x86 \ msvcr100.dll”。超过重试次数10.失败。
  • 错误26无法将“myapp \ packages \ Microsoft.SqlServer.Types.11.0.1 \ nativeBinaries \ x86 \ SqlServerSpatial110.dll”复制到“bin \ SqlServerTypes \ x86 \ SqlServerSpatial110.dll”。超过重试次数10.失败。
  • 错误15无法将文件“myapp \ Microsoft.SqlServer.Types.11.0.1 \ nativeBinaries \ x86 \ msvcr100.dll”复制到“bin \ SqlServerTypes \ x86 \ msvcr100.dll”。该进程无法访问文件'bin \ SqlServerTypes \ x86 \ msvcr100.dll',因为它正由另一个进程使用。
  • 错误27无法将文件“myapp \ packages \ Microsoft.SqlServer.Types.11.0.1 \ nativeBinaries \ x86 \ SqlServerSpatial110.dll”复制到“bin \ SqlServerTypes \ x86 \ SqlServerSpatial110.dll”。该进程无法访问文件'bin \ SqlServerTypes \ x86 \ SqlServerSpatial110.dll',因为它正由另一个进程使用。

调查后我发现我的iis工作进程阻止了这些文件。重新启动iis后,应用程序构建成功,但出现错误。

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:6)

我找到了一个天生的解决方案。

我只是在编译开始之前停止IIS,然后在编译后再次启动IIS。

在您的项目中,转到“属性”>建立活动:

  • 预构建事件命令行:iisreset / STOP

  • 构建后事件命令行:iisreset / START

答案 1 :(得分:2)

看起来当您卸载NuGet包时,csproj中的引用不会被删除。另外,我在与Git相关的文件中找到了一些名为ms-persist.xml的dll的引用 - 但这可能不是问题所在。因此,删除所有这些后,构建工作。

答案 2 :(得分:0)

我遇到了这个问题,刚刚遇到了一个不错的解决方案。在我的情况下,每当我开始在VS 2013中调试时,我有两个项目正在启动并在IIS Express中运行,即使我在解决方案资源管理器中只选择了一个启动项目。我注意到每次我停止调试时,IIS Express中只有一个应用程序会终止,而另一个应用程序会继续运行。随后的清理/构建将显示您未终止的​​应用程序遇到的错误。事实证明,你可以在VS中选择多个启动项目,这将告诉IIS Express在开始调试时启动它们(在我的情况下奇怪地已经发生了,即使我只选择了一个启动项目)并且还会告诉IIS在停止调试时表达以终止两个应用程序。当IIS Express中的所有应用程序都终止时,我能够成功清理/构建而不会出现此错误。有关如何设置多个启动项目的说明,请访问:http://msdn.microsoft.com/en-us/library/ms165413.aspx

答案 3 :(得分:0)

你可以回收&作为部署过程的一部分,重新​​启动锁定上述文件的应用程序池。回收应用程序池解锁文件,您可以覆盖它们。

对于本地部署,您可以指定预构建事件(DefaultAppPool是应用程序池的名称):

c:\Windows\system32\inetsrv\appcmd.exe recycle apppool "DefaultAppPool"

对于自动部署(例如,从构建服务器),您可以告诉msdeploy重新启动应用程序池作为部署过程的一部分:

msdeploy.exe -verb:sync -source:recycleApp="Default Web Site/myapp" -dest:auto

有关详细信息,请参阅Web Deploy recycleApp provider documentation

答案 4 :(得分:0)

所以我遇到了同样的问题,并找到了一个非常简单的修复程序。

首先删除对Microsoft.SqlServer.Types的引用,或卸载nuget包。重新安装软件包并保存。