【问题标题】:Visual Studio Online build fails with missing System.Web.Http dllVisual Studio Online 构建失败,缺少 System.Web.Http dll
【发布时间】:2015-10-09 07:18:54
【问题描述】:

我已经通过 Visual Studio Online 的构建管道成功部署了基于 ASP.Net MVC Azure 的网站已有数周时间。然后我添加了一个 ApiController 类,Visual Studio 安装了一些相关的 NuGet 包。现在,当我签入并开始构建时,由于缺少 System.Web.Http dll,我遇到了失败。

我已尝试重新安装 NuGet 包并将丢失的 dll 标记为“复制本地”。还是不开心。

Build 步骤首先报告警告:

C:\程序文件 (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets (1819, 5) 无法解析此引用。找不到程序集 “System.Web.Http,版本=5.2.3.0,文化=中性, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"。检查到 确保程序集存在于磁盘上。如果需要此参考 根据您的代码,您可能会遇到编译错误。

然后它会报告一些错误并失败:

[解决方案名称][网站名称]\App_Start\WebApiConfig.cs (1, 18) 命名空间中不存在类型或命名空间名称“Http” 'System.Web'(您是否缺少程序集引用?)

我正在使用 Visual Studio 2015 RC 和 .Net 4.6(尽管降级到 v4.5.2 仍然会产生错误)。

现在我必须手动发布这个。请问大家有什么想法吗?

【问题讨论】:

  • 通过更多调查,我现在可以看到 NuGet.exe 恢复命令忽略了 packages.config 中列出的一些包。为什么要这样做?
  • 当您在 Visual Studio 中本地构建时,是 System.Web.Http 的 bin 文件夹中的 .DLL?
  • @ChrisArnold,你在使用 vNext 构建吗?如果是这样,请在下面查看我的回复。

标签: .net asp.net-mvc msbuild azure-devops nuget-package-restore


【解决方案1】:

首先,确保可以在 .proj 文件中找到以下内容:

<Reference Include="System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>
  <Private>True</Private>
</Reference>

其次,选中 Visual Studio 构建步骤中的还原 NuGet 包复选框。 (假设您使用的是 build vNext)

【讨论】:

  • 我卸载然后安装包 Microsoft.AspNet.WebApi.Core 并修复了 csproj 中的提示路径。谢谢
  • 此选项现已弃用,改为使用 NuGet 还原构建任务。
【解决方案2】:

我发现 Visual Studio Online 正在从源代码存储库中寻找 nuget 包引用。我可以通过签入丢失的 dll 来解决这些错误。

例如:

\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    相关资源
    最近更新 更多