如何在没有Excel的情况下使用由C#开发的ExcelDNA XLL
我们使用Excel DNA构建了C#中的XLL,如中所述——当从Excel进行测试时,一切都正常 我们希望能够在其他.NET项目中使用这个XLL——换句话说,我们如何从.NET“托管”这个XLL?XLL似乎不是一个 有效的.NET程序集--因此我无法将其添加为对其他项目的.NET引用 它是通过ExcelDna.Integration dll(一个.net程序集)完成的吗如何在没有Excel的情况下使用由C#开发的ExcelDNA XLL,c#,excel,excel-dna,C#,Excel,Excel Dna,我们使用Excel DNA构建了C#中的XLL,如中所述——当从Excel进行测试时,一切都正常 我们希望能够在其他.NET项目中使用这个XLL——换句话说,我们如何从.NET“托管”这个XLL?XLL似乎不是一个 有效的.NET程序集--因此我无法将其添加为对其他项目的.NET引用 它是通过ExcelDna.Integration dll(一个.net程序集)完成的吗 谢谢Excel DNA只是Excel和.NET程序集之间的粘合剂 如果要重用Excel DNA加载项加载的.NET程序集中的功
谢谢Excel DNA只是Excel和.NET程序集之间的粘合剂 如果要重用Excel DNA加载项加载的.NET程序集中的功能(即
XLL
),则无需使用XLL
。。。您只需要加载XLL
的.NET程序集-在.NET应用程序中添加对的引用即可。。。就像其他类库一样
换句话说,在Excel dna用来确定加载内容的.dna
文件中,您有如下内容:
<DnaLibrary Name="Your Add-In" RuntimeVersion="v4.0">
<ExternalLibrary Path="YourAssembly.dll" ExplicitExports="false" ... />
</DnaLibrary>
YourAssembly.dll
已经是包含暴露于Excel DNA的函数的.NET程序集
更重要的是,如果您知道您的函数将有不同的.NET“客户端”,那么您应该为此进行设计,将可重用函数隔离在专用程序集中,并让您的Excel DNA程序集引用该程序集,并将函数公开给Excel,而不是强制客户端依赖Excel DNA程序集 e、 g
- C#类库
(不引用任何内容)Functions.dll
- C#类库
(参考ExcelAddIn.dll
)Functions.dll
- C#App
(参考MyCsApp.exe
)Functions.dll
- C#类库
(参考FunctionsComInterop.dll
)Functions.dll
- C++应用程序
(调用MyCppApp.exe
)FunctionsComInterop.dll
- 等等
不引用任何Excel DNA程序集,它不通过COM公开任何内容。它应该有尽可能少的依赖关系(理想情况下没有!)Functions.dll
建立了通往Excel DNA的桥梁,并公开了Excel可以通过Excel DNA调用的Excel函数。这些函数只是将调用转发到ExcelAddIn.dll
程序集。。。没别的了functions.dll
<> >代码>函数COMIONDOP。DLL< /Cuff>将桥架设为C++,并公开C++程序调用的COM函数。这些函数只是将调用转发到
functions.dll
程序集。。。没别的了
Excel DNA只是Excel和.NET程序集之间的粘合剂 如果要重用Excel DNA加载项加载的.NET程序集中的功能(即
XLL
),则无需使用XLL
。。。您只需要加载XLL
的.NET程序集-在.NET应用程序中添加对的引用即可。。。就像其他类库一样
换句话说,在Excel dna用来确定加载内容的.dna
文件中,您有如下内容:
<DnaLibrary Name="Your Add-In" RuntimeVersion="v4.0">
<ExternalLibrary Path="YourAssembly.dll" ExplicitExports="false" ... />
</DnaLibrary>
YourAssembly.dll
已经是包含暴露于Excel DNA的函数的.NET程序集
更重要的是,如果您知道您的函数将有不同的.NET“客户端”,那么您应该为此进行设计,将可重用函数隔离在专用程序集中,并让您的Excel DNA程序集引用该程序集,并将函数公开给Excel,而不是强制客户端依赖Excel DNA程序集 e、 g
- C#类库
(不引用任何内容)Functions.dll
- C#类库
(参考ExcelAddIn.dll
)Functions.dll
- C#App
(参考MyCsApp.exe
)Functions.dll
- C#类库
(参考FunctionsComInterop.dll
)Functions.dll
- C++应用程序
(调用MyCppApp.exe
)FunctionsComInterop.dll
- 等等
不引用任何Excel DNA程序集,它不通过COM公开任何内容。它应该有尽可能少的依赖关系(理想情况下没有!)Functions.dll
建立了通往Excel DNA的桥梁,并公开了Excel可以通过Excel DNA调用的Excel函数。这些函数只是将调用转发到ExcelAddIn.dll
程序集。。。没别的了functions.dll
<> >代码>函数COMIONDOP。DLL< /Cuff>将桥架设为C++,并公开C++程序调用的COM函数。这些函数只是将调用转发到
functions.dll
程序集。。。没别的了
您的具体目标是什么?您希望从C#应用程序中使用XLL中的哪些内容?假设它是一组进行财务计算的C#类--我希望能够从不同的内部.NET程序中使用它们请参见下面的答案您的目标是什么?您希望从C#应用程序中使用的XLL内部是什么?假设它是一组进行财务计算的C#类--我希望能够从不同的内部.NET程序中使用它们。请参阅下面的答案谢谢。如果调用语言是C++,我想使用COM?我们如何将这个(或这些)DLL/XLL拉进C++客户端?谢谢辛:在这种情况下,你必须通过COM互操作来公开C函数,并让C++调用你的程序集。我想要