C# 已打包的Excel加载项无法使用Excel DNA c创建#
我有一个使用Excel DNA c#创建的加载项。 一切正常。 我已将所需的dll打包到.dna文件中。我的dna文件如下C# 已打包的Excel加载项无法使用Excel DNA c创建#,c#,excel,excel-dna,C#,Excel,Excel Dna,我有一个使用Excel DNA c#创建的加载项。 一切正常。 我已将所需的dll打包到.dna文件中。我的dna文件如下 <DnaLibrary RuntimeVersion="v4.0" Language="C#"> <ExternalLibrary Path="ExcelAddInClient.dll" Pack="true"/> <ExternalLibrary Path="Newtonsoft.Json.dll" Pack="true"/
<DnaLibrary RuntimeVersion="v4.0" Language="C#">
<ExternalLibrary Path="ExcelAddInClient.dll" Pack="true"/>
<ExternalLibrary Path="Newtonsoft.Json.dll" Pack="true"/>
<ExternalLibrary Path="System.Net.Http.Formatting.dll" Pack="true"/>
<ExternalLibrary Path="AuthenticationDll.dll" Pack="true"/>
</DnaLibrary>
当我双击Release文件夹中的打包文件时,它工作正常。但如果我将该xll文件复制到其他位置,它将不工作。它不会显示任何错误,但也不会显示所需的输出。
我不明白为什么???您可能缺少一些DLL或其他必要的文件。查看发布文件夹,看看还有什么 您可以尝试将所有其他文件与打包的xll一起复制,然后逐个删除这些其他文件,以查看哪些文件是必需的。然后将这些额外的必要文件添加到dna文件中
另外,您知道可以调试到Excel吗?使用Visual Studio中的“调试”/“附加到进程”,然后连接到Excel。然后从Excel中打开xll。这将有望向您显示错误。正如Mark所述,您可能丢失了一些DLL,或者它们没有包含在打包中。 我发现,如果事情没有按预期进行,您确实需要注意构建命令的输出
DLL需要存在并在部署计算机上注册,或者需要包含在Visual Studio输出目录中,以便打包包含它们。如果找不到它们,它不会将任何错误标记到Visual Studio,它只会在输出窗口中告知这些错误。应使用.dna文件中的
ExternalLibrary
标记仅引用Excel加载项程序集
所有其他组件应使用参考
例如
在我的例子中,我通过查看编译步骤的输出解决了这个问题
View..Output
应该没有明显的错误。它应该是这样的:
1>------ Build started: Project: ExcelDNA2, Configuration: Release Any CPU ------
1> ExcelDNA2 -> H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2.dll
1> H:\Test\Docs\SpecsProofOfConcept\\packages\ExcelDna.AddIn.0.33.9\tools\ExcelDna.xll
1> 1 File(s) copied
1> H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn.dna
1> 1 File(s) copied
1> H:\Test\Docs\SpecsProofOfConcept\\packages\ExcelDna.AddIn.0.33.9\tools\ExcelDna64.xll
1> 1 File(s) copied
1> Using base add-in H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn.xll
1> -> Updating resource: Type: ASSEMBLY_LZMA, Name: EXCELDNA.INTEGRATION, Length: 63672
1> ~~> ExternalLibrary path ExcelDNA2.dll resolved to H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2.dll.
1> -> Updating resource: Type: ASSEMBLY_LZMA, Name: EXCELDNA2, Length: 1605
1> -> Updating resource: Type: DNA, Name: __MAIN__, Length: 417
1> Completed Packing H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn-packed.xll.
1> Using base add-in H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn64.xll
1> -> Updating resource: Type: ASSEMBLY_LZMA, Name: EXCELDNA.INTEGRATION, Length: 63672
1> ~~> ExternalLibrary path ExcelDNA2.dll resolved to H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2.dll.
1> -> Updating resource: Type: ASSEMBLY_LZMA, Name: EXCELDNA2, Length: 1605
1> -> Updating resource: Type: DNA, Name: __MAIN__, Length: 417
1> Completed Packing H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn64-packed.xll.
1> H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn64.dna
1> 1 File(s) copied
1> H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn64.xll
1> 1 File(s) copied
========== Build: 1 succeeded, 0 failed, 15 up-to-date, 0 skipped ==========
在我的例子中,它在构建输出中打印了许多null引用
异常
事实证明,我创建了一个控制台
应用程序,而不是类库
,当添加NuGet包时,它创建了指向ExcelDNSA2.exe
的.dna
文件,而不是ExcelDNSA2.dll
修好这个,一切都会很顺利
1>------ Build started: Project: ExcelDNA2, Configuration: Release Any CPU ------
1> ExcelDNA2 -> H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2.dll
1> H:\Test\Docs\SpecsProofOfConcept\\packages\ExcelDna.AddIn.0.33.9\tools\ExcelDna.xll
1> 1 File(s) copied
1> H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn.dna
1> 1 File(s) copied
1> H:\Test\Docs\SpecsProofOfConcept\\packages\ExcelDna.AddIn.0.33.9\tools\ExcelDna64.xll
1> 1 File(s) copied
1> Using base add-in H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn.xll
1> -> Updating resource: Type: ASSEMBLY_LZMA, Name: EXCELDNA.INTEGRATION, Length: 63672
1> ~~> ExternalLibrary path ExcelDNA2.dll resolved to H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2.dll.
1> -> Updating resource: Type: ASSEMBLY_LZMA, Name: EXCELDNA2, Length: 1605
1> -> Updating resource: Type: DNA, Name: __MAIN__, Length: 417
1> Completed Packing H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn-packed.xll.
1> Using base add-in H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn64.xll
1> -> Updating resource: Type: ASSEMBLY_LZMA, Name: EXCELDNA.INTEGRATION, Length: 63672
1> ~~> ExternalLibrary path ExcelDNA2.dll resolved to H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2.dll.
1> -> Updating resource: Type: ASSEMBLY_LZMA, Name: EXCELDNA2, Length: 1605
1> -> Updating resource: Type: DNA, Name: __MAIN__, Length: 417
1> Completed Packing H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn64-packed.xll.
1> H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn64.dna
1> 1 File(s) copied
1> H:\Test\Docs\SpecsProofOfConcept\ExcelDNA2\bin\Release\ExcelDNA2-AddIn64.xll
1> 1 File(s) copied
========== Build: 1 succeeded, 0 failed, 15 up-to-date, 0 skipped ==========