У меня есть две версии одного и того же проекта. Оба имеют ссылку на одну и ту же DLL, но в разных местах.
Первый csproj
включает:
<Reference Include="Microsoft.Expression.Effects, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\3rdParty\Microsoft\Microsoft.Expression.Effects.dll</HintPath>
</Reference>
Второй csproj
, использующий пакет NuGet, включает:
<Reference Include="Microsoft.Expression.Effects, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\3rdParty\NuGet\packages\Microsoft.SDK.Expression.Blend.1.0.0\lib\net45\Microsoft.Expression.Effects.dll</HintPath>
</Reference>
Я пытаюсь понять причину этого. Могу ли я использовать для них тот же путь подсказки? Что выбрать?
1 ответ
Первый проект
Microsoft.Expression.Effects.dll
был скопирован в каталог ..\..\..\3rdParty\Microsoft\
вручную, а затем на него ссылались в Visual Studio, например, щелкните правой кнопкой мыши проект, затем Добавить> Ссылка ...> Обзор ... и выберите DLL в соответствующем каталоге.
Ваш бывший коллега, скорее всего, скопировал библиотеку из локальной установочной папки Expression Blend SDK ( или где-то еще ) в папку в решении, чтобы она всегда была доступна. В противном случае на библиотеку будет ссылаться из локальной установочной папки, и всем, кто работает над проектом, придется установить SDK в то же место, иначе ссылка не будет найдена.
Второй проект
Во втором случае пакет NuGet был установлен в проект через packages.config
. Это всего лишь один механизм для управления пакетами в вашем проекте, который хранит информацию о связанных пакетах в файле с именем packages.config
в вашем проекте. Чтобы установить пакет, щелкните правой кнопкой мыши проект и выберите Управление пакетами NuGet ... . На вкладке Установлено вы увидите, что используете пакет Microsoft.SDK.Expression.Blend
.
Пакет может содержать множество различных артефактов, например библиотеки DLL. Сила пакетов заключается в том, что вы можете управлять зависимостями намного удобнее, чем с помощью обычного способа ссылки на библиотеки DLL, как в первом проекте. Когда вы устанавливаете пакет, в файле проекта автоматически будут ссылки на содержащиеся в нем библиотеки. Вы не добавляете и не изменяете эти ссылки самостоятельно, менеджер пакетов сделает это за вас. Давайте посмотрим на HintPath
.
..\..\..\3rdParty\NuGet\packages\
- это корневой путь, по которому пакеты устанавливаются и извлекаются.Microsoft.SDK.Expression.Blend.1.0.0\
- корень конкретного пакета в версии1.0.0
lib\net45\
- это внутренний путь пакета для библиотек для .NET Framework> = 4.5
Могу ли я использовать для них тот же путь подсказки? Что выбрать?
Как видите, вопрос скорее в том, следует ли вам использовать пакеты NuGet или справочные библиотеки вручную. Это зависит от требований вашего проекта. В общем, я рекомендую использовать пакеты NuGet, поскольку они значительно упрощают управление зависимостями. Однако, если для нужной библиотеки нет пакета, вам придется добавлять ссылки самостоятельно.
Похожие вопросы
Новые вопросы
visual-studio
Используйте этот тег, если у вас есть определенный вопрос о функциях и функциональности Visual Studio. Не используйте этот тег по вопросам, касающимся кода, который просто случился, чтобы написано в Visual Studio. Подумайте о том, чтобы пометить точную область технологии Вашего вопроса Ссылки, а также помечения более конкретной версии Visual Studio. Пожалуйста, укажите вашу точную версию VS, выпуск и уровень обновления в своем вопросе. Не используйте этот тег на вопросы относительно кода VS.
..\..\..\3rdParty\Microsoft\Microsoft.Expression.Effects.dll
?t know i
проверю это. не могли бы вы объяснить, в чем разница между установленным и удаленным (но используемым) пакетом. и вообще, как мне подходить к дублированию использования dll, как здесь?