如何阻止asp.net阻止对文件的访问,然后在构建时抛出访问被拒绝的错误?

我反复按照以下方式获取构建错误:

无法使以下项目运行:< 项目名称 >(。NETFramework,Version = v4.6.1)原因:访问路径’C:\ < 从根路径 > \ src \ < 项目名称 > \ bin \ Debug \ net641 \ win7-64x \ < some dll,exe,config,whatever >’被拒绝。

我从其他文件夹中得到了类似的错误,但是将它们从源代码控制中删除有帮助(见下文)

有时手动转到资源管理器中的文件夹>右键单击>属性>取消选中“只读”适用于成功构建但是VS或TFS再次锁定文件并返回相同的构建错误

特别是目前有两个.dll文件被添加到bin中,它们被重复设置为“只读”,我必须在重建时手动修复文件浏览器中的文件。 AFAIK这些不在源代码管理中,但是解决方案中同名的另一个项目中的文件已签入并且不会更改。

它可能与我正在使用的asp.net Core RC2这个事实有关,而且我还没有将它与Angular 2 RC1配对,但我不认为这是相关的。

一种理论认为它与TFS有关,因为在我将项目置于源代码控制之前,错误似乎没有开始。

我在Stack Overflow上看过很多类似的问题但是没有答案甚至开始解决我自己的重复问题。

提示:我对转换后的.ts> .js文件进行了相同的处理并将它们从源代码控制中取出似乎有所帮助,但我根本没有看到源代码控制中的bin文件夹(当然它隐藏在解决方案资源管理器中我看不到在源代码管理资源管理器中取消隐藏的选项,所以不确定它是否在那里……)

问题似乎是TFS与.net Core集成,或者无论如何都与TFS集成。

解决方案通常是颠覆TFS,这是不实用的,不应该是必要的。 以下是我做过的一些事情……

  • 使用.tfignore(类似于.gitignore)来防止某些文件(例如transiled .ts => .js)被签入。如果不采取像安装这样的奇怪步骤,这是行不通的…
  • 只需检查并锁定任何仍然给我带来麻烦的文件(请参阅我在这里回答我的其他问题)
  • 几乎任何其他策略都是为了防止TFS检查它不应该检查的文件(有时候只是将它们留在“排除的更改”列表中,直到其他人需要访问权限为止,此时我必须全部删除它们和/或撤消所有更改)

总而言之,我真的希望微软能够获得我遇到的大部分或者所有可怕的错误.net核心正式发布。 在这一点上,我非常想成为node.js开发人员。

当文件.exe.config导致问题时,我找到了解决此问题的方法。 由于该文件基本上是app.config的副本,我尝试检出app.config ,问题就消失了。

我死在水里,因为我无法编译项目。 我希望这可以帮助处于同样困境的人。

我在脚本部分添加了一个后编译:

 "postcompile": [ "cmd /c echo Removing read-only attributes in %project:Directory%\\bin\\ && cmd /c attrib -r %project:Directory%\\bin\\* /s", "cmd /c echo Removing read-only attributes in %project:Directory%\\..\\packages\\ && cmd /c attrib -r %project:Directory%\\..\\packages\\* /s" ] 

适合我

看来这个问题正在跟踪中,你可以在链接上监控它:

https://github.com/dotnet/cli/issues/3419

我最终删除app.config,并将其内容移动到project.json。

App.config内容(我删除了一个):

      

将此添加到project.json:

 "runtimeOptions": { "configProperties": { "System.GC.Server": true } }, 

我还从github安装了最新的dotnet / cli ,它具有相同问题的包文件夹DLL的修复程序。 我使用.NET Core SDK安装程序dotnet --version现在显示1.0.0-preview3-003585

请记住 ,在进行更改之后以及运行下一次构建之前,请手动删除\bin文件夹。 清理任务不会删除所有文件。