我试图在Visual Studio 2010中创建用于代码生成的自定义工具。首先我注册了它:
"$(FrameworkSDKDir)Bin\NETFX 4.0 Tools\gacutil.exe" /if "$(TargetPath)"
然后我通过reg键添加它:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\CLSID\{6A96476E-74F3-4AB3-9CCA-F15EC6104D84}]
"RuntimeVersion"="v4.0.30319"
"Class"="MapBuildTool.MapFileGenerator"
"Assembly"="MapBuildTool, Version=1.0.0.0, Culture=en-US, PublicKeyToken=7d8abca94a1e38ae"
"ThreadingModel"="Both"
"InprocServer32"="C:\\Windows\\SysWOW64\\mscoree.dll"
@="MapBuildTool"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Generators\{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}\MapBuildTool]
"CLSID"="{6A96476E-74F3-4AB3-9CCA-F15EC6104D84}"
"GeneratesDesignTimeSource"=dword:00000001
@="MapBuildTool"
然后,Visual Studio说:
Cannot find custom tool 'MapBuildTool' on this system.
好...现在呢?找不到自定义工具注册表项吗?它找到 key 了,但是在装配件时遇到麻烦了吗?它是否加载了程序集,但是无法实例化类...?我可以在哪里找到哪些日志/地方以查找问题所在?
最佳答案
我遇到了一个我昨天写的自定义工具的问题。极其沮丧。 reg文件是正确的,自定义工具在Experimenting Hive中运行完美。但是它只是拒绝在常规的VisualStudio中运行。
我猜想VisualStudio会读取注册表,然后将注册表的某些部分缓存到某个地方。
执行以下操作似乎会重置此缓存
devenv /setup
执行完此操作后,我的自定义工具运行完美。