Система.Сеть.Http не удалось разрешить в текущем целевом framework.NET 4.0

получил неприятную ошибку после перемещения решения из Visual Studio 2010 в 2012. Сборка в порядке, и все работает идеально localhost. У меня есть один новый проект MVC4, который требует .NET 4.5, поэтому я установил 4.5 framework на сервере сборки. Сборка хорошая, но MSBuild не удается скопировать DotNetOpenAuth.Ядро.dll из своего местоположения пакета в bin dir. Проблема в том, что, хотя конкретный проект нацелен на платформу 4.0, я считаю, что MSBuild проверяет зависимость от .NET 4.5 рамочная система.Сеть.Http-сборка как часть CoreBuild.

код предупреждения= "MSB3268" основная ссылка пакетыDotNetOpenAuth.Ядро.4.3.0.13117libnet40-полныйDotNetOpenAuth.Ядро.dll "не удалось решить, поскольку она имеет косвенную зависимость от системы сборки framework".Сеть.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" , который не может быть разрешен в текущей целевой структуре. ".NETFramework, версия=v4.0". Для решения этой проблема, либо удалите ссылку "c:cckazorkcodetrunksrcpackagesDotNetOpenAuth - ... Ядро.4.3.0.13117libnet40-полныйDotNetOpenAuth.Ядро.dll "или перенастроить приложение на версию фреймворка, которая содержит" System.Сеть.Http, версия=2.0.0.0, культура=нейтральная, PublicKeyToken=b03f5f7f11d50a3a

вот моя конфигурация пакета:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="ChardinJs" version="1.0.3" targetFramework="net40" />
  <package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net40" />
  <package id="DotNetOpenAuth.AspNet" version="4.3.0.13117" targetFramework="net40" />
  <package id="DotNetOpenAuth.Core" version="4.3.0.13117" targetFramework="net40" />
  <package id="DotNetOpenAuth.OAuth.Consumer" version="4.3.0.13117" targetFramework="net40" />
  <package id="DotNetOpenAuth.OAuth.Core" version="4.3.0.13117" targetFramework="net40" />
  <package id="DotNetOpenAuth.OpenId.Core" version="4.3.0.13117" targetFramework="net40" />
  <package id="DotNetOpenAuth.OpenId.RelyingParty" version="4.3.0.13117" targetFramework="net40" />
  <package id="EntityFramework" version="5.0.0" targetFramework="net40" />
  <package id="flexigrid" version="1.1.0" targetFramework="net40" />
  <package id="jQuery" version="1.9.1" targetFramework="net40" />
  <package id="Microsoft.AspNet.FriendlyUrls.Core" version="1.0.0" targetFramework="net40" />
  <package id="Microsoft.AspNet.Membership.OpenAuth" version="1.0.1" targetFramework="net40" />
  <package id="Microsoft.AspNet.SignalR.Core" version="1.1.1" targetFramework="net40" />
  <package id="Microsoft.AspNet.SignalR.JS" version="1.1.1" targetFramework="net40" />
  <package id="Microsoft.AspNet.SignalR.Owin" version="1.1.1" targetFramework="net40" />
  <package id="Microsoft.AspNet.SignalR.SystemWeb" version="1.1.1" targetFramework="net40" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net40" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="1.0.1" targetFramework="net40" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
  <package id="Newtonsoft.Json" version="5.0.5" targetFramework="net40" />
  <package id="Owin" version="1.0" targetFramework="net40" />
  <package id="PayPalCoreSDK" version="1.1.1" targetFramework="net40" />
  <package id="PayPalMerchantSDK" version="2.3.98" targetFramework="net40" />
  <package id="Select2.js" version="3.3.2" targetFramework="net40" />
  <package id="toastr" version="1.2.2" targetFramework="net40" />
  <package id="Twitter.Bootstrap" version="2.3.2" targetFramework="net40" />
  <package id="WebGrease" version="1.3.0" targetFramework="net40" />
</packages>

У меня есть система.Сеть.Http ссылается и копируется в корзину. Данный проект ориентирован на платформу 4.0. Моя версия Система.Сеть.Http предназначен для платформы 4.0.

2 ответов


Так, хотя я копировал систему.Сеть.Http .NET 4.0 через пакет Nuget, который добавляется при установке пакетов DotNetOpenAuth, MsBuild на моем сервере сборки проверял DotNetOpenAuth.Основная зависимость и проверка сборок .NET, установленных на машине, а не то, что копировалось в корзину. В моем случае:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0

и не было никакой системы.Сеть.Http-сборка в my

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0

каталог, поэтому я считаю, что MsBuild попытался посмотреть в новом установленные сборки .NET 4.5 на моей машине..\Сборки\Microsoft\Framework.NETFramework\v4.5 где есть System.Net.Http.dll и именно поэтому, вместо того, чтобы получить прямую ошибку, которая System.Net.Http.dll для целей .NET 4.0 не существует, я получил предупреждение о DotNetOpenAuth.Ядро.зависимость dll от системы.Сеть.Http, который можно найти, но не для платформы 4.0, поскольку проект был нацелен.

Я просто скопировал систему.Сеть.HTTP .NET 4.0 DLL из пакета в

C:\Program файлы (x86)\справочник Сборки\Microsoft\Framework\.NETFramework\v4.0

на моем сервере сборки и MsBuild смогли сравнить с правильной версией системы.Сеть.Проверка зависимостей Htpp для 4.0 .NET framework.


Если это не удается, вам также может потребоваться применить .Net v4.5.1 dev pack как это поддерживает несколько определений. У меня был установлен 4.5.1 и скопированы сборки и все еще была эта ошибка. Установка пакета dev из http://www.microsoft.com/en-us/download/details.aspx?id=40772 исправлена эта проблема и теперь строится под server 2012 r2.