所有
这是我的问题here的后续跟进。
我的设置:
我想要达到的目的是:
=RTD()
的UDF - 调用Excel用户除了上一个要求,我基本上完成了。我唯一的问题是在不使用regasm.exe
的情况下在目标机器上注册RTD服务器和UDF。
我基本上希望客户端确实单击一次然后忘记它,特别是因为有数百个潜在用户,所有用户都在地理上分布在全世界。
此外,由于他们不精通技术,我不希望他们必须手动注册COM组件或类似的东西。
我不关心UDF和RTD服务器是否是一个单独的项目,只要我可以通过ClickOnce将它们与VSTO addin一起注册并注册。
我查看了免注册的COM,但不是因为我能够在我的VSTO插件中使用它。
我所做的是创建第二个项目(library class
)并尝试导出并注册它以用于COM互操作,然后将其包含到我的“主”项目中并在那里使用它:它要么不能编译({{{ 1}})或不注册。
互联网上有大量关于我的要求的不同部分的例子,但没有完整的monty。
我完全偏离了这里吗?有人可以指出我正确的方向,理想情况下提供一些示例代码/配置?
干杯, 澈
答案 0 :(得分:2)
在Frank上面提供的链接的帮助下,我终于在我的ThisAddin
课程中完成了这项工作:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
RegistrationServices regsrv = new RegistrationServices();
if (!regsrv.RegisterAssembly(GetType().Assembly, AssemblyRegistrationFlags.SetCodeBase))
{
throw new Exception("Failed to register for COM Interop.");
}
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
RegistrationServices regsrv = new RegistrationServices();
if (!regsrv.UnregisterAssembly(GetType().Assembly))
{
throw new Exception("Failed to unregister for COM Interop.");
}
}
我知道这不太理想,但至少我知道如果我的插件已启动,所有COM对象都已注册...
答案 1 :(得分:1)
这可以使用在安装期间运行RegAsm.exe的安装程序类来完成。看到: How to register a .NET CCW with regasm from a Visual Studio 2008 Setup project
希望这有帮助, 弗兰克