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

标签 c# asp.net tfs angular asp.net-core

我反复遇到如下构建错误:

Failed to make the following project runnable: <project name>(.NETFramework,Version=v4.6.1) reason: Access to the path 'C:\<path from root>\src\<project name>\bin\Debug\net641\win7-64x\<some dll, exe, config, whatever>' is denied.

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

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

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

这可能与我使用的 asp.net Core RC2 有关,它还不是官方的,而且我将它与 Angular 2 RC1 但我认为这不相关。

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

我在 Stack Overflow 上看到过许多类似的问题,但没有任何答案能够解决我自己重复出现的问题。

提示:我对转译的 .ts > .js 文件也有同样的看法,将它们从源代码管理中移除似乎有所帮助,但我根本没有在源代码管理中看到 bin 文件夹(当然它隐藏在解决方案资源管理器,我看不到在源代码管理资源管理器中取消隐藏的选项,所以不确定它是否存在......)

最佳答案

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

解决方案一般是颠覆TFS,这很笨拙,应该没有必要。这是我做过的一些事情...

  • 使用 .tfignore(类似于 .gitignore)来防止某些文件(例如转译的 .ts => .js)被 checkin 。如果不采取奇怪的步骤,这是行不通的 like installing this...
  • 简单地检查并锁定任何文件仍然给我带来麻烦(请参阅我对其他问题的回答 here)
  • 几乎任何其他策略都可以防止 TFS checkin 它不应该 checkin 的文件(有时就像将它们留在“排除的更改”列表中一样糟糕,直到其他人需要访问,此时我必须将它们全部删除和/或撤消所有更改)

总而言之,我真的希望在正式发布 .net Core 时,Microsoft 能够解决我遇到的大部分或所有可怕的错误。在这一点上,我非常想成为一名 node.js 开发人员。

关于c# - 如何阻止 asp.net 阻止对文件的访问然后在构建时抛出拒绝访问错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37928200/

相关文章:

tfs - 是否可以在构建步骤中获得 TFS 构建代理用户能力的值?

c# - Console.Write 在由 .NET GUI 应用程序的 BackgroundWorker 执行时不起作用

c# - 依赖注入(inject)与集合

asp.net - 当 Azure Web 角色发生 503 时,如何以编程方式重新启动应用程序池

c# - 用于 .net 部署到 Azure 应用服务的 Web.config

c# - 将中继器包装在更新面板中后页面仍然刷新

c# - 如何控制 numericUpDown 显示 1 而不是 1,0,同时保持 0,5 精度?

c# - 如何组织集中日志记录?

visual-studio - BuildID 宏在 TFS 构建中是如何递增的,我怎样才能让它像++ 一样?

TFS 2015 "Capacity"选项卡丢失