Je jouais avec VS2010 beta2. J'ai remarqué que si j'essaie d'ajouter System.Core.dll à un projet qui n'y a pas encore de référence, dans VS2010, il se plaint disant que je ne peux pas ajouter cet assembly car il est déjà référencé par le système de projet. Une idée de pourquoi ils le font dans VS2010/4.0? Est-ce parce qu'ils ont transféré quelques types à mscorlib depuis System.Core?System.Core.dll dans 4.0 ajouté par défaut?
Répondre
System.Core fait partie du framework requis depuis la version 3.5, car il inclut des éléments tels que ExtensionAttribute et les opérateurs de requête standard LINQ. De même, si vous créez un projet 3.5 dans VS2008, il ajoutera automatiquement une référence à System.Core pour vous.
Je sais qu'il ajoute une référence à System.Core par défaut même en 3.5. Mais la différence ici est, si vous supprimez cette référence de System.Core du projet, puis essayez de l'ajouter, il va bercer en disant que l'assembly est déjà au projet. Cela n'arrive pas en 3.5. – Niranjan
Cela ressemble à un bogue: soit il ne devrait pas vous laisser supprimer cette référence requise, ou il devrait vous permettre de le rajouter si vous supprimez la référence. Peut être utile de signaler sur Connect. – itowlson
Bogue levé: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=525663 – Niranjan
Pas une réponse pour "pourquoi ils font cela", mais pourrait être utile.
Voilà comment je vois la chaîne d'actions qui mènent à implicite référence System.Core.dll
:
- Vous faites un projet dans Visual Studio 2010. Il génère .csproj avec
ToolsVersion=4.0
. Supposons qu'il utilise MSBuild à partir de .NET 4. - Votre .csproj importe
Microsoft.CSharp.targets
à partir de$(MSBuildBinPath)
. Je suppose que ce serac:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.CSharp.targets
- importations de Microsoft.CSharp.targets
Microsoft.Common.targets
- .NET 4, les importations de Microsoft.Common.targets
Microsoft.NETFramework.props
- En Microsoft.NETFramework.props vous pouvez trouver
AdditionalExplicitAssemblyReferences
noeud, qui a un point-virgule liste séparée des assemblées. J'ai trouvé là System.Core.dll et une variable pour le remplacement ultérieur.
Ainsi, pour désactiver référence implicite de System.Core.dll, vous pouvez le supprimer de la liste dans le noeud AdditionalExplicitAssemblyReferences
dans c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.NETFramework.props
.
Après cela, si vous utilisez, par exemple, System.Linq
et ont aucune référence à System.Core.dll dans votre projet, vous logiquement obtenir erreur de compilation, comme dans Visual Studio 2008.
- 1. Puis-je utiliser System.Core.dll/System.Collections.Generic.HashSet dans powershell?
- 2. Pourquoi, lors de la création d'un projet C++/CLR dans VS2010, un SecurityAction.RequestMinimum est ajouté par défaut dans AssemblyInfo?
- 3. C# .Net 4.0 Paramètres nommés et par défaut
- 4. asp.net 4.0 routage de formulaires web - chemin par défaut/wildcard
- 5. Comment récupérer les modèles par défaut du contrôle WPF 4.0?
- 6. Références du service Web & C# 4.0 Valeurs par défaut
- 7. SEO ASP.NET 4.0 Forms - définir la valeur par défaut dans l'URL
- 8. args par défaut dans
- 9. app se bloque après les charges d'écran par défaut. mais seulement dans 4.0
- 10. WCF 4 temporisations par défaut?
- 11. Conventions par défaut de NHibernate par défaut
- 12. refus d'autorisations par défaut dans WSS 3.0
- 13. pourquoi cet espace de noms est-il ajouté par défaut "System.Collections.Generic"?
- 14. comment réinitialiser les lignes à la colonne nouvellement ajouté avec sa valeur par défaut
- 15. SPFIeldUrl filtrable dans la vue par défaut
- 16. system.web à l'intérieur du fichier app.config avec ClientAuthenticationMembershipProvider ajouté par défaut
- 17. Contrôleur par défaut dans CodeIgniter
- 18. set_value() par défaut dans CodeIgniter
- 19. Document par défaut dans IIS
- 20. Heure par défaut dans VB.NET
- 21. Règle par défaut dans Make
- 22. CssClass et images par défaut dans ServerContol
- 23. Symboles en dylib, Fonctionne avec gcc 4.0 non gcc-4.2 (OSX par défaut)
- 24. Entity Framework 4.0 Utiliser la base de données Valeur par défaut
- 25. Licence de contenu ajouté par l'utilisateur dans Google Maps
- 26. Nouveau contact ajouté par programmation non visible dans l'application Contacts
- 27. L'utilisateur par défaut a un identifiant différent par défaut
- 28. Espace de noms System.Linq manquant même en référence à System.Core.Dll
- 29. Vue par défaut de l'élément de liste par défaut Sharepoint
- 30. Faire un double-défaut par défaut dans g77, compilateur Fortran
Merci pour cette question , nous avons essayé .Net4 avec vs2010, mais notre solution avait trop de bagages qui ne fonctionneraient pas, nous sommes donc revenus à 3.5. Suite au bug que vous avez soulevé, j'ai trouvé la solution pour que je puisse ajouter la référence à System.Core dans un projet qui ne serait pas construit sans elle. –
Face au même problème dans VS2012 lors du portage projet SL4 à SL5. –