Compiler un projet C# dans une dll
J'ai un projet de base qui alimente deux projets différents. Je veux pouvoir avoir le premier projet de compiler toutes les références dans une dll au moment de la compilation.
Ce doit être quelque chose qui est intégré dans le projet de construction de sorte que Jr les développeurs n'ont pas à s'inquiéter à ce sujet.
Solution: j'ai fini par l'ajout d'une ligne à l'après-construire l'action du projet, de sorte qu'une bonne construction est le suivant:
$(ProjectDir)ilmerge.exe /out: /ver: <.dll> <.dll>
ilmerge.exe
a été déplacé sur le projet et la ligne ci-dessus prend la dll donnée et crée un.
- OK, alors c'est quoi votre question? Vous avez marqués ilmerge, qui est un outil que vous pouvez utiliser pour ce faire. Vous avez une question à propos de cela?
- stackoverflow.com/questions/1829531/...
- Désolé, je sais comment utiliser l'outil avec NuGenUnify, mais je veux qu'il se passe lorsque je Compile le projet. Puis-je ajouter à ce processus?
- Ce n'était pas clair directement à partir de votre question, vous pourriez peut-être mettre à jour. J'ai édité ma réponse.
- double possible de une DLL, plusieurs projets?
- J'ai VS installé en 2015 (de l'Entreprise) et il n'y a rien (exécutable, dossier, etc.) n'importe où dans mon système de fichiers nommé "ILMerge"
- ilmerge ne fait pas partie de la SV. Il y a un package nuget qui est utilisé. nuget.org/packages/ilmerge
- ne fait pas partie de VS": c'était mon point de vue! Mais je ne savais pas qu'il était disponible sous la forme d'un package nuget. C'est l'information utile.
- les autres intervenants sont à droite (j'ai enlevé le mien, il est inexact). Je pensais que c'était une partie de VS ou de la .NET SDK, mais ne peut pas trouver que ce soit. Apparemment, il l'habitude d'être un téléchargement séparé jusqu'en 2012. Le package NuGet c'est la meilleure façon de le faire actuellement. Vous pourriez également être intéressé par ILMerge GUI à partir de CodePlex, qui fournit une interface graphique pour ILMerge. Son développement a été interrompu, mais il est maintenant de nouveau actif. Je vais mettre à jour ma réponse trop.
Vous devez vous connecter pour publier un commentaire.
(cette réponse a été édité pour la mise à jour des liens vers de nouveaux emplacements de téléchargement et pour tenir compte des nouvelles idées)
Votre meilleur pari est d'utiliser Micorosoft de ILMerge. Il sert à être disponible sous forme de téléchargement de Microsoft Research (c'est pas partie de VS ou de la .NET SDK).
La version originale a été maintenu jusqu'en 2012. Il est maintenant un Package NuGet, qui est la meilleure façon de le faire actuellement, et pour l'ajouter à votre projet et de serveur de build.
Comme alternative, vous pouvez essayer de ILMerge GUI de CodePlex, qui fournit une interface graphique pour ILMerge. Son développement a été interrompu, mais il est maintenant de nouveau actif.
Un Article sur Codeproject ILMerge explique plus sur la façon de l'utiliser et d'expliquer certains cas d'utilisation. Un exemple de commande est:
Comme alternative, vous pouvez utiliser Fody avec Costura.Fody, comme expliqué dans ce DONC la réponse.
Note (1): si vous avez besoin de fusionner side-by-side assemblées (c'est à dire, mélange natif 64 bits et 32 bits des assemblées), vous devriez consulter cette SORTE d'article sur le chargement de side-by-side assemblées de façon dynamique.
Note (2): pour ajouter ce en tant que partie intégrante de votre processus de build, allez à Propriétés de Projet > Construire des Événements > cliquez sur "Éditer le Post-build" et de remplir la commande à partir de ci-dessus. Cliquez sur "Macros" pour voir comment référencer le fichier en cours ou de l'assemblée.
Avoir un regard externe pour la outil de ILMerge de Microsoft: http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx
Il peut fusionner plusieurs assemblées en une seule.
Vous pouvez utiliser ILMerge de la fusion de multiples assemblages:
Vous pouvez fusionner la base assemblées ensemble et utiliser la résultante de l'assemblée en tant que référence pour vos autres projets.
Alternativement, au lieu de deux projets, qui ont partagé votre code placé dans un projet afin d'obtenir une assemblée unique de référence.