0

Как вставить строку, сохраненную в REG_SZ в реестре, в путь? То, что я пытаюсь сделать, это установить ссылки .csproj на предопределенный путь в нашем реестре, но когда я просматриваю все, что я вижу, так это то, как переменная% PATH% env хранится в реестре. Вот пример того, что я пытаюсь сделать:Как ссылаться на путь, хранящийся в реестре?

<Reference Include="Interop.SienaASAP2, Version=1.3.0.0, Culture=neutral, PublicKeyToken=89a52a4f35bb97a3, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\..\..\Bin\Interop.SienaASAP2.dll</HintPath> 
</Reference> 

Где «.. \ .. \ .. \» есть, я хотел бы, например, вставить путь в [HKEY_CURRENT_USER \ Software \ MyCompany \ DefaultVersion \ Folder]. Любая помощь по этому вопросу будет принята с благодарностью.

+0

Просто для уточнения вы хотите открыть проект и разрешить ли Visual-Studio ссылочную DLL, используя путь, хранящийся в значении реестра? –

+0

Да. До сих пор я уклонился от этой проблемы, включив в нее подробные инструкции о том, как установить ссылочный путь с помощью Visual Studio для наших конечных пользователей, но я предпочел бы, чтобы он мог строить, когда наши клиенты просто попали в Rebuild Solution. –

+0

Это обновление; У меня был установщик, создавший значение реестра в [HKCU \ Environment], чтобы в следующий раз, когда машина перезагрузилась, вы можете ссылаться на путь в проводнике через% MxVDefaultPath%. Проблема заключается в том, что Visual Studio, похоже, не соблюдает эту переменную, когда я заменяю «.. \ .. \ .. \» на «% MxVDefaultPath% \» (хотя я проверял, что эта переменная действительно работает, ссылаясь на нее в cmd или Explorer). –

ответ

0

Использование неподходящего поведения вы не можете использовать визуальную студию HintPath, ссылаясь на переменную среды.

Это, как Visual Studio resovles ссылки формируют этот MSDN Article

Во время сборки, Visual Studio .NET разрешает ссылки на сборки с помощью поиска в следующих местах в следующий порядок:

  1. Ищите сборку в одной из папок проекта. Это предполагает, что вы добавили сборку к проекту с помощью меню Добавить существующий пункт . Папки проекта включают любую папку , отображаемую в обозревателе решений (за исключением случаев, когда Show All Files находится в ).

  2. Посмотрите в папках, перечисленных в атрибуте ReferencePath элемента в рамках проекта файла настроек . Этот атрибут может быть содержит список с разделителями-запятыми .

  3. Используйте <HintPath> элемент в файл проекта.

  4. Посмотрите набор папок, указанных в параметрах реестра. Это те, которые содержат собранные сборки на вкладке .NET диалогового окна Добавить ссылки . Для получения дополнительной информации см. Использование вкладки .NET диалогового окна «Добавить» .

  5. Ищите сборки COM Interop в подпапке obj под проектом папка. Для получения дополнительной информации см. Ссылка на объекты COM.

Однако что четвертый вариант может помочь вам просто добавить свои пути к одному из этих ключей реестра, а затем он будет работать без баловаться с HintPath

HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders 
HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\AssemblyFolders 
Смежные вопросы