我在Visual Studio中有一个由5个项目组成的解决方案。项目构建到程序集(.dll)。我将每个项目的输出路径设置为\ my-web-server \ wwwroot \ bin,这在一个项目上工作正常。在我的所有项目的属性中,我将输出路径设置为同一目录,但是当我尝试构建除一个项目之外的所有项目时,我收到错误:
无法将文件“obj \ Release \ Index.dll”复制到“\ my-web-server \ wwwroot \ bin \ Index.dll”。访问路径'\ my-web-server \ wwwroot \ bin \ Index.dll'被拒绝。
我认为这可能是权限问题,因为我的组织会将事情锁定,但我无法控制授予权限。非常感谢任何正确方向的帮助。
答案 0 :(得分:17)
一定是傻事。我手动删除了.dll,然后重建了。看起来一切正常。感谢。
答案 1 :(得分:3)
我的解决方案是删除每个项目中bin和obj文件夹中的所有内容。刚刚按照here所述运行了这个powershell脚本。
答案 2 :(得分:3)
我有同样的问题。 Visual Studio(devenv.exe)的副本仍然在后台运行,保持特定的dll锁定。
答案 3 :(得分:3)
从bin文件夹中删除所有DLL并构建解决方案。
答案 4 :(得分:2)
刚刚遇到同样的问题,建立了一个新的项目/解决方案,让它全部工作,然后添加到TFS。
不幸的是,我没有在添加之前清理构建,这意味着一些不应该受源代码控制的文件是,然后只读(未签出)。 在重建之前手动删除文件修复了问题。
答案 5 :(得分:0)
很可能一个程序正在使用该库运行。
在运行某些东西进行调试时会发生这种情况,我忘了关闭它(没有连接到IDE调试器)。
由于这看起来像一个网站,可能是因为网站是从开发构建文件夹托管的,有人正在访问它。
答案 6 :(得分:0)
与Aequitarum said类似,它很可能是一个锁定的文件,因为它正在使用中。由于您有多个项目,因此您很可能在它们之间有引用。并且,由于您将所有项目输出到同一文件夹,因此如果您将这些文件设置为在子项目中进行部署,则任何引用的项目很可能会被多次复制。 (在C#Web应用程序中,您可以查看引用的属性并查看“复制本地”属性。)如果您将MsBuild项目设置为使用多个处理器进行构建,则两个子项目都试图复制该文件大约在同一时间,一个错误。
这是一个非常独特的情况,但它是可能的。
答案 7 :(得分:0)
工作解决方案
只需转到任务管理器并搜索详细信息(如果是Win10)并使用您的应用程序名称进行搜索(为了便于搜索,只需查看您的Windows用户ID)
右键单击显示属性。只需提供管理员访问权限即可。
这对我来说都很好。 (我挣扎了一个星期而且我的时间更多了)
答案 8 :(得分:0)
看起来WSearch Service会锁定文件并且不会释放它们。我在WINDOWS 10上禁用了该服务,并且能够重建该解决方案。