Как я могу сослаться на путь, хранящийся в реестре? - PullRequest
0 голосов
/ 01 февраля 2011

Как вставить в путь строку, хранящуюся в реестре в качестве 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]. Любая помощь по этому вопросу будет принята с благодарностью.

1 Ответ

0 голосов
/ 01 февраля 2011

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

Вот так Visual Studio восстанавливает ссылки из этой Статьи MSDN

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

  1. Найдите сборку в одной из папок проекта.Предполагается, что вы добавили сборку в проект с помощью параметра меню «Добавить существующий элемент».К папкам проекта относится любая папка, отображаемая обозревателем решений (кроме случаев, когда действует Показать все файлы).

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

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

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

  5. Найдите сборки COM-взаимодействия в подпапке obj под папкой проекта.Дополнительные сведения см. В разделе «Ссылки на COM-объекты».

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

HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders
HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\AssemblyFolders
...