Предотвращение извлечения сторонних DLL из VSS - PullRequest
1 голос
/ 19 ноября 2008

(я знаю, что я использую Visual Source Safe, у меня нет выбора, потому что он поставляется с лицензией MSDN Subscription, и моя компания не хочет покупать стороннее решение для управления версиями ....)

У меня есть решение VS 2005 с 3 проектами библиотек классов C #, 2 проектами веб-сайтов ASP.NET и одним проектом веб-сервисов ASP.NET, которые хранятся в базе данных Visual Source Safe. Некоторые из проектов ссылаются на библиотеки DLL общей библиотеки, которые выполняют общие задачи.

Когда новый человек устанавливает решение на своей рабочей станции и впервые создает его, он проверяет библиотеки DLL общей библиотеки в папке bin на веб-сайте ASP.NET и в проектах веб-служб. Когда другой разработчик, который в настоящее время работает над проектом, пытается собрать его, он получает сообщение «файл исключен из проверки другого пользователя».

VS 2005 не отображает галочку рядом с DLL, которая вызывает головную боль.

Есть ли способ предотвратить это?

Ответы [ 3 ]

2 голосов
/ 19 ноября 2008

Почему у вас есть папка bin, проверенная в SourceSafe? В проектах, над которыми я работал, сторонние библиотеки DLL были проверены в отдельной папке (возможно, называемой ExternalLibraries или ThirdParty) на том же уровне, что и файл решения. Процесс компиляции будет настроен для копирования библиотек в папку bin. Это может быть обработано с помощью файлов .refresh или с шагом до или после сборки. Таким образом, VisualStudio / SourceSafe не увидит файлы как обновленные и не попытается проверить их.

Если компиляция уже извлекает файлы из-за их зависимости, я бы предложил удалить папку bin из VSS. Это не то же самое, что «Исключить папку из проекта», которая при компиляции скрывает папку из VS05 (и дает указанную вами ошибку компиляции.)

Если dll сторонних производителей не изменится, другой вариант - сделать эти файлы доступными только для чтения в VSS. Таким образом, пользователи не смогут просматривать файлы. (Чтобы пометить файлы как доступные только для чтения, вам необходимо изменить права доступа из инструмента управления VSS; инструмент разработчика не имеет этой функции.)

Что касается того, почему это происходит, я не верю, что VSS проверяет двоичные номера версий - это касается только даты изменения файла. Если новый разработчик извлекает весь код, все файлы (включая двоичные файлы) будут иметь текущую дату в качестве даты изменения. Это может быть причиной ненужных проверок.

Что касается ваших последующих комментариев - я не уверен, почему VS05 не видит файлы как под контролем исходного кода, а VSS UI делает. Я подозреваю, что это связано с VSS-файлами (и аналогичными), которые находятся в этой папке. В этом случае VS05 неверен.

1 голос
/ 19 ноября 2008

Не уверен, является ли это проблемой или лучшим решением, но если вы обновляете машину каждого разработчика, чтобы на них были установлены одинаковые последние версии общих DLL, этого не должно происходить. Я думаю, что VSS проверяет библиотеки DLL в папке \ bin, если версия, на которую ссылается файл проекта, не совпадает с версией, установленной на компьютере разработчика.

0 голосов
/ 20 ноября 2008

@ Pedro:

В интерфейсе IDE VS 2005 не указано, что папка \ bin находится в VSS. Когда я смотрю на проект в пользовательском интерфейсе VSS, он показывает, что проверено для пользователя, который сделал последнюю сборку на своей рабочей станции.

Если я использую опцию «Исключить папку из проекта», компилятор выдаст ошибку «ссылка не найдена».

В моей структуре решения проект библиотеки классов создает ссылку на сторонние библиотеки DLL с помощью команды «Добавить ссылку». Затем я установил ссылку на проект на библиотеки классов в моих проектах веб-сайта ASP, NET и веб-службы (используя шаблон проекта веб-сайта). Поскольку библиотека классов зависит от сторонних библиотек DLL, они копируются в папку \ bin.

Как настроить файл только для чтения через интерфейс VSS?

...