Excel DNA - 使用配置转换的最佳方式



我有一个项目,我们称之为"ProjectX",需要使用Excel DNA。开发是成功的,但是,我无法解决一个问题。在针对不同环境(例如 DEV、UAT 和 PROD(生成时,该项目使用配置转换来更新 app.config 中的值。

问题是:当我为特定环境(如 DEV(构建时,app.config会按预期转换。但是,ProjectX-AddIn64-packed.xll.config不会转换,这是Excel DNA在XLL中使用的配置。我不知道该怎么做,任何帮助将不胜感激。

约束:我只能部署一个文件,即 XLL。

我尝试/研究过的事情:

  1. app.config重命名为ProjectX-AddIn64-packed.xll.config
  2. 使用 Visual Studio 生成事件
  3. 编辑ExcelDna.Build.props以尝试覆盖默认的构建/打包过程

在撰写本文时,Excel-DNA目前不支持App.config转换。目前的一种解决方法是在应用转换后,在生成结束时将.xll.config文件替换为.dll.config文件的内容。

您可以选择许多不同的方法来进行此文件替换...例如,可以在生成后事件中运行脚本,或者将新的 MSBuild 目标添加到在复制文件的ExcelDnaBuild任务之后运行的.csproj文件。

例如

<Target Name="CopyAppConfig" AfterTargets="ExcelDnaBuild">
<Copy SourceFiles="$(TargetPath).config" DestinationFiles="$(TargetDir)MyAddIn-AddIn.xll.config" />
<Copy SourceFiles="$(TargetPath).config" DestinationFiles="$(TargetDir)MyAddIn-AddIn-packed.xll.config" />
<Copy SourceFiles="$(TargetPath).config" DestinationFiles="$(TargetDir)MyAddIn-AddIn64.xll.config" />
<Copy SourceFiles="$(TargetPath).config" DestinationFiles="$(TargetDir)MyAddIn-AddIn64-packed.xll.config" />
</Target>

您可以在我们的 GitHub 存储库中阅读有关此内容的更多信息:

  • 对 App.config 的硬编码引用会阻止在生成中使用配置转换。 #282
  • 自动生成绑定重定向无法正常工作 #241

最新更新