簡體   English   中英

如何阻止asp.net阻止訪問文件然后在構建時拋出訪問被拒絕的錯誤?

[英]How can I stop asp.net from blocking access to files then throwing access denied errors on build?

我反復按照以下方式獲得構建錯誤:

無法使以下項目可運行:< 項目名稱 >(。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開發人員。

當文件<project name>.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內容(我刪除了一個):

<configuration>
   <runtime>
      <gcServer enabled="true"/>
   </runtime>
</configuration>

將此添加到project.json:

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

我還從github安裝了最新的dotnet / cli ,它修復了包含相同問題的包文件夾DLL。 我使用.NET Core SDK安裝程序dotnet --version現在顯示1.0.0-preview3-003585

請記住 ,在進行更改之后以及運行下一次構建之前,請手動刪除\\bin文件夾。 清潔任務不會刪除所有文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM