Проблема с «добавить ссылку» в Visual C # 2008 Express Edition после перехода с XP на Windows 7 - PullRequest
1 голос
/ 15 февраля 2010

У меня внезапно возникла большая проблема, которой у меня не было раньше.

В моем текущем проекте я хочу добавить ссылку на «Microsoft.Office.Interop.OneNote». Когда я открываю вкладку .NET диалогового окна «Добавить ссылку», сборки «Microsoft.Office» не доступны, как раньше; на моем компьютере следующая сборка после «Microsoft.JScript» называется «Microsoft.SqlServer.ConnectionInfo»; никаких следов каких-либо сборок Microsoft.Office. Я имел обыкновение делать это под Windows XP, но пару недель назад перешел на Windows 7. Я не знаю, имеет ли это какое-либо отношение к этому.

Я уже проверил, установлены ли сборки на моей машине, но я нашел все офисные сборки в целости и сохранности в "windows \ assembly". Как ни странно, ссылка на «Microsoft.Office.Interop.OneNote» в предыдущем проекте продолжает работать; Я просто не могу добавить какие-либо новые ссылки в диалоговом окне «Добавить ссылки», так как они больше не отображаются в списке ссылок .NET.

Любая помощь будет оценена.

С уважением,

Rainer

Ответы [ 3 ]

0 голосов
/ 15 февраля 2010

содержимое диалогового окна, которое вы видите с помощью «Добавить ссылку», фактически не загружается из GAC. Это некоторые настройки папки реестра для Visual Studio.

Возможно, вы установили таким образом, что библиотеки не являются частью этого набора. Тогда VS не будет показывать их в диалоге.

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

http://support.microsoft.com/kb/306149

0 голосов
/ 16 февраля 2010

Я думаю, что понял. Для тех, кто сталкивается с той же проблемой, есть интересный урок о некоторых менее известных функциях Windows:

Ссылка Марвина, упомянутая выше ...

http://support.microsoft.com/kb/306149

... говорит:

Чтобы отобразить сборку в диалоговом окне Добавить ссылку, вы можете добавить раздел реестра, например, следующий, который указывает на местоположение сборки

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\MyAssemblies]@="C:\\MyAssemblies"

где MyAssemblies - это имя папка, в которой находятся сборки.

Так я и сделал, заменив «myAssemblies» на «C: \ Windows \ Assembly».

Ничего не случилось.

Я изменил значение пустого стандартного ключа на «C: \ Windows \ Assembly».

Ничего.

Я пробовал несколько вариантов темы: двойной обратный слеш, заканчивающийся обратным слешем, возвращение сына обратного слеша. Никакой сигары.

Поэтому я попытался работать наоборот, пытаясь скопировать необходимую DLL из c: \ windows \ assembly в один из каталогов, которые отслеживаются в диалоге «добавить ссылку». На моей машине эти пути удобно перечислены в

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework \ v2.0.50727 \ AssemblyFoldersEx]

Когда я пытался скопировать dll из c: \ windows \ assembly, в контекстном меню не было опции «копировать». Drag'n'drop тоже не работал. Для этой проблемы я нашел несколько альтернативных решений здесь:

http://geekswithblogs.net/pavelka/archive/2006/05/05/WindowsExplorerAndTheGlobalAssemblyCache.aspx

Я выбрал решение 2:

Добавить ключ реестра DisableCacheViewer Другой способ отключить создание нового ключа dword в HKLM \ Software \ Microsoft \ Fusion \ с помощью nane DisableCacheViewer и установить для него значение [DWORD] 1. 1. 1041 *

После того, как я это сделал, я увидел структуру каталогов real ниже c: \ windows \ assembly; почти каждый DLL имеет свой собственный подкаталог. Как только DisableCacheViewer был установлен, я мог

  • пройти реальное дерево каталогов, которое было скрыто в c: \ windows \ assembly
  • скопируйте dll и вставьте их в один из каталогов, перечисленных в "AssemblyFoldersEx"
  • выведите правильный путь к моим библиотекам и создайте новый ключ к этому пути чуть ниже "AssemblyFoldersEx".

Большое спасибо всем, кто ответил, и особая благодарность Ханнесу Павелке, чья запись в блоге помогла решить мою проблему.

P.S .: Я почти уверен, что мне никогда не приходилось делать это под Windows XP. IIRC, все сборки взаимодействия были доступны без такого рода ошибок реестра.

0 голосов
/ 15 февраля 2010

Простите за возможно глупый вопрос.

Have you installed MS Office since you switched from XP to windows 7?

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

...