Отсутствуют ссылки с MSBuild, но с автоматическим разрешением в Visual Studio 2008 - PullRequest
0 голосов
/ 16 июля 2009

У меня есть решение 2008 года, которое дает мне всевозможные пропущенные ошибки ссылок на сборки, когда мы пытаемся построить его с помощью MSBuild. Я поднял решение в Visual Studio и сначала получил те же ошибки компиляции. Много пропущенных ссылок, поэтому я пошел к рассматриваемым проектам и расширил группу «Ссылки» и увидел восклицательный знак внутри желтого треугольника рядом с парой ссылок. Я нажал на ссылку, чтобы я мог проверить путь ссылки в окне свойств, и волшебным образом пропавший значок ссылки исчез. Нет запроса на выезд. Нет подсказки, чтобы сохранить что-либо. Ссылка волшебным образом решена. Я также заметил, что путь был правильным до и после исчезновения отсутствующей ссылки. Я сделал это для каждой недостающей ссылки (около 6 из них) и нажал Build Solution, и все скомпилировалось нормально. После этого я несколько раз перезагружал решение в Visual Studio, и оно все еще работает, однако MSBuild все еще выдает те же ошибки компиляции.

Что дает? Почему Visual Studio 2008 Team System Developer Edition волшебным образом разрешает эти ссылки и компилирует решение, а MSBuild все еще не может их найти? Любая помощь будет оценена. Спасибо.

Ответы [ 3 ]

1 голос
/ 11 сентября 2009

Проблема была исправлена, когда мы вернули нашу ветку разработки обратно в основную ветку. У меня есть подозрение, что пути к ссылкам указывали на «/ Dev /» в нашей основной ветке вместо «/ Main /» и что VS 2008 автоматически обновлял ссылку для нас, где MSBuild этого не делал.

Я думаю, что это может произойти, когда вы добавляете ссылку по файлу (с помощью вкладки «Обзор») вместо добавления ссылки с помощью вкладки «Проект».

0 голосов
/ 17 июля 2009

У меня была такая проблема несколько лет назад. Какие сборки вам не хватает? Они принадлежат продукту Microsoft, например SQL Server или Office?

Диалоговое окно «Добавление ссылки» в Visual Studio использует местоположения реестра для хранения путей к сборкам (см. «Отображение сборки в диалоговом окне« Добавление ссылки »» на полпути вниз по странице). Это в дополнение к сборкам, хранящимся в GAC. Если ваши сборки находятся в одном из этих мест, это может вызвать эту проблему, так как я подозреваю, что они не проверяются MSBuild.

Просмотрите эти местоположения, чтобы увидеть, находятся ли ваши сборки по одному из следующих путей, указанных в реестре:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx

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

0 голосов
/ 16 июля 2009

Попробуйте открыть решение с другого ПК, возможно, с Express Express VS2008, таким образом вы можете получить более описательное сообщение об ошибке. Мое последнее средство - воссоздать проект / решение с нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...