2010-03-17 3 views
151

Cette DLL est ajoutée par défaut dans les projets Visual Studio 2010. A quoi sert ce nouvel assemblage? Il ne semble pas en contenir beaucoup après l'avoir regardé en utilisant Reflector et Google ne semble pas avoir beaucoup à dire à ce sujet non plus.Qu'est-ce que Microsoft.csharp.dll dans .NET 4.0

Répondre

174

Il est utilisé lorsque/si vous utilisez le dynamic keyword dans votre projet. L'assemblage contient le classeur d'exécution C#.

Le compilateur C# a été essentiellement extrait dans une bibliothèque afin qu'il puisse émettre, compiler et exécuter le code nécessaire pour prendre en charge le mot-clé dynamic. La première fois que vous utilisez dynamic dans votre code, cet assembly (ainsi que System.dll, System.Core.dll et System.Dynamic.dll) sera chargé dans votre AppDomain.

+2

Voulez-vous spéculer sur pourquoi ils ont choisi de le référencer par défaut? Devrions-nous tous utiliser 'dynamic' beaucoup plus que ce que nous sommes actuellement (c'est-à-dire jamais)? –

+4

@mo cela ressemble à comment ils ajoutent automatiquement 'using System.Linq;' à tous les fichiers. Cela rend les nouvelles fonctionnalités de langage un peu plus homogènes. Si vous voulez utiliser 'dynamic', cela fonctionne sans effort de votre part. –

12

Toujours supprimé jusqu'à présent. Aucun problème pour le moment.

+13

Si votre projet n'utilise pas le mot-clé dynamic, j'imagine que vous pouvez supprimer la ligne qui indique '' dans le fichier .csproj. – Cheeso

+0

Merci TomTom et @Cheeso. J'essayais de construire un fichier .dll (Framework réglé sur 3.5) à utiliser avec Unity, et le supprimer du fichier .csproj a fait l'affaire. – Wolfram

+0

Cette "réponse" est plus appropriée comme un commentaire ci-dessous la question. Bien qu'il suggère une solution de contournement, il ne répond pas réellement à la question de savoir à quoi sert le nouvel assemblage. – toonice