System. Net. Http nie może zostać rozwiązany w aktualnie docelowym framework.NET 4, 0

Dostałem paskudny błąd po przeniesieniu rozwiązania z Visual Studio 2010 do 2012. Build jest w porządku i wszystko działa idealnie localhost. Mam jeden nowy projekt MVC4, który wymaga. NET 4.5, więc zainstalowałem framework 4.5 na serwerze build. Kompilacja jest dobra, ale MSBuild nie kopiuje DotNetOpenAuth.Rdzeń.dll z jego lokalizacji pakietu do katalogu Bin. Problem polega na tym, że chociaż dany projekt dotyczy frameworka 4.0, uważam, że MSBuild sprawdza zależność od. NET 4.5 Framework system.Net. Http assembly jako część CoreBuild.

Warning code = "MSB3268" the primary reference \packages \ DotNetOpenAuth.Rdzeń.4.3.0.13117 \ lib \ net40-full \ DotNetOpenAuth.Rdzeń.dll" nie można rozwiązać, ponieważ ma pośrednią zależność od Framework assembly "System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", który nie może być rozwiązany w aktualnie docelowym frameworku. ".NETFramework, Version = v4.0". Aby rozwiązać ten problem, albo Usuń odnośnik "c:\cc\kazork\code\trunk\src\packages\DotNetOpenAuth.Rdzeń.4.3.0.13117 \ lib \ net40-full \ DotNetOpenAuth.Rdzeń.dll "lub retarget aplikacji do wersji framework, który zawiera" System. Net. Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

Oto moja konfiguracja pakietu:

<?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>

Mam referencję System.Net.Http i jest ona kopiowana do kosza. Projekt, o którym mowa, jest ukierunkowany na ramy 4.0. Moja wersja System. Net. Http jest dla 4.0 ramy.

Author: Brian Ogden, 2013-05-26

2 answers

Więc mimo, że kopiowałem System.Net. Http. NET 4.0 przez pakiet Nuget, który jest dodawany po zainstalowaniu pakietów DotNetOpenAuth, MsBuild na moim serwerze kompilacyjnym sprawdzał DotNetOpenAuth.Zależności rdzenia i sprawdzanie przed. NET assemblies zainstalowanych na komputerze, a nie to, co było kopiowane do kosza. W moim przypadku:

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

I nie było montażu System.Net.Http w moim

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

Katalog więc uważam, że MsBuild próbował szukać w nowo zainstalowanym. NET 4.5 / align = "left" / .\ Assemblies \ Microsoft \ Framework.NETFramework\v4. 5 Gdzie jest System.Net.Http.dll i dlatego, zamiast popełnić oczywisty błąd, który System.Net.Http.dll dla.NET 4.0 cele nie istnieją, dostałem ostrzeżenie o DotNetOpenAuth.Rdzeń.zależność dll od System. Net. Http, która można znaleźć, ale nie jest dla frameworka 4.0, jak projekt był kierowany.

Po prostu skopiowałem System. Net. Http. NET 4.0 DLL z pakietu do

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

Na moim serwerze build I MsBuild był w stanie porównać poprawną wersję System.Net.Htpp dla sprawdzenia zależności 4.0.NET framework.

 26
Author: Brian Ogden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-01 17:16:13

Jeśli to się nie powiedzie, może być również konieczne zastosowanie pakietu. net v4. 5. 1 dev pack, ponieważ obsługuje wiele targetowania. Miałem zainstalowane 4.5.1 i zespoły skopiowane i nadal miał ten błąd. Instalacja pakietu dev z http://www.microsoft.com/en-us/download/details.aspx?id=40772 Naprawiono ten problem i teraz buduje się pod server 2012 r2.

 1
Author: ClutchDude,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-18 19:57:41