LINQPad, похоже, не только выполняет свои запросы, но и загружает свои зависимости внутри своего собственного AppDomain.Если вы создадите новый AppDomain в своем приложении, вы сможете дружественно обработать исключения и перезагрузить / скомпилировать приложение дружественным образом.
Еще интереснее то, как LINQPad обрабатывает свои зависимости.По-видимому, они «копируются в тени» при загрузке в эти домены приложений, поскольку у меня есть собственная библиотека, которую я разработал, и я могу вносить в нее изменения «на лету», а LINQPad не блокирует файл;вместо этого кажется, что у него есть FileSystemWatcher, который ищет изменения в файле, выгружает AppDomain, а затем повторно загружает AppDomain с новой зависимостью.
«Пауза» в приложении после построения новогобиблиотека, а затем те новые «методы», которые я добавил, теперь доступны для сценариев через intellisense, что указывает на то, что LINQPad достаточно интеллектуален при работе со сценариями и ссылочными библиотеками, которые: а) не только изменяются;но б) может привести к сбою.
Однако вы всегда можете использовать System.Diagnostics.Debugger.Break (), если вы действительно хотите повеселиться.Если вы отключите оптимизацию своих сценариев в свойствах LINQPad, вы можете фактически выполнить отладку в процессе LINQPad, получить свой исходный код в окне отладчика Visual Studio, разместить точки останова, выполнить шаг, изучить переменные и т. Д., Чтобы фактически выполнить отладку.фрагменты кода, созданные в LINQPad.Это пара дополнительных строк в вашем скрипте, но оно того стоит, если вы выполняете тяжелые сценарии / тестирование в LINQPad.
Это все еще один из лучших инструментов, которые мне удалось найти для создания прототипа модульного теста.и создать код C #, который использует запросы LINQ, которые я могу просто вырезать и вставить в приложения с относительно простым ощущением, что они будут вести себя так, как они наблюдают.