Почему Visual Studio удаляет букву диска из AssemblyReference RelativePath при редактировании проекта? - PullRequest
1 голос
/ 14 октября 2010

используя 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 ]

3 голосов
/ 14 октября 2010

Как утверждают другие люди, основная проблема заключается в том, что в среде IDE требуются относительные пути для ссылок. Это значительно упрощает совместное использование проекта / решения несколькими разработчиками, которые могут иметь очень разные настройки компьютера.

EDIT

Как указал Ганс, этот вопрос касается 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>
1 голос
/ 14 октября 2010

IDE действительно любит относительные пути, потому что абсолютные очень хрупкие.Ваша сборка также будет повреждена, если диск R: не будет правильно отображен.Но это поправимо: Project + Properties, Common Properties, Framework и References.Добавьте путь R: \ в список «Дополнительные пути поиска ссылок».

1 голос
/ 14 октября 2010

Эта страница может дать вам некоторое представление, особенно важным является комментарий о параметре «RelativePath»: «Относительный путь - отображает относительный путь от каталога проекта до указанной сборки».http://msdn.microsoft.com/en-us/library/47w1hdab.aspx

Проблема в том, что он всегда будет сбрасывать его относительно проекта.

...