【问题标题】:TeamCity build fails after adding reference to .NET extensions添加对 .NET 扩展的引用后,TeamCity 构建失败
【发布时间】:2015-05-04 18:20:07
【问题描述】:

我在 VS2012 解决方案中添加了 4 个对项目扩展的引用。项目文件 (.vbproj) 更改为:

    <Reference Include="System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=blahblahblah, processorArchitecture=MSIL" />
<Reference Include="System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=blahblahblah, processorArchitecture=MSIL" />
<Reference Include="System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=blahblahblah, processorArchitecture=MSIL" />
<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=blahblahblah, processorArchitecture=MSIL">

sol'n 在我的本地环境中成功构建。但是,当推送到 TeamCity 时,我会遇到编译/MSBuild 失败。消息说引用的库中的类没有定义。

...error BC30002: Type 'ApiController' is not defined. 
...error BC30002: Type 'HttpResponseException' is not defined. 
...error BC30456: 'MapHttpRoute' is not a member of 'System.Web.Routing.RouteCollection'. 

.sln 文件似乎包含引用所有项目的正确信息,包括修改后的项目,但我似乎遗漏了一些东西。任何人都可以提供建议。谢谢。

【问题讨论】:

    标签: visual-studio-2012 msbuild continuous-integration teamcity


    【解决方案1】:

    我假设 Team City 正在另一台机器上运行?

    https://www.microsoft.com/en-us/download/details.aspx?id=8279

    在 Team City Build Machine 上安装 DotNet 4.0 SDK。

    (关于一个版本的链接....将DotNet与构建机器的O/S匹配)....

    追加:

    我不知道你在使用 NUGET。

    当您设置依赖项时,您在开发人员机器上手动调用了 NUGET。

    您必须设置构建机器才能执行此操作。

    见:

    http://geekswithblogs.net/TarunArora/archive/2014/09/14/auto-restore-nuget-packages-with-tfs-build-the-right-way.aspx

    或许

    http://www.brendanforster.com/doing-the-build-server-dance-with-nuget.html

    此链接应始终存在:

    How do I Enable NuGet Package Restore in Visual Studio 2015

    由于这些链接可能会失效,因此关键短语是:

    启用 NuGet 包还原

    追加:

    这个 nuget 调用:

    Install-Package Microsoft.AspNet.WebApi.Client -Version 4.0.30506
    

    添加了这个参考:

    ..\packages\Microsoft.AspNet.WebApi.Client.4.0.30506.0\lib\net40\System.Net.Http.Formatting.dll

    【讨论】:

    • 谢谢,是的,不同的机器。将对此进行调查。
    • 你在使用 Nuget 吗?您的 dll 可能不存在于构建机器上......因此它们要么通过 SDK 安装......要么 NUGET........或者你自己的家-brewed 获取机器依赖项的方法。 (过去人们会将他们的 dll 存储在源代码控制中)........
    • 我们使用 Nuget,但这些扩展只是通过右键单击项目“参考”->“添加参考...”并在程序集->扩展中检查它们来添加。谢谢。
    • 我在答案中添加了一个 APPEND。
    • 这似乎是最直接的答案....直接从马的嘴里:docs.nuget.org/consume/package-restore/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    相关资源
    最近更新 更多