Найдите и добавьте ссылку на проект для сборки .Net, содержащей данный тип? - PullRequest
1 голос
/ 10 сентября 2008

Я работаю с большим (более 270 проектов) решением VS.Net. Да, я знаю, что это продвигает дружбу с VS, но это унаследовано и бла-бла. В любом случае, чтобы ускорить загрузку решения и время компиляции, я удалил все проекты, над которыми я сейчас не работаю ... который, в свою очередь, удалил ссылки на проекты из проектов, которые я хочу сохранить. Так что теперь я прохожу через процесс ошеломления, добавляя двоичные ссылки на сохраненные проекты, чтобы найти ссылочные типы.

Вот как я сейчас работаю;

  • Попытка скомпилировать, получить тысячи ошибки, «отсутствует тип или пространство имен»
  • Скопируйте первую строку ошибки список в буфер обмена
  • Использование сценария Perl, подключенного к горячая клавиша (AHK) я извлекаю имя типа из сообщение об ошибке и сохраните его в буфер обмена Windows
  • Я вставляю имя типа в источник понимание символа браузера и обратите внимание на сборка, содержащая Тип
  • Я возвращаюсь к VS и добавляю, что сборка как двоичная ссылка на соответствующий проект

Так что теперь, примерно через 30 минут, я думаю, что должен быть более быстрый путь ...

Ответы [ 4 ]

2 голосов
/ 10 сентября 2008

Мне приходят в голову эти решения:

  • Вы можете попробовать использовать Dependency Walker или аналогичную программу для анализа зависимостей.
  • Анализ файлов MSBuild (* .csproject) для получения списка зависимостей

EDIT:
Только что нашел 2 классных инструмента Визуализатор зависимостей & Средство поиска зависимостей на codeplex Я думаю, они могут вам очень помочь.

EDIT:
@edg, я совершенно неправильно понял твой вопрос, так как ты теряешь ссылки из файлов csproj, ты должен использовать инструмент статического анализа, такой как NDepend или пытаться анализировать зависимости во время выполнения.

1 голос
/ 12 октября 2008

Вместо удаления файлов проекта из решения вы можете выгрузить проекты, над которыми вы не работаете (щелкните правой кнопкой мыши проект и выберите Выгрузить проект ). Пока разгруженный проект был собран один раз, любой другой проект со ссылкой на него сможет найти сборку в выходном каталоге проекта и построить с ней.

1 голос
/ 10 сентября 2008

Нет, в настоящее время нет встроенного более быстрого способа.

Я бы предложил не модифицировать существующее решение и создать новое решение с новыми проектами, которые дублируют (например, переименовывают и редактируют) проекты, над которыми вы хотите работать. Если вы обнаружите, что решение с сотнями проектов является проблемой для вас, то вам, скорее всего, просто нужно работать над подмножеством. Начните с пары новых проектов, добавьте бинарную (не проектную) ссылку и перейдите оттуда.

1 голос
/ 10 сентября 2008

Вы можете попробовать открыть старый файл .csproj в блокноте и заменить теги ProjectReference ссылочными тегами. Если вы можете написать парсер, не стесняйтесь поделиться. :)

Запись в файле .csproj, если это ссылка на проект

  <ItemGroup>
    <ProjectReference Include="..\WindowsApplication2\WindowsApplication2.csproj">
      <Project>{7CE93073-D1E3-49B0-949E-89C73F3EC282}</Project>
      <Name>WindowsApplication2</Name>
    </ProjectReference>
  </ItemGroup>

Запись в файле .csproj, если это ссылка на сборку

  <ItemGroup>
    <Reference Include="WindowsApplication2, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <ExecutableExtension>.dll</ExecutableExtension>
      <HintPath>..\WindowsApplication2\bin\Release\WindowsApplication2.dll</HintPath>
    </Reference>   </ItemGroup>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...