Problèmes de la bibliothèque de classes des portables 2 mise à jour de Visual Studio 2012

Introduction

Des problèmes de bibliothèques de classes portables peuvent se produire après l’installation de Microsoft Visual Studio 2012 Update 2. Cet article décrit les problèmes et leurs solutions.

Problème 1

Symptômes

Lorsque vous utilisez des ressources pour créer un projet de bibliothèque de classes Portable après l’installation de Visual Studio 2012 Update 2, vous pouvez recevoir des messages d’erreur suivants :

« System.Type » ne contient pas une définition de 'Assembly' et aucune méthode d’extension 'Assembly' acceptant un premier argument de type 'System.Type' n’est introuvable (manquante à l’aide d’une directive ou une référence d’assembly ?)

Remarque  Vous recevez cette erreur lorsque vous utilisez Microsoft Visual C#.

'Assembly' n’est pas un membre de 'System.Type'

Remarque  Vous recevez cette erreur lorsque vous utilisez Microsoft Visual Basic.

Ce problème se produit lorsqu’une des plates-formes suivantes est ciblée dans votre projet :

  • Le Microsoft.NET Framework 4.5 et .NET pour les applications Windows Store

  • Le.NET Framework 4.5 et Windows Phone 8

  • Le.NET Framework 4.5, le .NET pour les applications Windows Store et Windows Phone 8


Solution de contournement

Pour contourner ce problème, corrigez le code généré par le concepteur du fichier de ressources. Pour ce faire, double-cliquez sur le message d’erreur et puis procédez comme suit :

Pour Visual C#

  1. Ajoutez le code suivant à l’aide de la directive :

    using System.Reflection;
  2. Recherchez le code suivant :

    typeof(Resource1).Assembly

    Remplacez ce code par le code suivant :

    typeof(Resource1).GetTypeInfo().Assembly

Le code suivant est un exemple qui présente ce problème :

        /// <summary> 
/// Returns the cached ResourceManager instance used by this class.

/// </summary>

[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]internal static global::System.Resources.ResourceManager ResourceManager { get {

if (object.ReferenceEquals(resourceMan, null)) {

global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PortableClassLibrary2.Resource1", typeof(Resource1).Assembly);

resourceMan = temp;

}

return resourceMan;
}
}


Visual Basic

  1. Ajoutez le code suivant à l’aide de la directive :

    Imports System.Reflection;
  2. Recherchez le code suivant :

    GetType(Resource1).Assembly

    Remplacez ce code par le code suivant :

    GetType(Resource1).GetTypeInfo().Assembly

Le code suivant est un exemple qui présente ce problème :

        '''<summary>
''' Returns the cached ResourceManager instance used by this class.

'''</summary>

<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _

Friend Shared ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager

Get

If Object.ReferenceEquals(resourceMan, Nothing) Then

Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("PortableClassLibrary1.Resource1", GetType(Resource1).Assembly)

resourceMan = temp

End If

Return resourceMan

End Get

End Property


Problème 2

Symptômes

Vous ne pouvez pas utiliser les ressources pour générer un projet de bibliothèque de classes Portable après avoir installé la mise à jour 2 de Visual Studio 2012. En outre, vous pouvez recevoir un des différents messages d’erreur. Par exemple, un des messages d’erreur suivants peut s’afficher :

Le type 'System.Net.HttpStatusCode' est défini dans un assembly qui n’est pas référencé. Vous devez ajouter une référence à l’assembly ' System.Net, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes.


Impossible de convertir implicitement le type 'System.Net.HttpStatusCode' en ' System.Net.HttpStatusCode [%programfiles%\Reference Assemblies\Microsoft\Framework\. NETPortable\v4.5\Profile\Profile78\System.Net.Primitives.dll]'


Notez que ce problème se produit lorsqu’une des plates-formes suivantes est ciblée dans votre projet :

  • Le.NET Framework 4.5 et Windows Phone 8

  • Le.NET Framework 4.5, le .NET pour les applications Windows Store et Windows Phone 8


Cause

Ce problème se produit car Visual Studio 2012 Update 2 a été installé après que le Windows Phone Development Kit (SDK) 8.0 a été installé. Par conséquent, les fichiers suivants ont été supprimés :

  • %programfiles%\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile49\System.Net.dll

  • %programfiles%\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile49\System.ServiceModel.dll

  • %programfiles%\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile78\System.Net.dll

  • %programfiles%\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile78\System.ServiceModel.dll


Solution de contournement

Pour résoudre ce problème, exécutez le programme de réparation de Visual Studio 2012. Pour ce faire, procédez comme suit :

  1. Cliquez sur Démarrer, cliquez sur Panneau de configuration, cliquez sur programmes, puis cliquez sur programmes et fonctionnalités.

  2. Avec le bouton droit de la version de Visual Studio 2012 que vous avez installée, puis cliquez sur Modifier.

  3. Lorsque l’Assistant d’installation de Visual Studio 2012 s’ouvre, cliquez sur Réparer .

Remarque : Si vous configurez un nouvel environnement de développement, afin d’éviter ce problème, vous devez installer Visual Studio 2012 Update 2 avant d’installer le Kit de développement Windows Phone 8.0.

État

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

×