【问题标题】:Generate Dependency Fragment File task failed生成依赖片段文件任务失败
【发布时间】:2017-01-03 08:11:11
【问题描述】:

我正在测试 .Net Core 1.0。有两种情况:

1) .Net Core 1.0 项目签入 TFS 2013

我根据 VS 提供的模板创建了初始项目。在初始签入到本地 TFS 2013 服务器后,以下构建(在我的机器上,而不是构建机器上)始终无法获得此和类似的 assess to the path is denied

Error   MSB4018 The "GenerateDependencyFragmentFile" task failed unexpectedly.
System.UnauthorizedAccessException: Access to the path 'C:\workspace\Project1\Solution1\Web1\project.fragment.lock.json' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalDelete(String path, Boolean checkHost)
   at System.IO.File.Delete(String path)
   at Microsoft.VisualStudio.ProjectSystem.DotNet.FileSystem.RemoveFile(String referenceFile)
   at Microsoft.DotNet.Tasks.GenerateDependencyFragmentFile.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
C:\workspace\Project1\Solution1\Web1\Web1.xproj 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets  
Line: 349   

2) .Net Core 1.0 项目签入VSTS

我已经尝试过相同的基本项目,即开箱即用的项目,该项目未签入源代码管理并且构建良好。

我还尝试了相同的基本项目,即开箱即用的项目,该项目已签入 Visual Studio Team Service 在线源代码控制 (VSTC),并且构建良好。

还有什么?

我以管理员身份运行 VS。

因此,基于在互联网上发现的类似问题/解决方案,我尝试了以下操作。我检查了 project.json、project.fragment.lock.json 和 project.lock.json。此时项目构建失败:

Error       Failed to make the following project runnable: Web1 (.NETFramework,Version=v4.5.2) reason: 
Access to the path 'C:\workspace\Project1\Solution1\Web1\bin\Debug\net452\win7-x64\Microsoft.ServiceFabric.Internal.Strings.dll' is denied. 
Web1    
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets  
Line: 262   

我也尝试了以下解决方案:

  1. SO-37928200
  2. dotnet-cli#3794,由 安装最新的 dotnet-cli。

有什么建议吗?

更新 1

唯一有用的是检查整个packages 和有问题的项目文件夹。但对我来说,这似乎不是合理的解决方案。

更新 2

我更新了问题中的一些语言,以澄清在我的本地机器上构建失败而不是构建机器,我还没有谈到那部分。

【问题讨论】:

  • >我检查了 project.json、project.fragment.lock.json 和 project.lock.json。 project.fragment.lock.json 和 project.lock.json 在您的项目中还是在还原包期间生成?在构建过程中如何恢复包?如果您在该构建代理机器上通过 dotnet restore 命令手动恢复包,结果如何?
  • project.fragment.lock.json 和 project.lock.json 是项目的一部分,并已签入源代码管理。这是在我的机器上,而不是构建代理机器。
  • 我无法重现该问题。如果不将 project.lock json、project.fragment.lock.json 和整个包检查到源代码管理中,会出现什么结果。 stackoverflow.com/questions/38448468/… , blog.falafel.com/what-is-project-lock-json
  • @starain 这就是我最终要做的,使用 .tfignore 排除 lock.json 文件。

标签: azure-devops azure-service-fabric asp.net-core-1.0


【解决方案1】:

因此,经过大量研究(以及反复试验),我最终将 .tfignore 文件添加到根文件夹中,以便从整个解决方案中排除 *.lock.json 文件。

.tfignore 内容:

######################################
# exclude all lock.json files
*.lock.json

此外,我已经删除了 app.config 文件,并在 project.json 中添加了适当的等效文件(见下文)。

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

【讨论】:

    【解决方案2】:

    您需要按照此处的步骤:Build ASP.NET Core 1.0 with TFS 2013.4 Build Server 在 TFS 2013 上构建 Asp.Net Core 项目。

    【讨论】:

    • 这在某些时候会派上用场,但此时构建在我的机器上仍然失败。在问题中,我提到 TFS 2013 作为源代码控制而不是构建代理机器。
    猜你喜欢
    • 2016-04-22
    • 2013-02-15
    • 2019-12-13
    • 1970-01-01
    • 2017-07-31
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多