我继承了一个旧的 .Net 3.5 VB 应用程序来支持客户端,他们希望对数据进行一些小的更改。在我们开始之前,我认为重要的是要注意我正在运行 Windows 7 64 位和 VS 2013 Ultimate R2。
在对项目进行第一次更改时,我注意到他们的数据集使用自定义工具 AGDataSetGenerator(由 Shawn Wildermuth 于 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 版本。此外,我注意到 C:\Windows\Microsoft.Net 文件夹中同时存在一个 Framework 和一个 Framework64 文件夹,因此我将这两个位置都添加到了我的 .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 位添加了一个更全局的寄存器,希望能将 Visual Studio 指向生成器条目,不幸的是我有点不在我的驾驶室里,所以我几乎抓住了稻草。
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
不管我尝试过的一切。当我右键单击数据集并尝试运行自定义工具时。砰!我得到以下信息:
如果有人可以在与我自己类似的设置中使其工作,我很想知道您是如何做到的。