2016-07-28 106 views
0

在Visual Studio中,我有一个解决方案。在那个解决方案中,我有2个项目。一个是VSTO,所以我们可以为Excel创建一个插件。另一个项目用于创建.xll文件,以便我们可以拥有自定义函数。VSTO和.XLL之间的通信

VSTO帮助我们在excel上创建一个登录系统,以便他们可以做某些事情。

但是,由于我们只希望我们的用户能够使用我们的自定义功能,他们必须登录。我认为这两个项目不能直接通信,因此.xll插件不会知道用户是登录或不。

这两个项目是否有交流?也许通过一个像静态变量类的中间人?

编辑:
的更多信息:
这两个项目都是用C#编写代码。我可以使用ExcelDNA为.xll文件做到这一点。

因此,如果有任何方法可以创建一个C#类,它可以在两个项目之间协调或共享数据,这将非常棒。由于登录数据不是我们想分享的唯一内容。

我希望在类中会有一个静态布尔变量来保存用户是否登录。所以VSTO可以设置布尔值,而.xll可以得到它。

回答

0

我会使用授权系统让用户验证许可证密钥。这个过程可以在VSTO内进行。然后我会使用两个检查:

  1. 如果在VSTO中许可证密钥已验证,则加载xll,否则请不要加载它。
  2. 在xll中,通过使用相对路径,我会再次找到并检查许可证密钥(以防止用户直接加载xll)。

它只是需要能够检查C#(VSTO)和C(Xll)中的许可证密钥,即具有以两种语言实现的验证密钥算法。

+0

嗨,我忘了提及,我是一个初学者,我对你提出的建议没有太多的想法。感谢您的帮助 –

1

您可以向.xll添加一个隐藏函数[ExcelFunction(IsHidden = true)],您可以使用Application.Run从VSTO加载项调用该函数。

+0

无论如何,我可以在两个项目之间共享数据吗?如果没有,是否可以使用ExcelDNA在我的VSTO中创建UDF? –

+0

VSTO不允许您制作UDF。您可以完全摆脱VSTO部分,并将所有内容放入Excel-DNA加载项中。隐藏函数是在两个加载项之间传递数据的简单方法。还有其他方法,但它们很复杂。 Excel-DNA Google组更适合一般性讨论。 – Govert