【问题标题】:Azure automatic build failedAzure 自动生成失败
【发布时间】:2013-06-09 15:19:45
【问题描述】:

我最近在 visualstudio.com 上创建了项目,并在 azure 上启用了持续构建。我创建了 web api 项目,并创建了一些模型和 api 控制器。然后我在网上部署了它,它很酷很长一段时间。然后我通过 NuGet 更新了所有依赖项。构建在本地运行良好,并且应用程序也可以在我的本地计算机上运行。然后我签入到 tfs,并启动了自动部署,但出现了构建错误。 它说:

C:\a\src\HitchStopApi\packages\Microsoft.Bcl.Build.1.0.6\tools\Microsoft.Bcl.Build.targets (74): The "EnsureBindingRedirects" task could not be loaded from the assembly C:\a\src\HitchStopApi\packages\Microsoft.Bcl.Build.1.0.6\tools\Microsoft.Bcl.Build.Tasks.dll. Could not load file or assembly 'file:///C:\a\src\HitchStopApi\packages\Microsoft.Bcl.Build.1.0.6\tools\Microsoft.Bcl.Build.Tasks.dll' or one of its dependencies. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

在我的本地机器构建中,我收到了 Tests 项目的警告

D:\Programming\Projects\HitchStop\HitchStopApi\packages\Microsoft.Bcl.Build.1.0.6\tools\Microsoft.Bcl.Build.targets(220,5): warning : Project must install nuget package Microsoft.Bcl.

在本地我使用 .NET 4.5、MVC4、Entity framework 5.0...

【问题讨论】:

    标签: c# azure build tfs asp.net-web-api


    【解决方案1】:

    这有点像一个错误,并且记录在几个地方。 Bcl.Build 不是在 TFS 上构建所需的项目,因此您只需告诉 TFS 如果它不存在就不要包含它。为此,请打开您的 .csproj 文件(针对每个引用 Bcl.Build 的项目)并更改以下内容:

    <Import Project="..\packages\Microsoft.Bcl.Build.1.0.6\tools\Microsoft.Bcl.Build.targets" />
    

    添加条件:

    <Import Project="..\packages\Microsoft.Bcl.Build.1.0.6\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.6\tools\Microsoft.Bcl.Build.targets')" />
    

    注意:如果您通过 Nuget 更新 Bcl.Build,它也会更新您的项目文件,并且需要再次执行以下操作。如果您不想在每次更新/有参考时丢失它,请创建第二个副本并将其注释掉。

    相关参考文献(相同问题,不同表现形式):

    http://social.msdn.microsoft.com/Forums/en-US/TFService/thread/7bd2e96b-552a-4897-881c-4b3682ff835e

    https://connect.microsoft.com/VisualStudio/feedback/details/788981/microsoft-bcl-build-targets-causes-project-loading-to-fail

    https://nuget.codeplex.com/workitem/3135

    更新:微软为此写了一篇官方博客。虽然上述方法在某些情况下确实有效,但不能保证。 Microsoft 和 NuGet 团队正在共同开发一个解决方案,但同时提供了 3 个(更好的?)解决方法选项:

    http://blogs.msdn.com/b/dotnet/archive/2013/06/12/nuget-package-restore-issues.aspx

    1. 停止使用包还原并签入所有包文件
    2. 在构建项目之前显式运行包还原
    3. 签入 .targets 文件

    【讨论】:

    • 我这样做了,但构建仍然失败。与OP相同的环境;相同的错误信息。我会继续调查。
    • 我的项目配置为通过构建服务器 (TFS) 上的 Nuget 下载包。如果你真的将你的包提交到源代码管理中,也许会有区别?
    【解决方案2】:

    您的问题描述为here 解决方案: 1.添加虚拟项目(例如NugetHelper),添加package.config with

    <package id="Microsoft.Bcl.Build" version="1.0.6" targetFramework="net45" />
    
    1. 打开菜单 -> 项目 -> ProjectDependencies 并让 NugetHelper 在解决方案中的其他项目之前构建

    2. 替换

    这将在将 Microsoft.Bcl.Build.targets 实际加载到您的主项目之前恢复它

    【讨论】:

    • 啊。我不敢相信我们必须这样做。我在这个解决方案中有 30 个项目。真是一场噩梦。
    猜你喜欢
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    相关资源
    最近更新 更多