视觉工作室& ASP.Net:在构建后事件中共享违规

时间:2015-11-02 11:10:20

标签: asp.net visual-studio

我的解决方案中有一个主要的ASP.Net MVC项目和其他插件项目。 构建一个插件项目时,他们的文件(dll,views ......)会在一个构建后的事件中复制到主要的asp.net项目中。

  

xcopy“$(TargetDir)WebPortal.Plugin.MyPlugin.dll”“$(SolutionDir)WebPortal \ Plugins \ MyPlugin \”/ Y   xcopy / E / Y“$(ProjectDir)Views”“$(SolutionDir)WebPortal \ Plugins \ MyPlugin \ Views \”

我的问题是插件DLL的副本。我第二次构建时出现“共享冲突”错误。

我找到的唯一解决方案是在构建插件时手动停止IIS服务器,以便从IIS进程中释放DLL。

我需要提示自动执行,因为它非常繁琐!

1 个答案:

答案 0 :(得分:0)

您可以像这样在构建后事件中自动停止和启动万维网服务:

net stop w3svc

xcopy "$(TargetDir)WebPortal.Plugin.MyPlugin.dll" "$(SolutionDir)WebPortal\Plugins\MyPlugin\" /Y 
xcopy /E /Y "$(ProjectDir)Views" "$(SolutionDir)WebPortal\Plugins\MyPlugin\Views\"

net start w3svc

如果您仍然面临共享冲突错误,那么您可以在停止 IIS 服务后在上面的脚本中休眠几秒钟。您需要在计算机上安装 PowerShell 才能使其正常工作:

net stop w3svc

powershell -command "Start-Sleep -s 5"

xcopy "$(TargetDir)WebPortal.Plugin.MyPlugin.dll" "$(SolutionDir)WebPortal\Plugins\MyPlugin\" /Y 
xcopy /E /Y "$(ProjectDir)Views" "$(SolutionDir)WebPortal\Plugins\MyPlugin\Views\"
    
net start w3svc

如果您的 PC 上没有 powershell,请尝试 ping 命令,该命令对于引入睡眠来说有点笨拙,但会起作用:

net stop w3svc

ping -n 6 127.0.0.1 > nul

xcopy "$(TargetDir)WebPortal.Plugin.MyPlugin.dll" "$(SolutionDir)WebPortal\Plugins\MyPlugin\" /Y 
xcopy /E /Y "$(ProjectDir)Views" "$(SolutionDir)WebPortal\Plugins\MyPlugin\Views\"
    
net start w3svc

我希望上述解决方案之一对您有用。