2010-04-14 6 views
0

J'ai une solution avec deux projets. Un pour le projet pour le code de production et un autre pour les tests unitaires. Je l'ai fait selon les suggestions que j'ai reçues de SO. J'ai remarqué que dans le dossier de débogage il inclut le code de production sous forme exécutable. J'ai utilisé NUnit pour exécuter les tests après avoir supprimé l'exécutable et ils échouent tous en essayant de trouver l'exécutable. Donc, c'est vraiment essayer de le trouver. J'ai ensuite fait une lecture rapide pour savoir ce qui est mieux, une DLL ou un exécutable. Il semble qu'une DLL est beaucoup plus rapide car ils partagent un espace mémoire où la communication entre les exécutables est plus lente. Malheureusement, notre code de production doit être exquisuable. Les tests unitaires seront donc légèrement plus lents. Je ne suis pas trop inquiet à ce sujet. Mais le projet repose sur du code écrit dans une autre bibliothèque qui est également en format exécutable pour le moment.Le code testé doit-il être compilé en une DLL ou un fichier exécutable?

Les projets qui exposent une sorte de SDK doivent-ils plutôt être compilés dans une DLL, puis les projets qui utilisent le SDK seront compilés en exécutable?

Répondre

1

Ce n'est pas parce qu'il s'agit d'un fichier exécutable qu'il est chargé séparément.

Dans .NET, vous pouvez charger un fichier EXE en tant qu'assemblage tout aussi facilement qu'une DLL. C'est ce qui se passe dans ce cas (j'imagine, de toute façon) - pas de communication inter-processus, pas de problème.

Si vous testez réellement quelque chose qui devrait logiquement être un exécutable, alors ça va.

+0

Merci. Je pensais que je devrais peut-être poser cette question en premier. Comment .Net gère la communication entre deux exécutables. – uriDium

+0

@uriDium: Voulez-vous dire "deux assemblages qui se trouvent être des fichiers EXE" ou "deux processus"? Ce sont des choses complètement différentes. Une fois que du code est en cours d'exécution, .NET ne se soucie pas vraiment si un assembly est dans un fichier EXE ou une DLL. –

+0

Deux assemblages qui se trouvent être des fichiers EXE. Pas deux processus distincts. Pour cela, ils devraient utiliser une forme de technologie d'accès à distance que j'imaginerais. Sauf s'ils sont écrits pour partager l'espace mémoire. – uriDium

Questions connexes