Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio 2013.2 can';无法生成,因为IIS正在锁定程序集_C#_Asp.net_Visual Studio_Iis_Visual Studio 2013 - Fatal编程技术网

C# Visual Studio 2013.2 can';无法生成,因为IIS正在锁定程序集

C# Visual Studio 2013.2 can';无法生成,因为IIS正在锁定程序集,c#,asp.net,visual-studio,iis,visual-studio-2013,C#,Asp.net,Visual Studio,Iis,Visual Studio 2013,我的ASP.NET MVC 5应用程序正在使用我的本地IIS(Windows 7),在我不得不开始使用Microsoft.SqlServer.Types NuGet软件包之前,它工作得非常好。由于包具有本机程序集,因此必须在运行时加载这些程序集 但是,我遇到的问题是,在我重建应用程序并通过浏览器访问它之后,IIS将加载并锁定本机程序集。如果我进行更改并再次重建,VisualStudio将失败,并表示程序集已被另一个进程IIS锁定。我发现唯一的解决办法是在构建之前不断重新启动IIS,这是不现实的,

我的ASP.NET MVC 5应用程序正在使用我的本地IIS(Windows 7),在我不得不开始使用Microsoft.SqlServer.Types NuGet软件包之前,它工作得非常好。由于包具有本机程序集,因此必须在运行时加载这些程序集

但是,我遇到的问题是,在我重建应用程序并通过浏览器访问它之后,IIS将加载并锁定本机程序集。如果我进行更改并再次重建,VisualStudio将失败,并表示程序集已被另一个进程IIS锁定。我发现唯一的解决办法是在构建之前不断重新启动IIS,这是不现实的,因为根据我所做的更改数量,我可能一天要重建数百或数千次

有更合适的工作吗?比如告诉VisualStudio不要为本机程序集而烦恼?我们将不胜感激

下面是我加载程序集的方式:

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(X.Mvc.App_Start.SqlServerTypesConfiguration), "LoadAssemblies")]

namespace X.Mvc.App_Start {
    public static class SqlServerTypesConfiguration {
        public static void LoadAssemblies() {
            SqlServerTypes.Utilities.LoadNativeAssemblies(System.Web.Hosting.HostingEnvironment.MapPath("~/bin"));
        }
    }
}

根据评论-我的建议是在解决方案的预构建配置步骤下放置一个
iis\u reset
命令:


不必重新启动整个IIS,只需重新启动特定的应用程序池即可。我正在生成后事件中使用以下脚本

%SYSTEMROOT%\System32\inetsrv\appcmd stop apppool /apppool.name:"YOUR_APPPLICATION_POOL_NAME"
xcopy   "$(OutDir)*"  "C:\inetpub\wwwroot\myapp\" /Y /S
%SYSTEMROOT%\System32\inetsrv\appcmd start apppool /apppool.name:"YOUR_APPPLICATION_POOL_NAME"

在预构建配置中放置一个
iis\u reset
命令。尽管整个情况很糟糕。。无论你做什么,你的调试能力都会停止-重置IIS/应用程序池会导致调试会话的初始加载时间急剧上升。这正是我所需要的,谢谢!我将不得不忍受IIS不断地重新加载,但这很好,因为在我之前每次重建都是这样做的,这是一天中的很多次。发布一个答案,这样我就可以给你评分了。作为答案添加:)是的,我在预构建中添加了
iisreset/stop
,在后构建中添加了
iisreset/start
。我建议只在预构建事件中回收你的应用程序池,使用以下命令:
appcmd recycle-apppool/apppool.name:MyApplicationPool