Следует ли мне исключить ссылки на bin \ .. project..dll в TFS или Visual Studio ONline Builds?

Один из наших клиентов использует Visual Studio Online который основан на возможностях Team Foundation Server (TFS)

Мы изучали, как выполнять автоматические сборки и автоматические модульные тесты с помощью размещенного агента сборки Visual Studio Online.

Мы пытаемся создать на нем одно из наших веб-приложений.

Наше решение для веб-приложений содержит несколько файлов csproj в рамках решения.

Примечание. Веб-приложения будут правильно собираться и правильно работать на наших локальных компьютерах для разработки с использованием Visual Studio 2012.

Однако, когда мы создаем веб-приложение с помощью агента размещенной сборки Visual Studio Online, оно выдает следующую ошибку о том, что не удается найти основную dll моего приложения (мое приложение называется BlahBlah):

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications \ Microsoft.WebApplication.targets (182): не удалось скопировать файл «bin \ BlahBlah.dll», потому что он не был найден. C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications \ Microsoft.WebApplication.targets (182): не удалось скопировать файл «bin \ BlahBlah.pdb», потому что он не был найден.

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

<Content Include="bin\BlahBlah.dll" />
<Content Include="bin\BlahBlah.pdb" />

Для правильной работы в агенте размещенной сборки Visual Studio Online приведенные выше ссылки были заменены следующими:

<Content Include="bin\BlahBlah.dll"  Condition="$(IsDesktopBuild) == true" />
<Content Include="bin\BlahBlah.pdb"  Condition="$(IsDesktopBuild) == true" />
<None Include="bin\BlahBlah.dll"   Condition="$(IsDesktopBuild) != true" />
<None Include="bin\BlahBlah.pdb"   Condition="$(IsDesktopBuild) != true" />

После замены ссылок наше приложение будет правильно строиться на основе агента размещенной сборки Visual Studio Online.

Однако следует ли исключить ссылки на bin..project..dll в TFS или Visual Studio ONline Builds? Другими словами, является ли моя вышеупомянутая успешная сборка «ложным проходом»?


person CS Lewis    schedule 04.03.2015    source источник
comment
Желательно включить их как ссылки на пакеты NuGet, чтобы VSO мог использовать их во время сборки.   -  person jessehouwing    schedule 04.03.2015
comment
Извините, я должен был упомянуть, что мое приложение называется BlahBlah. Таким образом, агент размещенной сборки Visual Studio Online жалуется на то, что не находит собственный файл dll приложения. Собственной dll приложения не будет в папке пакетов. Вы следите?   -  person CS Lewis    schedule 04.03.2015
comment
Но тогда это должны быть ссылки на проекты, а не содержание.   -  person jessehouwing    schedule 04.03.2015


Ответы (1)


Вы никогда не должны ссылаться на какие-либо файлы в папках bin или obj, и вы никогда не должны проверять какие-либо файлы в них в системе управления версиями.

Если у вас есть зависимости между проектами в одном решении, вам следует использовать ссылку на проект. Щелкните правой кнопкой мыши свой проект и выберите «Добавить ссылку», затем выберите вкладку «Проект».

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

person MrHinsh - Martin Hinshelwood    schedule 05.03.2015
comment
Правильный. А если вы не используете Nuget, вам придется имитировать какой-то бинарный поиск. Pre-Nuget многие люди помещали сторонние зависимости в систему управления версиями .... и извлекали их оттуда. Мне такой подход не нравится. Apache-Ivy имеет версию для командной строки, но требует обучения, за которое большинство разработчиков .NET не будут платить, но это было довольно хорошее решение до Nuget. Nuget - это разновидность двоичного хостинга и поиска от Microsoft. Но НИКОГДА не ссылайтесь из папок / bin или / obj. - person granadaCoder; 05.03.2015