1

我已将运行 3.5 vs2008 的 WCF 项目升级到 .net 4.0 vs2010 并遇到问题。从 vs2010 编译时,我的服务实现项目中的程序集被 devenv.exe 锁定(注意没有调试 - 只编译)。程序集在vs2010重启时释放,每次重启后都可以编译一次。我已经尝试过:

  1. 插入 PreBuild 事件以解锁程序集
  2. 删除了程序集版本通配符
  3. 禁用源步进
  4. 停止 Windows 搜索
  5. 停止 IIS
  6. 退出 vs2010,删除 sln.suo 和 bin/obj 文件夹
  7. 现在阅读博客和 SO 帖子 3 天 :)
  8. 从服务项目中删除所有引用并重新添加它们

我几乎没有想法,似乎微软对此没有任何解释,无法修复。任何想法将不胜感激!

错误信息:

无法将文件“.....some path...\Debug\HelperLibrary.Service.dll”复制到“bin\Debug\HelperLibrary.Service.dll”。该进程无法访问文件“bin\Debug\HelperLibrary.Service.dll”,因为它正被另一个进程使用。

额外信息: 使用 msbuild 从提示编译时,没有问题。仅在从 vs2010 编译时。旧的 vs2008 解决方案当然仍然有效。

微软票证: https ://connect.microsoft.com/VisualStudio/feedback/details/682485/use-of-testaccessor-and-impl-of-codeaccesssecurityattribute-locks-assembly

4

2 回答 2

0

这是一个很长的镜头,但是您的 web.config 是否有可能将“ shadowCopyBinAssemblies ”设置为“false”?或者上游配置文件已关闭该设置?

我认为这可能会导致您看到的问题。

于 2011-07-29T10:01:48.377 回答
0

好的,所以我的同事从假期回来并说他早些时候遇到了这个问题 :) 似乎程序集被锁定(或被构建过程持有)的根本原因是由于使用 testaccessors 来测试私有方法,结合 CodeAccessSecurityAttribute 的实现。请注意,这在 Visual Studio 2008 中不是问题,但仅在 2010 中可以在此处查看另一个案例:

http://social.microsoft.com/Forums/en/Offtopic/thread/41ceebce-1ecf-4962-86d0-e68050df4a99

除了将私有方法更改为公共方法之外,我还没有找到解决方案 - 我将为这个问题创建一个新帖子。

于 2011-08-01T06:39:38.987 回答