繁体   English   中英

Visual Studio 2008锁定dll文件

[英]Visual Studio 2008 locks dll files

假设我们有两个项目A和B。项目B的输出是C:\\ Proj_B中的dll。 csproj文件中的项目A使用项目B程序集中的任务:

<UsingTask TaskName="Task_B" AssemplyFile="C:\Proj_B\B.dll" />

现在,在编译项目A之后,VS2008会锁定“ C:\\ Proj_B \\ B.dll”文件,直到VS2008关闭为止,因此我不会编译项目B,因为文件已锁定。 有什么办法解决吗?

PS:ProcessExplorer发现的更衣室进程devenv.exe

PS2:通过MSBUILD编译很好,VS编译会导致此问题

从某种意义上讲,Visual Studio用于构建的程序集将被锁定。 通常,您会将这些类型的程序集分离到它们自己的解决方案文件中。 然后分别构建这些文件,然后仅引用构建的dll。 因此,在您的示例中,Project A和Project B将不在同一解决方案中。

或者更好的是,将您的任务包装在nuget包中。

然后,您不需要每次都构建任务集,从而打破了依赖性。 刚开始时,此技术可能很尴尬,因为您通常会更改ProjectB。 但是,构建任务往往会很快解决,并且通常不像消耗它们的代码那样编辑。

看起来是正常现象。

VS将dll加载到自己的AppDomain中,因此它们只有在关闭VS后才能释放。

奇怪,但是真实

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM