Comment déboguer dans mon package nuget déployé à partir de TeamCity?
J'ai mis une bibliothèque que mon équipe utilise dans un package nuget qui est déployé à partir de TeamCity dans un dossier réseau. Je ne peux pas déboguer dans ce code, si! SymbolSource est l'une des solutions que j'ai lu, mais je préférerais trouver un moyen d'avoir accès à l' .pdb/source des fichiers directement à partir de Teamcity. Personne ne sait comment faire cela?
Modifier. Quand je vérifie 'Include Symbols and Source'
dans le Nuget Pack étape de génération TeamCity crée un .Symbole.nupkg en outre à la .nupkg fichier dans le dossier réseau. L' .Symbole.nupkg contient la src et de la .fichier pdb.
Modifier. J'ai décoché 'Include Symbols and Source'
sur TeamCity et a ajouté ce qui suit à mon fichier nuspec:
<files>
<file src="..\MyLibrary\bin\release\MyLibrary.dll" target="lib\net40" />
<file src="..\MyLibrary\bin\release\MyLibrary.pdb" target="lib\net40" />
<file src="..\MyLibrary\*.cs" target="src" />
<file src="..\MyLibrary\**\*.cs" target="src" />
</files>
Cela a ajouté de la dll, le pdb et les fichiers de source de ma bibliothèque dans le package nuget et ne génère pas d' .Fichier de symboles qui, je pense, n'est nécessaire que pour les serveurs de symboles.
Vous devez vous connecter pour publier un commentaire.
Fiable solution légère
Cela signifie que vous serez en mesure de vous par le biais de code et d'afficher des exceptions, mais vous pourriez avoir à trouver un fichier sur le disque et l'ouvrir avant de vous pouvez définir un point d'arrêt. Évidemment, vous devez être attentif à ce que la source est à la droite de révision.
Plus de détails sur l'étape 1
Si vous êtes actuellement à l'emballage sans Nuspec, vous aurez besoin de créer un Nuspec, puis ajouter l'apb à la liste des fichiers dans le dossier lib "NuGet spec" peut être une commande utile pour la génération de la première spec tel que défini dans NuGet docs. Ensuite, s'assurer que l'Équipe de la Ville de Nuget étape Pack est le référencement de votre nouveau nuspec.
Plus de détails sur l'étape 2
Lorsque vous avez une solution ouverte, clic droit sur la Solution, sélectionner Propriétés...Propriétés Communes...Débogage des Fichiers Source, et ajouter à la racine du répertoire source pour le binaire de référence. Ou voir MSDN.
Remarque, vous ne pouvez pas ouvrir les propriétés de la solution pendant le débogage.
Dans l'avenir - source intégration
À partir de Visual Studio 2017 15.5 preview2 vous pouvez ajouter quelque chose comme ceci à votre fichier de projet:
Il est encore tôt pour cette méthode, et il y a probablement un certain nombre de réserves à son utilisation, voir le bas de ce commentaire et la discussion à ce sujet pour en savoir plus.
La dernière version de dotPeek (gratuit!) peut agir comme un serveur de symbole et de générer des fichiers pdb à la volée. Cela m'a permis de débogage dans les bibliothèques dll, qui sont desservis par teamcity.
Le télécharger ici:
http://blog.jetbrains.com/dotnet/2014/04/09/introducing-dotpeek-1-2-early-access-program/
Des Instructions sur la façon de les mettre ici.
https://web.archive.org/web/20160220163146/http://confluence.jetbrains.com/display/NETCOM/dotPeek+Symbol+Server+and+PDB+Generation
Vous pouvez bien sûr set-up & configurer votre propre serveur de symbole, mais il est probablement plus facile à...
Tout cela peut être fait avec la version gratuite de ProGet.
avertissement -- mon travail de jour est à Inedo
Source
valeur de l'argument.Dans votre
.nuspec
(directement sous<package>
):(changement
net451
à la plate-forme de compilation pour)J'ai trouvé un super moyen simple de faire ce que j'ai blogué sur ici:
https://mattfrear.com/2017/11/29/speed-up-development-in-a-nuget-package-centric-solution/
Cela ne fonctionne que si vous utilisez les nouvelles .NET de Base style .csproj avec
<PackageReference>
(sur soit .NET de Base ou .NET Framework).Ce nouveau suppose que vous avez accès au code source du package NuGet.
C:\Users\matt\.nuget\packages\
), en écrasant la package NuGet .dll.Que c'est! Vous devriez être en mesure d'intervenir dans le paquet lors du débogage. Pas de déconner avec .pdb ou de la source des serveurs. Cela a grandement accéléré mon cycle de développement.
Depuis que cette question a été posté, Jetbrains avoir écrit tout un article de blog sur la façon d'accomplir ceci. Les étapes peuvent être résumées comme suit:
Si vous utilisez le Package Nuget étapes de génération, vous pouvez cocher "Inclure les Symboles et la Source" à la sortie d'un
.symbol.nupkg
qui contient la Pdb. Selon que les Fichiers de symboles de l'Indexeur est assez intelligent pour regarder à l'intérieur de ce fichier ou n'est pas, vous pourriez avoir besoin de changer l'extension du fichier pour que les choses marchent.Tous les détails sont donnés ici:
https://blog.jetbrains.com/teamcity/2015/02/setting-up-teamcity-as-symbol-and-source-server/
C'est ce que j'ai trouvé pour le travail, mais toutes les étapes sont probablement pas nécessaire...
Tools > Options > Debugging > General > "Require source files to exactly match the original version"
est PAS vérifié."Enable just my code"
est PAS vérifiéTools > Options > Debugging > Symbols
pointant vers le répertoire source du package Nuget. (Littéralement, vous entrez le chemin du dossier , voir image ci-dessous)Debug > Attach to Process...
iisexpress
(il peut y en avoir plusieurs, il ne fera aucun mal à attacher à tous)Si vous avez le code source du paquet, puis l'infaillible (mais peut-être laborieux) méthode:
J'ai eu à le faire de cette façon quand j'ai la méthode que je voulais de débogage à l'intérieur du package NuGet a été appelé par le cadre et non par mon code, donc je ne pouvais pas l'étape en elle. (Dans mon cas, la méthode a été un ASP.NET DelegatingHandler).
Une fois que vous avez terminé, vous aurez envie d'annuler toutes vos modifications via le contrôle de code source, de sorte que le package NuGet est correctement référencé.
git co .
. FaitSi votre code est publique dans un dépôt Git, ou, au moins, dans votre réseau, est accessible sans authentification, puis GitLink serait une option:
https://github.com/GitTools/GitLink
GitLink rend symbole serveurs obsolètes par l'évolution de l'APB pour pointer vers le serveur Git. Mais, comme l'a dit avant, ce qui rend nécessaire pour le dépôt Git pour le public, jusqu'à maintenant, il n'y a pas de "bonne" façon de s'authentifier lors de l'accès à un repository privé.