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

Excel DNA - Best Way to Use Config Transforms

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

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

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

我有的东西Tried/Researched:

  1. app.config 重命名为 ProjectX-AddIn64-packed.xll.config
  2. 使用 Visual Studio 构建事件
  3. 编辑 ExcelDna.Build.props 以尝试覆盖默认 build/packaging 流程
在撰写本文时,

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

您可以选择多种不同的方式来执行此文件替换...例如,您可以 运行 post-build 事件中的脚本,或者添加一个新的 MSBuild在复制文件的 ExcelDnaBuild 任务之后 运行s 定位到您的 .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 存储库中阅读更多相关信息: