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#
-
Ajoutez le code suivant à l’aide de la directive :
using System.Reflection;
-
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
-
Ajoutez le code suivant à l’aide de la directive :
Imports System.Reflection;
-
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 :
-
Cliquez sur Démarrer, cliquez sur Panneau de configuration, cliquez sur programmes, puis cliquez sur programmes et fonctionnalités.
-
Avec le bouton droit de la version de Visual Studio 2012 que vous avez installée, puis cliquez sur Modifier.
-
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 à ».