Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

System.Net.Http in verschiedenen Projekten werden nicht gefunden
schuppsl
myCSharp.de - Member



Dabei seit:
Beiträge: 786

Themenstarter:

System.Net.Http in verschiedenen Projekten werden nicht gefunden

beantworten | zitieren | melden

Hallo zusammen,

im Moment stecke ich in einer DLL Hell und weiß nicht wie ich da heraus komme.

Also ich habe mehrere Projekte, die aufeinander aufbauen:

Projekt.DomainModel
Projekt.Provider
Projekt.BusinesLayer (Projekt.BLL)

Alle drei Projekte bedarf die DLL des Vorgängers und wird per Reference eingebunden.
Also jeweils im Projekt=> Verweise.

Alle Projekte haben als Zielframework .NET 4.7, Plattformziel:Any und sind Klassenbibliotheken.

Am Ende wird die Projekt.BLL in eine weitere ASP.NET MVC5 Anwendung eingebunden.
Ebenfalls .NET 4.7, AnyCPU.

In der Webanwendung erstelle ich eine Klasse vom Typ Projekt.Provider.
An der Stelle kommt die Fehlermeldung, dass
Fehler
System.Net.Http 4.2.0.0 nicht gefunden werden kann
.


Hier habe ich mal aufgelistet, welches Projekt auf welche System.Net.Http referenziert.
Ich gehe dabei auf die referenzierte DLL im Projektmanager und dann auf Eigenschaften.
Alle System.Net.Http sind über Nuget, Version 4.3.4 eingebunden.

Projekt.DomainModel:
Version: 4.1.1.3
Pfad:
C:\Users\MeinUser\Documents\Visual Studio 2017\Projects\MeinProjekt\Projekt.Sort.Solution\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll


Projekt.Provider:

Version: 4.2.0.0
Pfad:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Http.dll


Projekt.BusinessLayer


Version: 4.1.1.3
Pfad:
C:\Users\MeinUser\Documents\Visual Studio 2017\Projects\MeinProjekt\Projekt.Sort.Solution\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll

Webanwendung:
Version: 4.1.1.3
Pfad:
C:\Users\MeinUser\Documents\MeinPfad\Entwicklung\WebProjekt\MeinProjekt\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll


Eigentlich ist der Fall glasklar:
Die System.Net.Http im Projekt Projekt.Provider referenziert nicht auf die Packages im Projektordner, sondern auf den lib Ordner.
Darum sucht die Webanwendung die Version 4.2.0.0, die natürlich sonst nirgends vorhanden ist.


Aber warum ist das so?
Ich installiere System.Net.Http immer über den Nuget Package Manager. Dieser macht das ja automatisch.

Wo kann hier eine Konfiguration anders sein?
Wie kann man so etwas in Zukunft vermeiden?


Nachtrag:

Vergleiche ich die .csproj Dateien der Projekt.BLL und Projekt.Provider sehe ich was erstaunliches:

Projekt:BLL:
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
    </Reference>


Projekt.Provider:
<Reference Include="System.Net" />
    <Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
      <Private>True</Private>
      <Private>True</Private>
    </Reference>

Zumindest der HintPath ist derselbe.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von schuppsl am .
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Hallo Schuppsl,

Versuch mal das zweite <Private>True</Private> zu löschen.

Die 4.2.ér Version scheint nicht von deinem Projekt, sondern von einem BuildTarget referenziert zu sein.

Ist denn die Datei

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Http.dll

vorhanden?
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4175

beantworten | zitieren | melden

Sollten nicht beide <Private>True</Private> komplett gelöscht werden (bzw. auf False stehen), denn dieser Eintrag entspricht "Copy Local" (s.a What does the Private setting do on a ProjectReference in a MSBuild project file?)?
private Nachricht | Beiträge des Benutzers
schuppsl
myCSharp.de - Member



Dabei seit:
Beiträge: 786

Themenstarter:

beantworten | zitieren | melden

Hallo Ihr beiden,
vielen Dank.
Leider jedoch hat das Löschen beider <private> Einträge nichts geholfen.

Die DLL existiert im angegebenen Pfad.

Zum Test habe ich mal im Projekt.Provider die System.Net.Http.DLL gelöscht und händisch vom o.G. Pfad wie in den anderen Projekten zugefügt.

Das löst das Problem leider auch nicht...weiß echt nicht mehr weiter.

Die Meldung in der Webanwendung:
Fehler
Die Datei oder Assembly "System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" oder eine Abhängigkeit davon wurde nicht gefunden. Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein.


In der .csproj steht nun:
<Reference Include="System.Net" />
    <Reference Include="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
    </Reference>
Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von schuppsl am .
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4175

beantworten | zitieren | melden

Setze dann mal <Private>True</Private> in der Webanwendung (ich denke die System.Net.Http.dll muß lokal im Deploy-Ordner vorhanden sein).
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Hallo 2 Sachen würde ich noch probieren:

1. Allerletzte Version von Studio installiert? -> Wenn nein -> update

2. Falls 1. nichts geholfen hat, hilft vllt. ein Assembly Redirect (4.0.0.0 - 4.2.0.0) -> 4.1.1.3
private Nachricht | Beiträge des Benutzers
schuppsl
myCSharp.de - Member



Dabei seit:
Beiträge: 786

Themenstarter:

beantworten | zitieren | melden

Zitat von unconnected
Hallo Schuppsl,


Die 4.2.ér Version scheint nicht von deinem Projekt, sondern von einem BuildTarget referenziert zu sein.

Ja, aber das Problem ist ja: Warum ist das so?


Edit.
Also das verstehe ich nicht:
Ich lösche die System.Net.Http aus den Verweisen.
Dann gehe ich in das Verzeichnis wie bei allen anderen:
Zitat
C:\Users\MeinUser\Documents\Visual Studio 2017\Projects\MeinProjekt\Projekt.Sort.Solution\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll

Und füge diese aus diesem Verzeichnis hinzu.
Dann steht aber trotzdem wieder die Version 4.2.0.0 mit dem MSBuild Verzeichnis drin (Siehe Ausgangspost)

Wie kann denn das sein?

P.S. VS2017 ist auf dem aktuellsten Stand
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von schuppsl am .
private Nachricht | Beiträge des Benutzers
schuppsl
myCSharp.de - Member



Dabei seit:
Beiträge: 786

Themenstarter:

beantworten | zitieren | melden

Also folgendes habe ich gemacht:

System.Net.Http aus den Verweisen gelöscht.
In der .csproj den Verweis darauf gelöscht
Den Ordner System.Net.Http.4.3.4 im Ordner packages gelöscht.
Per NuGet System.Net.Http installiert.

Die DLL zeigt jetzt zwar immer noch auf das MsBuild Verzeichnis, aber die Version stimmt jetzt und das ganze Läuft jetzt mal....
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16145

beantworten | zitieren | melden

Der Weg über NuGet ist hier auch der einzig korrekte.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers