Не удается найти пользовательский инструмент AGDataSetGenerator в этой системе

Я унаследовал устаревшее приложение.Net 3.5 VB для поддержки от клиента, и они хотели бы внести небольшие изменения в данные. Прежде чем мы начнем, я думаю, что важно отметить, что я использую 64-битную Windows 7 и VS 2013 Ultimate R2.

Внося свои первые изменения в проект, я заметил, что их наборы данных используют специальный инструмент AGDataSetGenerator (написанный Шоном Вильдермутом в 2004 году). Я много ковырялся в том, как регистрировать пользовательские инструменты. Я перешел на http://www.codeproject.com/Articles/8582/Inherit-from-ADO-NET-DataSet-to-create-your-own-bu и получил исходный код инструмента, внутри проекта там это пара служебных файлов, которые вам нужно запустить, чтобы зарегистрировать инструмент. Помните, что это было сделано в 2004 году, так что тогда все было немного иначе.

Я изменил файл Reg.cmd так, чтобы он указывал на v2.0.50727, так как мой проект работает с.Net 3.5, а.Net 3.0 и 3.5 являются лишь незначительными обновлениями.Net 2.0, а не полностью новыми версиями.net. Также я заметил, что есть папка Framework и Framework64 с папкой C:\Windows\Microsoft.Net, поэтому я добавил оба местоположения в мой файл.cmd в надежде охватить все мои базы. Код ниже

Reg.cmd - Оригинал

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\regasm /codebase /verbose F:\AGDataSetGenerator.dll`

Reg.cmd - моя модифицированная версия

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm /codebase /verbose F:\AGDataSetGenerator.dll
C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\regasm /codebase /verbose F:\AGDataSetGenerator.dll

Тогда это было в файле.reg.

При открытии файла моей первой мыслью было: "Круто, я могу просто переключить версию с 7.1 на 12.0 и понеслось". Не тот случай. После долгого поиска я обнаружил, что первая строка регистрирует инструмент для VB.Net, а вторая запись реестра регистрирует инструмент для C#, поэтому для меня мне нужна только первая строка, также VS теперь через сутки регистрируется в новом месте HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\ для 64-битных специфических регистров. В надежде еще раз охватить мои базы, я попытался включить как 32-битные, так и 64-битные локации. Я даже добавил более глобальный регистр как для 32, так и для 64-разрядных систем, который, как надеются, укажет на визуальную студию для входа в генератор, к сожалению, я здесь немного не в своей рубке, так что я довольно сильно цеплялся за соломинку.

BSDataSetGenerators.reg - Оригинал

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Generators\{164B10B9-B200-11D0-8C61-00A0C91E29D5}\AGDataSetGenerator]
@="ADOGuy DataSet Generator"
"CLSID"="{87BF1B1C-E1DF-4f24-A07E-2BD9B8CAD316}"
"GeneratesDesignTimeSource"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Generators\{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}\AGDataSetGenerator]
@="ADOGuy DataSet Generator"
"CLSID"="{3C13044D-394D-45cd-89FF-51C885BFBCD9}"
"GeneratesDesignTimeSource"=dword:00000001

BSDataSetGenerators.reg - Моя модифицированная версия

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\12.0\CLSID\{87BF1B1C-E1DF-4f24-A07E-2BD9B8CAD316}]
@="AGDataSetGenerator"
"InprocServer32"="C:\\WINDOWS\\system32\\mscoree.dll"
"Class"="BottomLine.Generators.VBNETAGDataSetGenerator"
"Assembly"="AGDataSetGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=35e4ca7ea38d2508"
"ThreadingModel"="Both"

[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\12.0\CLSID\{87BF1B1C-E1DF-4f24-A07E-2BD9B8CAD316}]
@="AGDataSetGenerator"
"InprocServer32"="C:\\WINDOWS\\system32\\mscoree.dll"
"Class"="BottomLine.Generators.VBNETAGDataSetGenerator"
"Assembly"="AGDataSetGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=35e4ca7ea38d2508"
"ThreadingModel"="Both"

[HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\12.0\Generators\{164B10B9-B200-11D0-8C61-00A0C91E29D5}\AGDataSetGenerator]
@="AGDataSetGenerator"
"CLSID"="{87BF1B1C-E1DF-4f24-A07E-2BD9B8CAD316}"
"GeneratesDesignTimeSource"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\Generators\{164B10B9-B200-11D0-8C61-00A0C91E29D5}\AGDataSetGenerator]
@="AGDataSetGenerator"
"CLSID"="{87BF1B1C-E1DF-4f24-A07E-2BD9B8CAD316}"
"GeneratesDesignTimeSource"=dword:00000001

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

Сообщение об ошибке

Если кто-то может заставить это работать в аналогичных настройках с моими, я хотел бы знать, как вы это сделали.

2 ответа

Решение

Я очень тип человека, который считает, что очень трудно принять НЕТ за ответ, когда дело доходит до технологии. К сожалению, ответ здесь просто "Нет". Пользовательский инструмент очень устарел, и заставить его работать в VS 2013 просто невозможно (я все еще не могу заставить себя сказать невозможное).

Я пишу этот ответ, потому что у меня есть обходной путь, который я предлагаю любому в той же ситуации использовать прямо из ворот вместо того, чтобы пытаться заставить работать этот старый инструмент. В качестве обходного пути я создал новый проект данных в.Net 3.5 и использовал инфраструктуру сущностей для добавления только моделей, которые мне нужно было обновить. Я сгенерировал свои модели из базы данных, а затем перешел к кодам.aspx и заменил ссылки на устаревшие сгенерированные наборы данных. Потребовался некоторый рефакторинг, но использование EF вместо тех древних сгенерированных наборов данных сократило код примерно на 40%. Win Win на мой взгляд. Надеюсь, что это поможет кому-то еще в будущем.

Согласно старой ссылке.reg на VS 7.1, это означает, что она была создана для работы в VS 2003. Я знаю, что кодирование плагинов VS сильно изменилось в VS 2010 и более поздних выпусках. Таким образом, возможно, что этот плагин может работать только в VS 2003... возможно, вплоть до VS 2008. Но, возможно, его придется переписать, чтобы потом что-нибудь перерабатывать.

Надеюсь, у вас есть MSDN или знаете кого-то, кто делает. Я бы раскрутил виртуальную машину, установил VS 2003 (или вы могли попробовать до VS 2008) и установил этот плагин, используя оригинальный.reg/.cmd.

Другие вопросы по тегам