Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有Excel的情况下使用由C#开发的ExcelDNA XLL_C#_Excel_Excel Dna - Fatal编程技术网

如何在没有Excel的情况下使用由C#开发的ExcelDNA XLL

如何在没有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构建了C#中的XLL,如中所述——当从Excel进行测试时,一切都正常

我们希望能够在其他.NET项目中使用这个XLL——换句话说,我们如何从.NET“托管”这个XLL?XLL似乎不是一个 有效的.NET程序集--因此我无法将其添加为对其他项目的.NET引用

它是通过ExcelDna.Integration dll(一个.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
  • 等等

在上述示例中:

  • Functions.dll
    不引用任何Excel DNA程序集,它不通过COM公开任何内容。它应该有尽可能少的依赖关系(理想情况下没有!)

  • ExcelAddIn.dll
    建立了通往Excel DNA的桥梁,并公开了Excel可以通过Excel DNA调用的Excel函数。这些函数只是将调用转发到
    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
  • 等等

在上述示例中:

  • Functions.dll
    不引用任何Excel DNA程序集,它不通过COM公开任何内容。它应该有尽可能少的依赖关系(理想情况下没有!)

  • ExcelAddIn.dll
    建立了通往Excel DNA的桥梁,并公开了Excel可以通过Excel DNA调用的Excel函数。这些函数只是将调用转发到
    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++调用你的程序集。我想要