Почему Visual Studio удаляет букву диска из AssemblyReference RelativePath при редактировании проекта?
Используя visual studio, мы всегда загружаем и создаем ссылки на модуль (R:). Проблема в том, что когда кто-то редактирует какие-либо свойства проекта, буква диска удаляется из пути сборки, и тогда сборочная машина не может собрать приложение.
Файл проекта выглядит следующим образом:
<References>
<AssemblyReference
RelativePath="R:\ClientContext.dll"
AssemblyName="ClientContext, Version=8.3.0.0, PublicKeyToken=255e4d2a8e3ef422, processorArchitecture=MSIL"
MinFrameworkVersion="131072"
/>
И после редактирования любого свойства:
<References>
<AssemblyReference
RelativePath="ClientContext.dll"
AssemblyName="ClientContext, Version=8.3.0.0, PublicKeyToken=255e4d2a8e3ef422, processorArchitecture=MSIL"
MinFrameworkVersion="131072"
/>
Файлы проекта - vcproj, не знаю, происходит ли это и в других форматах.
Заранее спасибо товарищи.
3 ответа
Эта страница может дать вам некоторое представление, особенно важным является комментарий о параметре "RelativePath": "Относительный путь - отображает относительный путь от каталога проекта до ссылочной сборки". http://msdn.microsoft.com/en-us/library/47w1hdab.aspx
Проблема в том, что он всегда будет сбрасывать его по отношению к проекту.
Как утверждают другие люди, основная проблема заключается в том, что IDE хочет иметь относительные пути для ссылок. Это значительно упрощает совместное использование проекта / решения несколькими разработчиками, которые могут иметь очень разные настройки компьютера.
РЕДАКТИРОВАТЬ
Как указал Ганс, этот вопрос касается C++, который не поддерживает понятие HintPath в файле проекта. В случае, если пользователь C#, VB.Net или F# столкнется с вопросом
Одним из способов обойти это является использование подузла HintPath в Reference. Это дает IDE подсказку, где искать при разрешении относительного пути.
<References>
<AssemblyReference
RelativePath="ClientContext.dll"
AssemblyName="ClientContext, Version=8.3.0.0, PublicKeyToken=255e4d2a8e3ef422, processorArchitecture=MSIL"
MinFrameworkVersion="131072">
<HintPath>R:\ClientContext.dll</HintPath>
</AssemblyReference>
IDE действительно любит относительные пути, потому что абсолютные очень хрупкие. Ваша сборка также будет повреждена, если диск R: не будет правильно отображен. Но это поправимо: Project + Properties, Common Properties, Framework и References. Добавьте путь R:\ в список "Дополнительные пути поиска ссылок".