Il devrait être possible de référencer des bibliothèques de classe d'infrastructure .net à partir de projets .net core 2 dans Visual Studio 2017, mais je reçois une exception d'exécution lors de l'essai de référence une bibliothèque de classes dépendante de System.ServiceModel.target Bibliothèque de classes d'infrastructure .net avec dépendance System.ServiceModel à partir d'une application de base .net
Créer une "application console (.NET Core)". Visual Studio a défini le framework cible sur ".NET Core 2.0".
Créer une "bibliothèque de classes (.Net Framework)". Visual Studio a défini l'infrastructure cible sur ".NET Framework 4.6.1".
Référence "System.ServiceModel 4.0.0.0" de la bibliothèque de classes. Remplissez Class1 dans la bibliothèque de classe avec les éléments suivants:
public class Class1
{
public void Test()
{
System.ServiceModel.EndpointAddress address = new System.ServiceModel.EndpointAddress("");
}
}
Référence la bibliothèque de classes de l'application de la console. De la principale méthode de l'application de la console appeler la méthode de test dans Class1:
class Program
{
static void Main(string[] args)
{
new Class1().Test();
}
}
Générez et exécutez. Une exception est levée alors la méthode Test()
est essayée exécutée:
System.IO.FileNotFoundException a eu lieu HResult = 0x80070002
message = Impossible de charger le fichier ou l'assembly « System.ServiceModel, Version = 4.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089 '. Le système ne trouve pas le fichier spécifié. Source = StackTrace: à ClassLibrary1.Class1.Test() dans c: \ users \ rth \ source \ repos \ ConsoleApp2 \ ClassLibrary1 \ Class1.cs: ligne 15 à ConsoleApp1.Program.Main (String [] args) dans c: \ users \ RTH \ \ repo source de de \ ConsoleApp2 \ ConsoleApp1 \ Program.cs: ligne 11
System.ServiceModel n'est pas dans le répertoire/bin/Debug soit projet.
J'ai essayé de copier manuellement le fichier System.ServiceModel dans le dossier/bin/debug de l'application console, mais la même erreur s'est produite. Comment faire référence à une bibliothèque de classes qui référence System.ServiceModel sans obtenir d'exceptions d'exécution?
System.ServiceModel se trouve dans le GAC et dans le répertoire Framework, au moins sur ma machine. Vous avez peut-être référencé un assembly avec une exigence de version spécifique que vous ne rencontrez pas. Vérifiez votre GAC et vos répertoires de framework. Ensuite, vérifiez que votre référence n'est pas ciblée en tant que version spécifique. –
@ Kevin-hirst: Lorsque je regarde les propriétés pour la référence à System.ServiceModel, le chemin d'accès est C: \ Program Files (x86) \ Assemblys de référence \ Microsoft \ Framework \ .NETFramework \ v4.6.1 \ System.ServiceModel.dll. Si je prends ce fichier et que je le place sous/bin/debug dans l'application console, cela ne fonctionne toujours pas et le chargeur d'assembly est supposé regarder ici. Une chose à noter: il n'y a pas de problème si je crée un.Net Framework Console App (pas. Net core) et référence la même bibliothèque de classes. – Rolf
Si je change le framework cible de l'application console en .NET Framework 4.6.1 cela fonctionne. – Rolf