Как легко переключать ссылочные пути для сборки? - PullRequest
3 голосов
/ 24 сентября 2010

У меня есть проект, предназначенный для программного обеспечения.Поэтому я ссылаюсь на библиотеки DLL для этого программного обеспечения в своем проекте, чтобы я мог кодировать и создавать несколько хороших плагинов и расширений для программного обеспечения через их API.

Проблема заключается в том, что программное обеспечение имеет много разновидностей: Enterprise, Lite, версия 1.6, версия 1.7, версия 2.0 и т. д. Если я хочу, чтобы мой проект работал для всех этих разных версий, я должен продублировать свой проект и повторно указать ссылки DLL на библиотеку DLL соответствующей версии программного обеспечения (я делаю этосейчас).Это действительно раздражает, потому что моя кодовая база одинакова для всех версий, поэтому, когда я делаю какие-либо обновления, мне нужно синхронизировать все мои дублированные проекты, чтобы у меня была сборка для каждой версии программного обеспечения.

Есть ли способчто у меня может быть один проект, но перед сборкой выберите версию программного обеспечения для сборки?Я думаю, что я ищу простой способ обновить пути ссылок на DLL в моем проекте.Буду признателен за любые идеи или советы.

(я могу использовать Visual Studio 2008 или 2010 и .NET 3.5 или 4.0, если это поможет)

Ответы [ 5 ]

8 голосов
/ 24 сентября 2010

У меня очень ограниченный опыт работы с файлами проекта напрямую, но я почти уверен, что вы можете добавить условия ко многим различным настройкам.В вашем случае вы можете добавить условие либо к Reference, либо к ассоциированному ItemGroup.

. Тогда вы можете сделать что-то вроде:Идея есть.Я считаю, что это выполнимо таким образом.

2 голосов
/ 24 сентября 2010

Измените элемент HintPath в файле проекта (как уже упоминалось в других ответах, IMO не очень хорошая идея, потому что Visual Studio использует это поле для хранения того, куда оно должно смотреть, если во всех других «хороших» ничего не найдено),В нашей компании у нас похожая ситуация.Мы решили эту проблему, установив ReferencePath для каждого проекта в решении.

Делать это вручную очень раздражает, если вам приходится делать это для больших решений.Из-за этого мы написали AddIn для VS, который сделает это для нас.Настроить ReferencePath проекта очень просто, поэтому я думаю, что эту задачу также можно выполнить с помощью макроса VS.

Вот код для установки ReferencePath с помощью Marco:

    Sub SetReferencePath()
    Dim project As Project

    For Each project In DTE.Solution.Projects

        If project.Kind = CodeModelLanguageConstants.vsCMLanguageCSharp Then
            project.Properties.Item("ReferencePath").Value = "PATH1;PATH2;..."

        End If

    Next
    End Sub

Значением свойства ReferencePath является список путей, разделенных точкой с запятой.Другое преимущество использования ReferencePath вместо установки элемента подсказки состоит в том, что вы можете использовать абсолютные пути на разных дисках, что, по-моему, невозможно с элементом подсказки.

0 голосов
/ 17 октября 2018

используйте $(configuration) и $(ProjectVersion) в пути ссылки для переключения ссылок.

  1. $(configuration) - это «Отладка» или «Выпуск» или любая другая настраиваемая конфигурация.
  2. $(ProjectVersion) - ваша среда жизнеспособна.

, чтобы вы могли завершить все ссылки в одну строку, и это более надежно при отладке и выпуске:

    <Reference Include="YourLibrary">
        <HintPath>..\bin\$(configuration)\$(ProjectVersion)\YourLibrary.dll</HintPath>
    </Reference>

если ваши папки имеют префикс или суффикс, вы можете присоединить его в строке, например:

    <Reference Include="YourLibrary">
        <HintPath>..\bin\$(configuration)-test\Lib-$(ProjectVersion)\YourLibrary.dll</HintPath>
    </Reference>
0 голосов
/ 24 сентября 2010

Файлы Visual Studio 2008 и 2008 .csproj представляют собой файлы XML. Путь к ссылкам - это простые строки в этих XML-файлах. Если вы открываете .csproj в текстовом редакторе, вы можете проверить это (посмотрите на «HintPath» или отметьте http://geekswithblogs.net/murraybgordon/archive/2005/10/25/58103.aspx).

Что вы можете сделать, это написать небольшую программу, которая автоматизирует сборку для различных ссылочных путей. Сборку Visual Studio можно автоматизировать с помощью DEVENV.EXE, подробнее см. http://msdn.microsoft.com/en-us/library/xee0c8y7(VS.80).aspx.

0 голосов
/ 24 сентября 2010

Я думаю, что вы можете просто создать несколько конфигураций и добавить некоторую логику msbuild в proj-файл, чтобы условно установить свойство пути ссылки и заставить ваши ссылки использовать это свойство. Если вы знакомы с редактированием XML в файле проекта, то это не составит труда; если нет, то ... надеюсь, кто-то еще поможет с подробностями.

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