我将一个运行3.5 vs2008的WCF项目升级到。net 4.0 vs2010,遇到了一个问题。从vs2010编译时,我的服务实现项目中的程序集被devenv.exe锁定(注意没有调试-只有编译)。该程序集在vs2010重启时释放,每次重启后可以编译一次。我已经尽力了:
- 插入预构建事件以解锁程序集
- 删除程序集版本通配符
- 关闭源步进
- 停止windows搜索
- 停止IIS 退出vs2010,删除sln。bin/obj目录
- 阅读博客和SO帖子3天了:)
- 从服务项目中删除所有引用并阅读
我几乎没有想法了,似乎微软对此没有解释,也没有修复。任何想法将非常感激!
错误信息:
无法复制文件".....some "路径…调试 HelperLibrary.Service.dll"本调试 HelperLibrary.Service.dll"。进程无法访问文件'binDebugHelperLibrary.Service.dll',因为它正在被另一个进程。
附加信息:当使用msbuild从提示符编译时,没有问题。仅当从vs2010编译时。旧的vs2008解决方案当然仍然有效。
Microsoft Ticket: https://connect.microsoft.com/VisualStudio/feedback/details/682485/use-of-testaccessor-and-impl-of-codeaccesssecurityattribute-locks-assembly
这是一个很长的镜头,但是有没有可能你的网页。配置有'shadowCopyBinAssemblies'设置为'false'?或者上游配置文件关闭了该设置?
我想这可能是造成你所看到的问题的原因。
好吧,我的同事度假回来了,说他早些时候碰到了这个问题。程序集被锁定(或由构建过程持有)的根本原因似乎是由于使用testaccessors来测试私有方法,并结合CodeAccessSecurityAttribute的实现。注意,这在Visual studio 2008中不是问题,但只有在2010年才会出现看这里的另一个例子:
http://social.microsoft.com/forums/en/offtopic/thread/41ceebce - 1 - ecf - 4962 - 86 - d0 e68050df4a99
我还没有找到一个解决方案,除了将private方法更改为public -我将创建一个新的帖子来解决这个问题。