2010-04-12 4 views
63

Мой проект C# ссылается на стороннюю DLL, для которой у меня есть исходный код. Могу ли я как-то сказать Visual Studio о местонахождении этого исходного кода, так что, например, когда я нажимаю F12, чтобы открыть определение метода в DLL, он откроет исходный код вместо того, Класс [из метаданных] "код-заглушка?Visual Studio - Прикрепить исходный код к ссылке

+1

См дубликата вопрос: http://stackoverflow.com/questions/5368423/how-to-attach-sources-to-referenced-assembly-in-visual-studio –

ответ

9

Один из способов сделать это - создать другой проект в своем решении, поместить в него источник DLL, а затем из основного проекта добавить ссылку как ссылку на проект вместо ссылки на сборку. Это должно позволить вам просмотреть источник/шаг в нем во время отладки и т. Д.

Возможно, это будет более простой способ, но в настоящее время я не знаю об этом.

+8

Это загромождает решение немного, и означает, что я сам собираю сторонние библиотеки DLL, что немного странно/медленнее.Я надеялся, что Visual Studio имеет эквивалент опции «attach source» Eclipse при ссылке на файл JAR. –

+1

Да, я знаю, что это меньше, чем идеально. Если у кого-то есть лучшее решение, мне было бы интересно узнать самого себя. – tzaman

+1

Resharper - это единственный способ заставить это работать, см. Мой комментарий выше. – netlander

25

Если вы используете ReSharper, вы можете включить его, перейдя в ReSharper/Options/External Sources и переместив «Источники из файлов символов». Затем на вкладке «Источники из файлов символов» нажмите «Дополнительно», и там вы можете сопоставить исходные папки.

+8

Что такое «целевая папка» для этого диалога? У меня просто есть DLL и папка с источниками, которые я хотел бы добавить для навигации. – Iain

21

Похож, что ответ находится в нижней части this MSDN documentation page.

отладчик ищет исходных файлов в следующих местах:

1. Files that are open in the IDE of the Visual Studio instance that launched the debugger. 

2. Files in the solution that is open in the VS instance. 

3. Directories that are specified in the "Common Properties"/"Debug Source Files" page in the properties of the solution. 

4. The source information of the .pdb of the module. This can be the location of the source file when the module was built, or it can be a command to a source server. 

Чтобы добавить каталог в Debug Source Files страницу SOLUTION (шаг 3 выше):

Вы можете указать сетевые или локальные каталоги для поиска файлов .

1. Select the solution in Solution Explorer and then choose "Properties" from the shortcut menu (i.e. right-click context menu). 

2. Under the "Common Properties" node, choose "Debug Source Files". 

3. Click the folder icon. Editable text appears in the "Directories containing source code" list. 

4. Add the path that you want to search. 

Обратите внимание, что выполняется поиск только указанного каталога. Вы должны добавить записей для любых подкаталогов, которые вы хотите найти.

Так что, если вы просто хотите отлаживать определенный файл один раз, не загромождая свое решение, просто откройте этот файл в среде Visual Studio IDE; если вам нужно перейти от этого файла к другим, вам, скорее всего, придется открыть другие файлы в Visual Studio.

Если вы часто нуждаясь в исходные файлы отладки за пределами вашего решения, то вы можете:

  1. Добавить исходные файлы в одном из существующих проектов в решении, или создать новый проект решение для размещения исходных файлов. Это загромождает ваше решение/проект, но поскольку он будет проверен в исходном контроле, все члены команды автоматически смогут отлаживать исходные файлы.
  2. Добавьте каталоги, содержащие исходный код, в «Исходные файлы отладки» решения. Поскольку это изменение не проверяется в контроле источника, каждый член команды, который хочет отлаживать исходные файлы, должен будет сделать это и добавить свои локальные пути. Кроме того, если вы получите код решения на другом компьютере, вам нужно будет запомнить этот шаг еще раз.
+2

К сожалению, это работает только в том случае, если вы * отлаживаете * запущенную программу, использующую сборку. То, что Джо искал, - это способ сделать навигацию кода (например, найти определение, использование и т. Д.) В среде IDE без запуска кода. Если ReSharper решила эту проблему, отлично. Я надеюсь, что в более поздних версиях Visual Studio также есть встроенная возможность. Но я не могу ее найти. Кто-нибудь знает? – Minyu

+0

Resharper - единственный способ найти, что это делает. Я поражен тем фактом, что Visual Studio 2015 Enterprise (такая дорогостоящая часть программного обеспечения) не поддерживает такую ​​простую функцию, которая бывает просто запоздалой мыслью в «IDE» класса «enterprise», такой как Eclipse, свободная и открытая часть программного обеспечения. – netlander